Java static 基础问题求教

hoew 2016-09-05 11:50:32

A a;
static A b;
void af() {
a = new A();
b = a;
System.out.println(a == b);

a = null;
System.out.println(b == null);
}
public static void main(String[] args) {
new SimpleTest().af();
}

static class A {
String asd = ";";
}


这段代码的执行结果为什么是true,false?
我理解的是a和b虽然一个是静态一个非静态,但是他们所引用的“地址”都一样啊(从第一个true可以看出),而为什么把一个赋成空之后,另外一个却没有变呢?
...全文
97 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hoew 2016-09-05
  • 打赏
  • 举报
回复
引用 1 楼 zhongzhan2011 的回复:
a=null是把a的指向null,并没有改变A 对象,b变量也没有改变指向,还是原来的A对象
恍然大悟,犯了低级错误,谢谢啊。
a4boy 2016-09-05
  • 打赏
  • 举报
回复
你b=a 就把a的地址给了b 所以a的地址和b相等 但是你把a=null 后b还是有地址 所以b!=null
zhongzhan2011 2016-09-05
  • 打赏
  • 举报
回复
a=null是把a的指向null,并没有改变A 对象,b变量也没有改变指向,还是原来的A对象

62,614

社区成员

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

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