对于类的成员变量
不管程序有没有显示的初始化,Java 虚拟机都会先自动给它初始化为默认值。
1、整数类型(byte、short、int、long)的基本类型变量的默认值为0。
2、单精度浮点型(float)的基本类型变量的默认值为0.0f。
3、双精度浮点型(double)的基本类型变量的默认值为0.0d。
4、字符型(char)的基本类型变量的默认为 “/u0000”。
5、布尔性的基本类型变量的默认值为 false。
6、引用类型的变量是默认值为 null。
7、数组引用类型的变量的默认值为 null。当数组变量的实例后,如果没有没有显示的为每个元素赋值,Java 就会把该数组的所有元素初始化为其相应类型的默认值。
数组例子:
-
int[] arr; //声明,没有初始化默认值是null
-
int[] arr=new int[5]; //初始化为默认值,int型为0
public class InitTest {
byte uninit_byte;
char uninit_char;
short uninit_short;
int uninit_int;
long uninit_long;
float uninit_float;
double uninit_double;
int[] arr = new int[5];
Math m ;
public static void main(String[] args){
InitTest initTest = new InitTest();
System.out.println("uninit_byte: "+initTest.uninit_byte);
System.out.println("uninit_char: "+initTest.uninit_char);
System.out.println("uinit_short: "+initTest.uninit_short);
System.out.println("uninit_int: "+initTest.uninit_int);
System.out.println("uninit_long: "+initTest.uninit_long);
System.out.println("uninit_float: "+initTest.uninit_float);
System.out.println("uninit_double: "+initTest.uninit_double);
System.out.println("uninit_reference: "+initTest.m);
for(int i=0;i<5;i++){
System.out.print("\t"+initTest.arr[i]);
}
System.out.println();
}
public void uninit(){
}
}
局部变量初始化
局部变量声明以后,Java 虚拟机不会自动的为它初始化为默认值。
因此对于局部变量,必须先经过显示的初始化,才能使用它。
如果编译器确认一个局部变量在使用之前可能没有被初始化,编译器将报错。