py_xin 2010-08-25 16:56 采纳率: 0%
浏览 244
已采纳

关于Map类型变量作用范围的疑问

请先看下面的代码,非常简单:

public static void main(String[] args) {

int i = 1;
plus(i);
System.out.println(i);  [b]// 打印 1[/b] 

     Map map = new HashMap();
map.put("orange", "ORANGE");
addOneEntry(map);
System.out.println(map);  [b]// 打印 {orange=ORANGE, apple=APPLE}[/b]}

private static void plus(int i){
i += 1;
}

private static void addOneEntry(Map map){
map.put("apple", "APPLE");
}

我的问题就在这里,我的map变量定义在main方法内,按理说它应该是局部变量,但为什么它还会受addOneEntry()方法的影响,出了这个方法后还会增加多一个entry?就好像它是静态变量一样...
我试过int,String,数组和自定义类型的变量,他们的作用范围都只限于声明它们的方法内,为什么Map(List也一样)类型的变量会这样?
谢谢各位大虾!

  • 写回答

2条回答 默认 最新

  • 拽拽的初行者 2010-08-25 17:11
    关注

    [color=blue][b]
    传递的是引用值,通过引用值修改的是同一块内存区域。

    好好理解下吧,参考下我的博客:《图解Java中的值传递与引用传递(更新版)》[/b][/color]

    [url]http://xiaolongfeixiang.iteye.com/blog/652235[/url]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?