Java方法中的参数传递

总结:

1、基本参数类型的参数,传递的是它本身,所以原参数保持不变;
基本参数:byte、short、int、long;float、double;char;boolean。
2、引用参数类型的参数,传递的是它在内存中的存储地址,所以原参数会跟着改变。
引用参数:class、interface、array。


主程序入口:main()方法:

/**
 * @Title: 参数传递
 * @Description: main()
 * @author: TabKey9
 * @CreateDate: 2022.3.1
 */
public class Paramtransfer {
    public static void main(String[] args) {
        System.out.println("【方法的 基本参数传递】");
        int val = 10;
        System.out.println("传参之前val = "+ val);
        System.out.println();
        basic(val);
        System.out.println();
        System.out.println("传参后,传递的是值的本身,而不是参数的地址,所以原来那个var还是等于"+ val);
        System.out.println("***************************************");
        System.out.println();

        System.out.println("【方法的 引用参数传递】");
        int[] arr = new int[]{10,20,30};
        ref(arr);
        for (int i:arr){
            System.out.println(i);
        }
        System.out.println("遍历数组可知数组内三个值分别乘以2之后的结果,由此可知数组是引用数据类型,它传递的是它在内存中的地址,而不是它本身");
    }

基本参数传递

/**
 * @description: 基本参数传递
 * @param: int val
 * @return: void
 * @author: TabKey9
 * @update: 2022/3/1  11:54
 */
    public static void basic(int val){
        val += 200;
        System.out.println("也可以理解成作用域的原因,basic()里val确实是"+ val +",但它是另外在内存中开辟新的存储空间");
    }

引用参数传递


/**
 * @description: [功能描述]
 * @param: int[] arr
 * @return: void
 * @author: TabKey9
 * @update: 2022/3/1  14:33
 */
    public static void ref(int[] arr){
        for(int i=0;i<arr.length;i++){
            arr[i] *=2;//数组内所有值分别乘以2
        }
    }

}

运行
【方法的 基本参数传递】
传参之前val = 10

也可以理解成作用域的原因,basic()里val确实是210,但它是另外在内存中开辟新的存储空间

传参后,传递的是值的本身,而不是参数的地址,所以原来那个var还是等于10
***************************************

【方法的 引用参数传递】
20
40
60
遍历数组可知数组内三个值分别乘以2之后的结果,由此可知数组是引用数据类型,它传递的是它在内存中的地址,而不是它本身


完整代码

Paramtransfer.java
/**
 * @Title: 参数传递
 * @Description: 总结:1、基本参数类型的参数,传递的是它本身,所以原参数保持不变;2、引用参数类型的参数,传递的是它在内存中的存储地址,所以原参数会跟着改变。
 * @author: TabKey9
 * @CreateDate: 2022.3.1
 */
public class Paramtransfer {
    public static void main(String[] args) {
        System.out.println("【方法的 基本参数传递】");
        int val = 10;
        System.out.println("传参之前val = "+ val);
        System.out.println();
        basic(val);
        System.out.println();
        System.out.println("传参后,传递的是值的本身,而不是参数的地址,所以原来那个var还是等于"+ val);
        System.out.println("***************************************");
        System.out.println();

        System.out.println("【方法的 引用参数传递】");
        int[] arr = new int[]{10,20,30};
        ref(arr);
        for (int i:arr){
            System.out.println(i);
        }
        System.out.println("遍历数组可知数组内三个值分别乘以2之后的结果,由此可知数组是引用数据类型,它传递的是它在内存中的地址,而不是它本身");
    }

/**
 * @description: 基本参数传递
 * @param: int val
 * @return: void
 * @author: TabKey9
 * @update: 2022/3/1  11:54
 */
    public static void basic(int val){
        val += 200;
        System.out.println("也可以理解成作用域的原因,basic()里val确实是"+ val +",但它是另外在内存中开辟新的存储空间");
    }

/**
 * @description: [功能描述]
 * @param: int[] arr
 * @return: void
 * @author: TabKey9
 * @update: 2022/3/1  14:33
 */
    public static void ref(int[] arr){
        for(int i=0;i<arr.length;i++){
            arr[i] *=2;//数组内所有值分别乘以2
        }
    }

}
posted @ 2022-03-01 15:02  TabKey9  阅读(385)  评论(0编辑  收藏  举报