黑马程序员技术交流社区
标题:
成员变量与局部变量的问题
[打印本页]
作者:
罗勇
时间:
2016-5-15 22:59
标题:
成员变量与局部变量的问题
本帖最后由 罗勇 于 2016-5-15 23:01 编辑
成员变量有默认值,局部变量不会自动赋值——这个我能理解
成员变量被final修饰且没有static的必须要显示赋值——这个不理解,什么叫显示赋值?为什么要显示赋值
public class Variable {
void test () {
int i;
int j =8;
if(j==i){//报错,局部变量不自动赋值,所以i没有值无法做判断。
System.out.println("相等");
}else{
System.out.println("不相等");
}
}
public static void main(String[] args) {
Variable v =new Variable();
v.test();//编译不通过。
}
}
复制代码
public class Variable {
int i;
void test () {
int j =8;
if(j==i){
System.out.println("相等");
}else{
System.out.println("不相等");
}
}
public static void main(String[] args) {
Variable v =new Variable();
v.test();//编译通过。成员变量有默认初始化值。
}
}
复制代码
QQ截图20160515225806.png
(14.35 KB, 下载次数: 5)
下载附件
2016-5-15 22:58 上传
作者:
lovelife
时间:
2016-5-16 18:27
这个问题 我也犯过,我当时就觉得int i;就可以了 因为这个整数类型他会自动被系统默认复制为0的
然后每次用都会出错.
我说一下我的想法,仅供参考:
局部变量在站内存中, 他没有地址值,系统找不到他的地址值是不会给他赋值的
成员变量在类中,在堆内存中,它是有地址值的,系统会根据他的地址值来找到他的存储区域,会自动给他赋值为0;
不知道我的想法对不对.嘿嘿..
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2