1、定义基本类型变量时
(1)定义局部基本类型变量
定义局部变量时,在使用该变量之前必须对其进行赋值初始化,否则编译器会报错,建议声明变量和赋值同时进行。
(2)定义类全局基本类型变量
无论是静态全局变量还是动态全局变量,在创建对象new object()之时,系统会自动对全局基本类型变量进行初始化,除了定义全局变量之时就对其初始化之外。
2、定义非基本类型变量时,如String List 或其他自定义类
(1)局部变量时
同基本类型变量一样,使用前必须对其进行初始化,否则编译器会报错。
(2)全局变量
若只是声明变量,如String s, List l, object o,创建对象时,会将其赋值为null
若声明变量的同时并进行初始化,String s=new String();List l=new List();object o=new object();此时会指向一片对象内存区域,不再为null, 如String为空串,List为空list,object为系统初始化内容。
总结:局部变量使用前,必须进行初始化,否则编译器会报错。全局变量使用前若没有手动初始化,系统会自动对其进行初始化。 对于基本类型,系统会为其赋值(int型=0,short型=(short)0,byte=(byte)0,boolean型=false,long型=0L,char型=‘\u0000’或null,float型=0.0f,double型=0.0), 对于非基本数据类型会赋值为null(初始化了除外)
String s=new String();String类型初始化值为""空串
List l=new List();List类型初始化值为[]空list但不是nul。
(1)定义局部基本类型变量
定义局部变量时,在使用该变量之前必须对其进行赋值初始化,否则编译器会报错,建议声明变量和赋值同时进行。
(2)定义类全局基本类型变量
无论是静态全局变量还是动态全局变量,在创建对象new object()之时,系统会自动对全局基本类型变量进行初始化,除了定义全局变量之时就对其初始化之外。
2、定义非基本类型变量时,如String List 或其他自定义类
(1)局部变量时
同基本类型变量一样,使用前必须对其进行初始化,否则编译器会报错。
(2)全局变量
若只是声明变量,如String s, List l, object o,创建对象时,会将其赋值为null
若声明变量的同时并进行初始化,String s=new String();List l=new List();object o=new object();此时会指向一片对象内存区域,不再为null, 如String为空串,List为空list,object为系统初始化内容。
总结:局部变量使用前,必须进行初始化,否则编译器会报错。全局变量使用前若没有手动初始化,系统会自动对其进行初始化。 对于基本类型,系统会为其赋值(int型=0,short型=(short)0,byte=(byte)0,boolean型=false,long型=0L,char型=‘\u0000’或null,float型=0.0f,double型=0.0), 对于非基本数据类型会赋值为null(初始化了除外)
String s=new String();String类型初始化值为""空串
List l=new List();List类型初始化值为[]空list但不是nul。
其他自定义object o=new object();初始化值指向创建改对象的内存区域。
import java.util.ArrayList;
import java.util.List;
public class test
{
public static void main(String[] args)
{
MyTest mt=new MyTest();
System.out.println(mt);
}
}
class MyTest
{ int a;
long b; String c=new String(); char d; List list=new ArrayList(); MyTest1 mt1=new MyTest1(); public String toString() { return "MyTest[a="+a+",b="+b+",c="+c+",d="+d+",list="+list+",mt1="+mt1+",MyTest2.f="+MyTest2.f+"]"; } } class MyTest1 { int e; public String toString() { return "MyTest1[e="+e+"]"; } } class MyTest2 { static int f; }
输出结果为:MyTest[a=0,b=0,c=,d= ,list=[],mt1=MyTest1[e=0,],MyTest2.f=0]