字符串是不可变的,int也是不可变的。这段代码让我很困惑

时间:2013-12-07 11:47:01

标签: java string int mutability

在这段代码中,我们有一个用值初始化的int。现在我们将此引用引用到另一个变量并分配一个新值。但这应该反映在其他变量中。但事实并非如此。如何通过值传递此java引用。字符串是不可变的,但这是如何在整数

中发生的
public class Confusedwithintegerandstrings 
{

public static void main(String[] args) 
{

    int a=10;
    int c=a;
    System.out.println(c);
    a=20;
    System.out.println(a);
    System.out.println(c);

}

}

这是O / P

  

10

     

20

     

10

1 个答案:

答案 0 :(得分:3)

实际上你的标题和问题不匹配。

Java总是按值传递。这是原语的正确陈述。对象出现了混乱。

考虑这个例子(对象)

someObject = someOtherObject

此处,虽然将参考someOtherObject分配给someObject,但指定的值是参考。

  

现在我们引用另一个变量并指定一个新值。

因为ac是一个原语,而不是一个对象,所以无论参考是什么。

当你这样做时

 int c=a;  // value of a copied to c

只有对象有引用。基元不是对象。

可能会有所帮助:Is Java "pass-by-reference" or "pass-by-value"?