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
}
}
}