public class Agn {
int y=33;
public static void main(String[] args){
Agn a = new Agn();
a.disp();
System.out.println(a.y);
}
void disp (){
Agn a = new Agn();
y=44;
System.out.println(a.y);
System.out.println(y);
}
}
在上面的代码中,System.out.println(a.y)
打印 44 ,System.out.println(y)
打印 33 。
在main方法中使用时,相同的语句System.out.println(a.y)
会打印 44 。为什么会有区别?不应该 44 总是吗?
答案 0 :(得分:0)
a
中的对象disp()
是一个不同的对象(不要被同一个别名a
伪装,而且我不知道你为什么要这样做 - @ ElliottFrisch的评论很好地解释了它,因此你得到了不同的价值观。修改您的disp()
,以便类似:
class Agn
{
int y = 33;
public static void main (String[] args) throws java.lang.Exception
{
// your code goes here
Agn a = new Agn();
System.out.println(a.y);
a.disp();
System.out.println(a.y);
}
void disp (){
y=44;
//System.out.println(a.y);
System.out.println(y);
}
}
<强> 33 44 44 强>
正如你所期待的那样
答案 1 :(得分:0)
public class Agn {
int y=33;
public static void main(String[] args){
Agn a = new Agn();//create local object in main method effect on instance variable
a.disp();
System.out.println(a.y);
}
void disp (){
Agn a = new Agn();//create local object not effect on instance variable
y=44; //you can mark y variable as static
//then you get output same
System.out.println(a.y);
System.out.println(y);
Agn a2 = new Agn(); // same create local object not effect on instance variable
System.out.println(a2.y);//same o/p
}
}
答案 2 :(得分:0)
下面:
Agn a = new Agn();
y=44;
后者与:this.y = 44
换句话说:代码中有两个 Agn
个对象。 main()
方法创建的方法 - 以及disp()
方法创建的另一个方法。两个对象,即两个不同的y
字段 - 可以包含不同的内容。
这就是全部。