我正在尝试使用Java引用,我遇到了一个有趣的情况。 以下代码为我提供了不可预测的输出。我试图在函数中修改数组,字符串和整数。
public static void main(String[] args){
int[] arr = {1,2,3,4,5};
Integer b = 6;
String s = "ABC";
fun(arr, b,s);
for(int i : arr)
System.out.print(i + " ");
System.out.println();
System.out.println("b="+b);
System.out.println("s="+s);
}
public static void fun(int[] a, Integer b, String s){
b = b*10;
for(int i =0; i<a.length; i++)
{
a[i] = a[i]+10;
}
s=s+"PIY";
}
现在这给出了以下输出:
11 12 13 14 15
b=6
s=ABC
我不明白为什么数组会被更改但字符串和整数在函数内部没有改变。
答案 0 :(得分:3)
Array是一个Object,Integer
和String
在Java中是不可变的。您不能通过引用更改不可变对象。您必须重新插入/重新分配才能查看更改。因此存在差异。
如果一般对象不是不可变的,那么你的逻辑适用并纠正