JAVAの関数呼び出しには、値の転送のみがあります

なぜJAVAには価値の移転しかないのですか?次のコード

public class TestSwap {
    
    
    public static void main(String... args){
    
    
        Student1 s1 = new Student1(20,"小周");
        Student1 s2 = new Student1(13,"瑞瑞");
        TestSwap swap = new TestSwap();
        swap.swap(s1,s2);
//        swap.swap1(s1,s2);
        System.out.println("s1:"+s1.getName());
        System.out.println("s2:"+s2.getName());
    }

    private void swap(Student1 x, Student1 y){
    
    
        Student1 temp = x;
        x = y;
        y = temp;
        System.out.println("x:"+x.getName());
        System.out.println("y:"+y.getName());
    }
    private void swap1(Student1 x, Student1 y){
    
    
        String temp = x.getName();
        x.name = y.getName();
        y.name = temp;
        System.out.println("x:"+x.getName());
        System.out.println("y:"+y.getName());
    }

    public static class Student1{
    
    
        int age;
        String name;

        public Student1(){
    
    

        }
        public Student1(int age, String name) {
    
    
            this.age = age;
            this.name = name;
        }

        public String getName() {
    
    
            return name;
        }
    }
}
スワップ呼び出しの出力結果 x:趙蕪、y:趙蕪、s1:趙蕙、s2:趙蕪
swap1を呼び出した結果の出力 x:趙蕪、y:趙蕙、s1:趙蕪、s2:趙蕙

上記の出力の説明

  • メソッドは、オブジェクトパラメータの状態を変更できます(swap1メソッドを使用すると、Studentオブジェクトの名前を交換できます)
  • メソッドは、オブジェクトパラメータに新しいオブジェクトを参照させることはできません(swapメソッドは、オブジェクト参照ポイントを別のオブジェクトにすることはできません)

おすすめ

転載: blog.csdn.net/weixin_43957211/article/details/109260017