耶尔_ 2023-10-19 17:44 采纳率: 61.5%
浏览 6

java HashMap value中的String是值传递还是引用传递?

见代码。为什么String的值没有被改变?


public class test {
    public static void main(String[] args) {
        HashMap map = new HashMap();
        String str = "a";
        map.put("1",str);
        str = "b";
        System.out.println(map.get("1")); //结果是"a" 也就是说变量str并没有指向"b"

    }

}
  • 写回答

2条回答 默认 最新

  • 小尘要自信 Java新星创作者 2023-10-19 18:13
    关注

    因为在HashMap中存储的是对原始字符串对象"a"的引用,而不是对str变量的引用。当你修改str的值为"b"时,并不会影响到HashMap中存储的引用。当你使用map.put方法将键值对添加到map中时,实际上是将该键和对应引用的副本放入map中。当你修改str的值时,这个修改不会影响到已经存储在map中的引用。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月19日