Java方法的参数传递注意事项(一)
在学习了Java方法的功能之后,发现在方法的参数传递中存在着一些小坑,在这里对问题进行有一下梳理总结,方便日后的温习回顾。
传参类型
Java方法的参数传递方式主要分为两种
1.基本数据类型参数
可传入byte、short、char、int、long、float、double这八种基本数据类型;
例如:
public static void method(int i){
...
}
2.引用数据类型
可传入数组、对象等引用数据类型
例如:
public static void method(int[] arr){
...
}
问题分析
我们通过两个实例来形象描述问题:
实例1(基本数据类型传参)
/**
* 基本数据类型参数传达
*/
//change方法
public static void change(int num1) {
//num1赋值为1000
num1 = 100000;
}
//主方法
public static void main(String[] args) {
System.out.println("--基本数类型参数传递--");
int num1 = 100;
System.out.println("运行之前num1为:" + num1);
System.out.println("调用change方法");
change(num1);
System.out.println("运行之后num1为:" + num1);
}
运行结果如下:
实例2(引用数据类型传参)
/**
* 引用类型数据参数传递
*/
//change1方法
public static void change1(int[] arr) {
//数组arr中索引1 的值赋值为100
arr[1] = 100;
}
//主方法
public static void main(String[] args) {
System.out.println("--引用类型参数传递--");
int[] arr = {10, 20, 30};
//遍历数组
System.out.println("调用前数组:");
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//调用change2方法
System.out.println("调用change2方法");
change1(arr);
System.out.println("调用后数组:");
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
运行结果如下:
通过上述两例,可以看出,在方法体中对传入参数进行更改后,基本数据类型参数并未发生实质性变化,而引用类型参数则发生值的变化。
总结
1.基本数据类型参数传递,其实质是新声明一个方法内变量,将传入参数值赋值于变量并传入方法,当方法运行完毕后该变量即被销毁,随着方法的结束其值并为发生改变。
2.引用数据类型参数传递,以数组为例子,其实质是将数组存放在堆中的首地址传入方法,当在方法中对数组进行修改,如修改索引值为1的数组数据,其值被成功修改,随着方法的结束其值也发生改变。
补充
暂无;