字符串:Java中的引用变量

时间:2016-08-11 15:09:09

标签: java

是的,这是以前讨论过的基本混淆点,但是有很多错综复杂的信息,我希望有人可以在这里查明我的确切误解。

public class Test {
  public static void change(int i) {
    i = 2;
  }
  public static void change(int[] i) {
    i[0] = 6;
  }
  public static void change(String i) {
    i = "Bye";
  }
  public static void main(String[] args) {
    int a = 1;
    int[] b = {3,4,5};
    String c = "Hello";
    change(a);
    change(b);
    change(c);
    System.out.println(a);    // 1 - value unchanged
    System.out.println(b[0]); // 6 - value changed
    System.out.println(c);    // Hello - value unchanged
  }
}
  1. 变量a 实际上包含值1.当我们将其传递给change()方法时,会创建一个新变量,包含值1.因此,当我们更改i时,a不受影响。这很有道理。
  2. 变量c包含引用到内存中的数组对象。当我们将它传递给change()方法时,会创建一个包含相同引用的新变量。因此,它们都代表相同的对象。因此,当我们更改i[0]时,c[0]也会发生变化。这也是有道理的。
  3. 我遇到麻烦的是,如果字符串只是Java中的对象引用,为什么它们在这方面表现得像原语?

0 个答案:

没有答案