我知道java是按值传递的,就这样。但是,我仍然无法弄清楚这一点。
public static void changeTheName(String obj){ obj.toUpperCase(); }
这个方法不会影响原来的字符串对象,还算可以理解。因为字符串是不可变的,并且字符串文字的变化意味着引用变量现在将引用新对象,而旧对象将留给垃圾收集器。但是当我传递字符串数组时,我可以更改字符串文字,这意味着我可以更改引用。为什么数组会发生这种情况,因为如果我们这样做 obj[]= new String[]{} 它不会影响原始数组,原始数组仍然引用旧数组,这类似于直接更改字符串文字
public static void ChangeTheName(String obj[]){ for(int i=0;i<obj.length();i++) obj[i]=obj[i].toUpperCase; }
编辑: 我正在寻找的答案是 obj 和 obj[0] 的引用是唯一的,这就是为什么第二种方法能够更改数组的整个内容。因为我来自 C 背景,所以我认为 obj 和 obj[0] 具有相同的引用,但 java 中的情况肯定不是这样。
米琪卡哇伊
料青山看我应如是
波斯汪
相关分类