JAVA 静态属性、方法、代码块 day8
2017-07-18 16:32
239 查看
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;
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;
相关文章推荐
- java静态代码块/静态属性、构造块、构造方法执行、main方法、普通代码块的顺序
- java 静态属性 静态代码块 静态方法声明 构造块 构造函数 动态属性 执行顺序
- 关于java中子类,父类中,静态代码块: staic{},动态代码块:{},构造方法,类属性,对象属性等执行顺序做个总结:
- Java static属性和静态代码块和构造方法等的执行顺序探讨
- java静态代码块/静态属性、构造块、构造方法执行、main方法、普通代码块的顺序
- Java的静态方法、静态属性、静态代码块
- java静态代码块和构造方法执行顺序
- java静态代码块、初始化块和构造方法的执行顺序解析
- 从JVM内存管理的角度谈谈静态方法和静态属性 和 java对象引用与JVM自动内存管理
- Java静态代码块和静态方法的区别/类加载顺序
- 【转】java静态代码块和构造方法执行顺序
- java中静态块,静态属性,方法的加载顺序(网友反映有问题,请仔细验证,不想误人子弟,有空再改改)
- java中静态代码块 静态方法
- java中静态的代码块,静态变量,静态方法
- JAVA静态代码块执行过程 以及和构造方法的区别
- java静态方法、非静态代码块{}、静态代码块static{}
- 从JVM内存管理的角度谈谈静态方法和静态属性 和 java对象引用与JVM自动内存管理
- myeclipse中调试调用带有静态代码块的类时出现java.lang.NoClassDefFoundError的处理方法
- java静态代码块和构造方法执行顺序
- java继承 父类子类方法调用问题 属性和静态方法是没有多态的