2

我试图使用 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

我不明白为什么数组会改变,但字符串和整数在函数内部没有改变。

4

1 回答 1

3

数组是一个对象,Integer并且String在 Java 中是不可变的。您不能通过引用更改不可变对象。您必须重新插入/重新分配才能看到更改。因此差异。

对于不可变的一般对象,您的逻辑适用并更正

于 2017-08-24T05:11:32.710 回答