_ El valor de una transferencia método de transferencia de parámetro 11

Método de parámetros de transmisión - la transferencia de valor

variables de Java, cuando la forma se pasa a los parámetros del proceso para transmitir realmente una copia del valor de la variable, no la propia variable

Este parámetro mecanismo de paso de Java, pedimos: (valor de transferencia solo) valor pasado

public class MethodParamDemo01 {
    public static void main(String[] args) {
        int number = 100 ; // 实参!
        System.out.println("调用方法前输出number:"+number); // 1 100
        change(number); // == change(100)
        System.out.println("调用方法后输出number:"+number); // 4 100
    }

    public static void change(int number){ // 形参
        System.out.println("方法中修改前输出number:"+number); // 2 100
        number = 200 ;
        System.out.println("方法中修改后输出number:"+number); // 3 200
    }
}

atención especial

Referencia tipo de datos de la variable pasada es una dirección de copia

Referencia tipo de datos de una variable como un parámetro se pasa al parámetro método, de hecho, una copia del valor de referencia es la dirección del tipo de datos de transmisión de una variable, el valor todavía cumple entrega!

Desde varias direcciones apuntan al mismo objeto, por lo que el partido cambió, ver el otro lado de los datos también se cambia!

public class MethodParamDemo02 {
    public static void main(String[] args) {
        // 1.定义一个数组
        int[] arrs = new int[]{10 , 20 , 30 };
        System.out.println(arrs);    // 输出数组地址 [I@4dd8dc3
        System.out.println(arrs[0]); // 10
        System.out.println(arrs[1]); // 20
        System.out.println(arrs[2]); // 30
        System.out.println("调用方法前以上输出内容-----------");

        // 2.调用一个方法:传入数组给它,其实传输的是数组变量存储的地址副本
        changeArray(arrs); // ==  changeArray([I@4dd8dc3)

        System.out.println(arrs[0]); // 10
        System.out.println(arrs[1]); // 2000  注意:这里已经变化了!
        System.out.println(arrs[2]); // 30
        System.out.println("调用方法后以上输出内容-----------");
    }

    public static void changeArray(int[] arrs){
        System.out.println(arrs);  // 输出数组地址 [I@4dd8dc3
        System.out.println(arrs[0]); // 10
        System.out.println(arrs[1]); // 20
        System.out.println(arrs[2]); // 30
        System.out.println("在方法中修改数组前以上输出内容-----------");
        arrs[1] = 2000;
        System.out.println(arrs[0]);  // 10
        System.out.println(arrs[1]);  // 2000
        System.out.println(arrs[2]);  // 30
        System.out.println("在方法中修改数组后以上输出内容-----------");
    }
}

Publicado 34 artículos originales · alabanza ganado 16 · vistas 294

Supongo que te gusta

Origin blog.csdn.net/qq_41005604/article/details/105165563
Recomendado
Clasificación