JavaSE_34_成员变量

今天接着说Java成员变量。

 

前面说到了,根据变量的作用范围,Java中将变量分为了局部变量和成员变量。如果根据相对意义来说,局部变量相对于全局变量来说更容易理解,事实上,在Java中,成员变量也叫做全局变量,是从C++承袭而来的。

 

这种不在方法体也不在程序块中的变量,称为“成员变量”,它也称为“全局变量”。只要对象被引用,成员变量就将存在。

 

简单来理解,可以把类中的声明的属性,看做是类中的成员变量。如果从类的组成部分来看,成员变量就是类的属性;如果从变量的作用范围来看,类的属性就是成员变量。两者在实际应用上,是完全等价的。

 

看下面这个例子:

 

public class TestGlobalVar {
 public static void main(String args[]) {
  // 实例化GlobalVar后就可以访问具有访问权限的成员变量
  GlobalVar gv = new GlobalVar();
  System.out.println(gv.k);
 }
}

class GlobalVar {
 double k = 12.0;// 成员变量

 public double methodB() {
  return k;
 }
}


在这个例子中,定义了一个类GlobalVar,在这个类里面定义了一个double类型的成员变量: k,在用于测试的类TestGlobalVar中,首先实例化这个类,然后再通过“实例名.变量名”的方式来访问它。

 

这个时候,k就是类GlobalVar的成员变量,也可以看做是类GlobalVar的属性了。

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值