按值调用 Java



我知道这是一个常见的问题,但这里是..

我试图写这个来弄清楚Java如何处理参数传递等等。

public class CallByValue {
    int key;
    public void changeValue(CallByValue c){
        System.out.println(c);
        c.key=7;
    }
    public void changeValue(int x){
        x=0;
    }
    public static void main(String[] args){
        CallByValue c=new CallByValue();
        c.key=5;
        System.out.println(c);
        c.changeValue(c);
        System.out.println(c.key);
        int x=8;
        c.changeValue(x);
        System.out.println(x);
    }
}
在这里,我可以更改传递给方法的对象中的基元的值

,但我不能更改传递给方法的基元的值。有没有原因。

基元类型按值传递,该值在堆栈中复制,而对象通过指针副本传递。

基元数据按value存储在变量中

(几乎)其他所有内容都存储在变量中,reference关联对象

如果将它们传递到参数中,则值始终copied

因此,基元数据类型copy the value和其他copy the reference关联对象。

(请注意,有像 String 这样的可憎之物,但几乎所有情况下都是我说的)

相关内容

  • 没有找到相关文章

最新更新