ps是开博记录的day1 其实曾经学了一小段时间java根底

static关键字的应用

static 动态的
static 能够用来润饰:属性、办法、代码块、外部类
应用static 润饰属性:动态变量/类变量。
3.1 属性,按是否应用static润饰,又分为动态属性 和非动态属性(实例变量)

实例变量:创立类的多个对象,每个对象都独立领有一套类中的非动态属性。当批改其中一个对象中的非动态属性时,不会导致其余对象中同样的属性值的批改。

动态变量:创立类的多个对象,每一个对象都共享同一个动态变量。当通过某一个对象批改动态变量时,会导致其余对象调用此动态变量时,是被批改过得。

3.2 static 润饰属性的其余阐明:

①动态变量随着类的加载而加载。能够通过“类.动态变量”的形式进行调用②动态变量的加载要早于对象的创立③因为类只会加载一次,则动态变量在内存中也只会存在一份。存在在办法区的动态域中。④             类变量        实例变量    类        yes                no    对象       yes               yes

类变量 vs 实例变量的内存解析

4.应用static润饰的办法:静态方法

① 随着类的加载而加载,能够通过 "类.静态方法" 的形式进行调用②             静态方法        非静态方法    类        yes                no    对象       yes               yes③ 静态方法中,只能调用动态的办法或属性    非静态方法中,既能够调用动态的也能够调用    非动态的办法和属性
  1. static 留神点:

    在动态的办法内,不能应用this、super关键字

  1. 开发中如何确定一个属性是否要申明为static?

属性是能够被多个对象共享的,不随着对象的不同而不同的
开发中如何确定一个办法是否要申明为static?
操作动态属性的办法,通常设置为static的
工具类中的办法,习惯上申明为static的
eg: Math、Arrays、Collections

单例设计模式

要解决的问题

采取肯定的办法,保障在整个软件系统中,对某个类只能存在一个对象实例。

具体代码的实现:

饿汉式:

//1.私化类的结构器class Bank(){private Bank(){}//2.外部创立类的对象//4.要求此对象也必须申明为动态的private static Bank instance = new Bank();//3.提供公共的动态的办法,返回类的对象public static Bank getInstance(){        return instance;}}

懒汉式

class Order{//1.私化类的结构器private Order(){//2.申明以后类的对象,不初始化//4.此对象也必须申明为动态的//3.申明public static的返回以后类对象的办法public static Order getInstance(){    if(instance == null){            instance = new Order();    }    return instance;}

两种形式的比照

饿汉式:

害处:对象加载工夫过长

益处:饿汉式是线程平安的

懒汉式:

益处:提早对象的创立

目前写法的害处:线程不平安 --->到多线程内容时再批改

main()办法的应用阐明

main() 办法作为程序的入口
main() 办法加上static也是一个一般的静态方法
main() 办法能够作为咱们与控制台交互的形式(之前,用Scanner)

代码块

代码块的作用

初始化类、对象的信息

分类

代码块如果应用修饰符,只能用static

动态代码块 vs 非动态代码块

实例化子类对象时,波及到子父类中动态代码块,非动态代码块,结构器的加载程序

由父及子,动态后行。

父类动态代码块 → 子类动态代码块 → 父类非动态代码块、结构器的执行 → 子类非动态代码块、结构器的执行

对属性可赋值的地位:

默认初始化
显示初始化
结构器中初始化
有了对象后,通过“对象.属性”或“对象.办法”的形式进行赋值
在代码块中赋值

执行的先后顺序 1 →2/5 → 3 → 4

final

能够用来润饰:

类、办法、变量(属性、局部变量)

具体的

final用来润饰一个类:此类不能被其余类所继承

        比方:String System StringBuffer

final用来润饰办法:此办法不能够被重写

        比方:Object类中的getClass();

final用来润饰变量:此时“变量”就称为是一个常量

        ①润饰属性        ②润饰局部变量            尤其是应用final润饰形参时,表明此形参            是一个常量。当调用此办法时,给常量形            参赋一个实参,一旦赋值,就只能在办法体内应用此形参,但不能从新赋值。

static final 用来润饰属性:全局常量

抽象类 abstract关键字

用来润饰 类和办法

abstract用来润饰的类 称为 抽象类

此类不能实例化
抽象类中肯定有结构器,便于子类实例化时调用(波及:子类对象实例化的全过程)
开发中,都会提供抽象类的子类,让子类对象实例化,实现相干的操作

——> 形象的应用前提 :继承性

abstract润饰办法:形象办法

形象办法只有办法的申明,没有办法体
蕴含形象办法的类,肯定是一个抽象类。反之,抽象类中能够没有形象办法
若子类重写了父类中所有的形象办法后,此子类方可实例化

 若子类没有重写父类中所有的形象办法,则此子类也是一个抽象类,须要用abstract润饰

留神点

abstract不能用来润饰属性、结构器等构造
也不能润饰private办法,static办法,final的办法,final的类

模板办法设计模式

在软件开发中实现一个算法时,整体步骤很固定、通用,这些步骤曾经在父类中写好了。然而某些局部易变,易变局部能够形象进去,供不同的子类实现。这就是一种模板模式。

接口

概述

因为java不反对多重继承,有了接口,就能够失去多重继承的成果

接口应用interface来定义

Java中,接口和类是两个并列的构造

一个类能够实现多个接口

如何定义接口:定义接口中的成员

JDK7以前,只能定义全局常量和形象办法

全局常量:public static final的 但书写时,能够省略

形象办法:public abstract的

JDK8:除了定义全局常量和形象办法外,还能够定义静态方法、默认办法

接口中不能定义结构器的,意味着接口不能实例化

implements

Java开发中,接口通过让类去实现(implements)的形式来应用

如果实现类笼罩了接口中所有的形象办法,则此实现类就能够实例化

如果实现类没笼罩接口中所有的形象办法,则此实现类仍未一个抽象类

Java能够实现多个接口

补救了单继承性的局限性

格局:class AA extends BB implements CC,DD,EE

**接口与接口之间能够继承,而且能够多继承

接口的具体应用,体现多态性

接口,实际上能够看做是一种标准

**领会面向接口编程

外部类

Java容许将一个类A申明在另一个类B中,则类A就是外部类,B称为外部类