首页 新闻 会员 周边 捐助

成员变量与局部变量相同

0
悬赏园豆:5 [已解决问题] 解决于 2018-07-01 09:54

package com.donglijiedian;

class A {
int a =3;
public void test(){
a=4;
System.out.println(this.a);

};


}
class B{
public static void main(String[] args) {
A a =new A();
System.out.println(a.a);
a.test();
}
}

a.a为什么是3不是4

fangpengcheng_方鹏程的主页 fangpengcheng_方鹏程 | 菜鸟二级 | 园豆:206
提问于:2018-05-07 20:54
< >
分享
最佳答案
2

this.a 调用的是类中的变量,而a=4 是方法中的赋值,最后的 System.out.println(a.a);  相当于  a调用 System.out.println(this.a); this.a  当前类的int a =3; 的a. 

收获园豆:1
码海一农 | 菜鸟二级 |园豆:203 | 2018-05-08 09:46
其他回答(5)
0

因为是System.out.println(this.a)  不是System.out.println(a)

a.a当然是3因为你还没调用a.test()

收获园豆:1
吴瑞祥 | 园豆:29449 (高人七级) | 2018-05-07 23:07
0

上楼的是正解

凡人修仙迹 | 园豆:369 (菜鸟二级) | 2018-05-08 10:19
0

你把这两句代码这样写,就应该是4了吧

a.test();

System.out.println(a.a);

收获园豆:1
让我发会呆 | 园豆:2929 (老鸟四级) | 2018-05-08 10:21
0

你用类的对象a去调用类A里的变量a,得到的结果就是在类里定义的那个结果3,你在方法里给了个4,那是局部的,而且你都没调用test()方法,局部里的所有东西都不产生作用

收获园豆:1
西红柿里没有番茄 | 园豆:645 (小虾三级) | 2018-05-11 10:09
0

输出a.a之前test方法没执行

小光 | 园豆:1766 (小虾三级) | 2018-05-11 14:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册