35.成员变量初始化

这里说说Java变量的的初始化。

 

这里先说说初始化操作:

 

在初始化变量时,应该把变量名写在左边,随后是赋值操作符“=”,然后再在右边加上一个恰当的Java表达式或值。


变量的初始化有两种方法:一种是在声明变量的时候就同时给它赋一个值:
 int i  = 4;


还有一种情况是,先声明变量,然后再在适当的时机给它赋值:
 int k;
 … …
 k = 10;

  

前面说过了,Java中声明变量后,在使用变量之前,必须为变量进行初始化,即赋值操作。不能使用一个没有初始化过的、没有值的变量。

 

但我们一般只强调所有的局部变量在使用之前,都必须初始化(也就是说,必须要有值)。这里需要解释一下,成员变量在使用之前也是需要进行初始化的,不例外,但是Java对成员变量特殊的处理化方式,使得我们只需要关注局部变量的初始化工作,防止发生编译错误。

 


好了,我们现在就来看看,Java如何进行成员变量的初始化操作,导致Java局部变量与成员变量的初始化要求产生了如此不同。

 

其实也很好解释,就是如果你不给成员变量进行初始化操作的话,Java编译器就默默的为你做了这份工作了。。。。。。就和默认构造器是一个道理的。但是如果有必要的话,最好还是自己亲自动手为特定的成员变量进行初始化操作。毕竟它没有那么智能,只是机械进行默认的初始化操作——成员变量的默认初始化。

 

现在看看成员变量默认初始化的值:

 

类型 默认值 类型 默认值
byte 0 、short 0 、 int 0 、long 0L 、 float 0.0f 、double 0.0d  、char ‘\u0000’ 、boolean false  、object reference null  

 

看下面这个例子:

 

public class GlobalVar {
 int j;

 public void b() {
  System.out.println(j + 10);
 }

 public static void main(String[] agrs) {
  GlobalVar t = new GlobalVar();
  t.b();
 }
}

 

在这个程序中,定义了一个成员的int类型的变量j,它没有被显式的初始化。在方法b()中,直接使用这个变量和一个整型数据相加,并将结果打印到控制台。


编译并执行这个程序将在控制台打印出一个数字10。这是因为虽然没有显式的初始化变量j,但是因为它是成员变量,系统自动给它赋了一个初值0,这样,打印出来的的结果是0+10等于10。


虽然成员变量可以不用显式初始化即可使用,但是,系统给不同数据类型的成员变量初始化时,它的初始化的值是不同的,比如,int类型的初始化值是0,boolean类型的初始化值是false。

 

下面列出了各种数据类型成员变量的默认初值:
int:0
byte: 0
double: 0.0
float:0.0
char:
long:0
short:0
boolean:false
Object:null

 

最后在强调一次,Java只针对成员变量进行默认初始化操作。

你可能感兴趣的:(成员变量)