1、静态方法(static修饰)和非静态方法
1.1、静态方法:通过类名直接调用,即可不需要创建对象。(类名.方法名)
1.2、非静态方法:通过对象调用,即必须创建对象。(对象名.方法名)
1.3、何时使用静态方法:当方法中无需访问成员变量时,该方法就可以设计为静态方法
2、static 修饰成员变量
在一个Java类中,可以使用 static 关键字来修饰成员变量,该变量被称作静态变量. 静态变量被所有实例共享,可以使用 "类名.变量名" 的形式来赋值.
3、静态属性和非静态属性:
3.1、静态属性:内存中只有一份,能够被该类的所有实例对象所共享。
eg:在主函数中为静态成员变量schoolName赋值:Student.schoolName="某某大学";
在Student类中定义一个静态成员变量:public static String schoolName;
3.2、对象在堆区开辟空间时,每个对象都会为自己开辟非静态属性空间
4、
静态代码块作用:
· 4.1. 使用static关键字修饰的代码块就称为静态代码块.当类被加载时,静态代码块会执行,由于类只加载一次,因此静态代码块只执行一次.在程序中,通常会使用静态代码块来对类的静态成员变量进行初始化.
· 4.2. 做一些程序启动之前的准备工作,并且该工作只需要在程序启动时仅执行一次即可.
静态代码块特点:
自动执行,只在类加载时仅执行一次静态代码块的执行顺序 :
当类加载的时候:
1.Java虚拟机会先加载类中的所有静态 `变量`.
2.当把所有的静态成员变量加载完成之后,开始给类中的所有 `静态` 变量进行 `默认初始化`.
3.当类中的所有静态变量默认初始化完之后,接着开始给所有静态变量进行 `显示的赋值` 操作。
4.只有类中所有的静态成员变量显示赋值结束之后,静态代码块才会运行。
5、
构造代码块特点:
无论外部使用什么构造方法创建的对象,构造代码会都会被调用,创建了多少个对象,构造代码块就会被调用多少次.
作用 :
统计程序中创建该类对象的个数.
抽取构造代码块中相同的代码.
6、代码执行顺序:静态代码块》构造代码块》代码块》构造方法
7、单例设计模式
7.1、单例模式是Java中的一种设计模式,它是指在设计一个类时,需要保证在整个程序运行期间针对该类只存在一个实例对象.作用:限制对象的创建.
7.2、特点:
1. 类中的构造方法使用 private 关键字修饰,声明为私有.这样就不能在类的外部使用 new 关键字来创建实例对象了.
2. 在类的内部创建一个该类的实例对象,并使用静态变量 INSTANCE 引用该对象,由于变量应该禁止外界直接访问,因此使用 private 修饰.声明为私有成员.
(或者在本类中创建一个对象,使用public修饰,并静态该变量,并需要用final关键字最INSTANCE变量进行最终化,表示该变量不能够被再次修改)
3. 为了让类的外部能够获取类的实例对象,需要定义个静态方法 getInstance (); 用于返回该类实例 INSTANCE, 由于方法是静态的.外界可以通过 "类名.方法名();"的方法来访问. -> Single.getInstance();
7.3、懒汉式和饿汉式单例设计模式:
饿汉式:类加载的时候,对象就被创建 eg:private static Single INSTANCE=new Single();
懒汉式:在类加载的时候,不会在堆区中创建单例对象. eg: private static Single INSTANCE=null;