一、定义基本类型变量时
(1)定义局部基本类型变量
定义局部变量时,在使用该变量以前必须对其进行赋值初始化,不然编译器会报错,建议声明变量和赋值同时进行。
(2)定义类全局基本类型变量
不管是静态全局变量仍是动态全局变量,在建立对象new object()之时,系统会自动对全局基本类型变量进行初始化,除了定义全局变量之时就对其初始化以外。
二、定义非基本类型变量时,如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();初始化值指向建立改对象的内存区域。.net
转自https://blog.csdn.net/wiwayahu/article/details/53100433指针
咱们 int a;对象
在咱们的代码一个部分中咱们给他赋值 a =10;
而另一个地方又给这个a负责,但这个a的值是从数据库拿出来的,这中间有不少状况,而拿到的是空值,这个时候是否是就有问题呢,会报空指针。
因此必需要初始化一个,通常都是int a=0;
同理,若是你你要给a赋值都是固定的,或者你能够肯定这里值都能拿到,那么你声明的时候确定用int a;blog
转自http://ask.csdn.net/questions/225165内存