Javaパラメータメソッドで発生した値の変更を渡す

2390 ワード

1、メソッド内でパラメータを演算し、元の変数の値に影響しない(基本タイプは値を変更せず、参照タイプは参照アドレスを変更しない).
例:
public class ParamTest {

    public static void integerParam(int a,int b){
        a += 1;
        b += 1;
    }

    public static void quoteParam(Random x){
        x = new Random();
    }

    public static void main(String[] args) {
        int a = 1;
        int b = 2;
        integerParam(1,2);
        System.out.println("a:"+a);
        System.out.println("b:"+b);

        System.out.println("=======     ======");

        Random r = new Random();
        System.out.println(r);
        quoteParam(r);
        System.out.println(r);
    }
}
出力結果:a:1
                 b:2
                 =======私は分割線=======
                 java.util.Random@5910e440
                 java.util.Random@5910e440
整数タイプはメソッド内で値が変化せず,参照タイプのアドレスも変化しなかったことを示す.
2、メソッド内でパラメータの属性を操作し、元の変数の属性値(集合、配列の要素など)を変更する
public class ParamTest {

    public static void integerParam(int a,int b){
        a += 1;
        b += 1;
    }

    public static void quoteParam(Random x){
        x = new Random();
    }

    public static void arrayParam(String[] strArray){
        strArray[0] = "a";
        strArray[1] = "b";

    }

    public static void main(String[] args) {
        int a = 1;
        int b = 2;
        integerParam(1,2);
        System.out.println("a:"+a);
        System.out.println("b:"+b);

        System.out.println("=======     ======");

        Random r = new Random();
        System.out.println(r);
        quoteParam(r);
        System.out.println(r);

        System.out.println("========     =========");

        String[] strArray = new String[2];
        strArray[0] = "x";
        System.out.println(strArray);
        for (int i = 0; i < strArray.length; i++) {
            System.out.println(strArray[i]);
        }
        arrayParam(strArray);
        System.out.println(strArray);
        for (int i = 0; i < strArray.length; i++) {
            System.out.println(strArray[i]);
        }
    }

出力結果:
a:1 b:2========分割線====java.utilです[email protected]@5910 e 440=================[Ljava.lang.String;@6267 c 3 bbbxnull[Ljava.lang.String;@6267 c 3 bba
b
最下辺配列パラメータのテスト結果では,パラメータの参照アドレスが変化せず,パラメータ内部の要素が変化することが分かった.