对于面向对象问题有点懵,创建同一个类的两个对象,并声明类中的变量,输出值不同,修改变量值会改变

WhiteFoever 2019-03-19 03:16:01
public class num{int i;};
public class number{
public static void main(String[] args) {
num n1=new num();
num n2=new num();
n1.i=9;
n2.i=47;
System.out.println(n1.i+","+n2.i);
//输出为 9,47
n1=n2;
System.out.println(n1.i+","+n2.i);
//输出为47,47
n1.i=27;
System.out.println(n1.i+","+n2.i);
//输出为27,27
}
}

两个对象所声明的变量为什么会这样变化????
...全文
73 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
angrydoger 2019-03-20
  • 打赏
  • 举报
回复
你不明白的地方大概是这个位置吧n1=n2,相当于把n2栈中的地址赋给了n1,他们共用一个地址指向同一个对象,然后你改变了n1的值为27,所以n2也跟着改变啦,建议多理解下栈堆关系图。
cafebabei 2019-03-20
  • 打赏
  • 举报
回复
n1=n2之后n1和n2指向同一个对象啦 n1.i和n2.i始终是同一个对象的属性
stacksoverflow 2019-03-19
  • 打赏
  • 举报
回复
num n1=new num(); num n2=new num(); 假设n1指向地址&123 假设n2指向地址&456 n1.i=9; //&123地址的i为9 n2.i=47; //&456地址的i为47 //输出为 9,47 n1=n2; n1指向地址&456 n2指向地址&456 //输出为47,47 n1.i=27; 此时n1指向地址&456,所以修改地址&456的i为27 //输出为27,27

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧