JAVA-类的初始化、变量的初始化

By timebusker on May 10, 2015

知识点

  • Java常量, final修饰,值被设定后不能再被修改
  • 静态变量, static修饰,顾名思义,无须创建对象,便可在内存中申请一个存储空间进行存储,存储在方法区
  • 成员变量, 也称实例变量,它随着当前对象的建立而建立,随着对象的销毁而销毁,存在于对象所在的堆内存
  • 构造器,创建class对象时执行
  • 静态初始化块,执行优先级高于非静态的初始化块,它会在对象装载到jvm的时候执行一次,执行完成便销毁,只能初始化static修饰的变量
  • 非静态初始化块,执行的时候如果有静态初始化块,先执行静态初始化块再执行非静态初始化块,在每个对象生成时都会被执行一次,它可以初始化类的实例变量。但它会在构造函数执行之前被执行

对象的初始化流程

  • 初始化父类的静态成员
  • 初始化父类的静态代码块
  • 初始化子类的静态成员
  • 初始化子类的静态代码块
  • 初始化父类的非静态成员
  • 初始化父类的非静态代码块
  • 初始化父类的构造方法
  • 初始化子类的非静态成员
  • 初始化子类的非静态代码块
  • 初始化子类的构造方法

成员变量与局部变量

类中的变量不用初始化 方法中的局部变量必须初始化

对于类的成员变量。不管程序有没有显示的初始化,Java虚拟机都会先自动给它初始化为默认值。

规则为:

  • 整数类型(byte、short、int、long)的基本类型变量的默认值为0。
  • 单精度浮点型(float)的基本类型变量的默认值为0.0f。
  • 双精度浮点型(double)的基本类型变量的默认值为0.0d。
  • 字符型(char)的基本类型变量的默认为 “/u0000”。
  • 布尔性的基本类型变量的默认值为 false。
  • 引用类型的变量是默认值为 null。
  • 数组引用类型的变量的默认值为 null。关键数组变量的实例后,如果没有没有显示的为每个元素赋值,Java 就会把该数组的所有元素初始化为其相应类型的默认值。

Java八类基本数据类型可以默认赋值默认值(int、short、float、double、long、boolean、byte、char/封装类分别是:Integer、Short、Float、Double、Long、Boolean、Byte、Character)

String 类型不是基本数据类型,它实际上是final修饰,所以也不可以继承。

String 类型不是基本数据类型,判断字符串相等,只能使用equals()

  • 局部变量初始化 局部变量声明以后,Java 虚拟机不会自动的为它初始化为默认值。因此对于局部变量,必须先经过显示的初始化,才能使用它。

java关键字null

在Java中,null本身不是对象,也不是Objcet的实例,null值表示引用不指向任何对象,因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。

运行过程中系统发现使用了这样一个引用时·可以立即停止进一步的访问,不会给系统带来任何危险。