一段java代码求助,这个结果为什么是-1和10

哈哈焦糖 2018-03-21 09:09:42
package com.classTest;
public class SendMessage {
public static void main(String[] args) {
Myclass my,mc;
my=new Myclass(-1);
mc=my;
System.out.println(my.data);
mc.setData(10);
System.out.println(my.data);
}
}
class Myclass{
int data;
Myclass(int d){
data=d;
}
int getData(){
return data;
}
void setData(int d){
data=d;
}
}
...全文
287 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
byds520 2018-03-21
  • 打赏
  • 举报
回复
mc=my 是把 mc指向my所对应的地址空间,所以mc.setData 与调用my.setData没区别。 这个你可以查查,值传递和引用传递。 下面的和你写的会是一个效果 public static void main(String[] args) { Myclass my = new Myclass(-1); System.out.println(my.data); setData(my); System.out.println(my.data); } public static void setData(Myclass mc) {   mc.setData(10); }
程序员囧辉 2018-03-21
  • 打赏
  • 举报
回复
my = new Myclass(-1) 这行代码会调用下面的构造方法Myclass(int d) 所以data被赋值为 -1 ,所以第一次输出 -1。 mc = my; 理解这行代码,我们首先需要直到,my其实只是一个引用,而将mc = my,mc此时跟my指向同一个对象,所以 mc.setData(10); 这行代码会将mc 和 my共同指向的对象的data修改为10,所以最后输出10

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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