欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

35.成员变量初始化

程序员文章站 2022-04-29 12:57:50
...

这里说说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只针对成员变量进行默认初始化操作。