关于Java static 方法

素颜vv风之殇 2016-05-17 10:14:08
import java.util.Hashtable;

public class Test1 {

public static Hashtable<String, String> hash = new Hashtable<String, String>();


/**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
new Thread(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
Hashtable<String, String> tmpHash = null;
tmpHash = hash;
tmpHash.put("gg", "game over");
tmpHash.put("js", "java script");

}
}).start();

Thread.sleep(5000);
System.out.println(hash.size());
System.out.println(hash.get("js"));

}

}


给局部变量赋值 最后为什么静态的hash之也变了?求原理!
...全文
177 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
素颜vv风之殇 2016-05-26
  • 打赏
  • 举报
回复
引用 3 楼 qq_32326135 的回复:
在你这个测试类中 跟static没有直接关系
思维习惯,右边变量赋值给左边变量
鬼狐柒 2016-05-19
  • 打赏
  • 举报
回复
只因为这一句话,tmpHash = hash;,这个是java对象的问题,和静态没关系
Just_do_it. 2016-05-19
  • 打赏
  • 举报
回复
在你这个测试类中 跟static没有直接关系
Just_do_it. 2016-05-19
  • 打赏
  • 举报
回复
执行 tmpHash = hash 后 tmpHash 和 hash 两个引用的值是相同的; 任何一个引起的改变,都会影响到另一个.
OPPPPOP 2016-05-17
  • 打赏
  • 举报
回复

23,407

社区成员

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

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