未完 Variables 变量 (Instance/Class/Local)

[b]Local/Instance/Class Variables:
[url]http://www.leepoint.net/notes-java/data/variables/45local-inst-class.html[/url][/b]
严格意义上,Java有三种变量类型:
[b]实例变量[/b] Instance variables (non-static fields):作为类成员的非静态变量。
[b]类变量[/b] Class variables (static fields):作为类成员的静态变量。
[b]局部变量[/b] Local variables:方法内部定义的变量。
其中前两种(Instance variables & Class variables),习惯上称其为[b]成员变量[/b]([b]英献称Fields,叫字段是不是更合适..[/b])


变量的初始化及默认值:
[b][url]http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html[/url][/b]
[b]成员变量[/b]:声明时可以不对其进行初始化。如果不做初始化,编译器使用默认的值对其初始化:
[img]http://dl.iteye.com/upload/attachment/0013/0775/d8d68fe5-1a22-321e-8467-ca1871776187.png[/img]
[b]局部变量[/b]:声明时可以不对其进行初始化,但编译器不会为一个未初始化的局部变量指定默认值。所以在第一次使用前必须显式为其指定初值。对未初始化的局部变量的访问操作是会出现编译错误的。
方法内的匿名代码块(Anonymous code blocks)是会限制变量的scope的,如下面的代码:
[url]http://stackoverflow.com/questions/1563030/anonymous-code-blocks-in-java[/url]

public void foo() {
{
int i = 10;
}
System.out.println(i); // Won't compile; 局部变量i在匿名代码块之外是不可见的
}



变量的存储(参考:[url]http://wuaner.iteye.com/admin/blogs/1669121[/url]): [color=red]待续。。。[/color]
[b][url]http://docs.oracle.com/javase/tutorial/java/nutsandbolts/variablesummary.html[/url][/b]
实例变量:存于堆中???类的每个对象有不同的实例变量存储空间。
类变量:存于静态。。。区?。只有一份,该类的所有对象共享这仅此一份的类变量。
局部变量:存于栈中?多线程访问方法情况下,局部变量是怎么存的那?每个线程有自己线程栈?


变量的生命周期:[color=red]待续。。。[/color]
实例变量:始于对象被创建时,止于对象被垃圾回收器回收?
类变量:始于类加载。。。止于jvm stop?
局部变量:方法在执行的时候才会在栈stack中为其分配空间;当方法调用完成后,在栈中为这个方法的局部变量分配的内存空间被全部回收。


Tips:
局部变量只能使用final作为其修饰符(modifier),不能使用访问修饰符(public protected default(friendly、package-private) private )、static作为其mofdifier。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值