方法参数的值传递机制
main方法的数组参数
public class Hello{
public static void main(String[] args){
System.out.println("Hello");
}
}
参数:
参数类型 String[ ]
参数名称:args(arguments)
main方法是static修饰的,说明直接使用Hello类调用即可。
在底层是JVM通过Hello.main(new String[ ]{})。
main方法的String数组参数其实是暴露给程序运行者的,用于给程序传递一个数据信息。
main方法数据传递
基本数据类型值传递机制
//基本数据值传递类型
class ParameterDemo1
{
public static void main(String[] args)
{
int x = 10;
System.out.println("main方法前:x = " + x);//10
change(x);//改变x变量
System.out.println("main方法后:x = " + x);//10 为什么是10
}
static void change(int x){
System.out.println("change方法前:x = " + x);//120
x = 120;
System.out.println("change方法后:x = " + x);//10
}
}
change方法值传递过程
引用数据类型值传递机制
引用数据值传递类型
class ParameterDemo2
{
public static void main(String[] args)
{
int[] arr = new int[]{23,34};
arrayPrint(arr);//[23,34]
svap(arr);//交换第一个和最后一个元素的值
arrayPrint(arr);//[34,23]
System.out.println("ending.......");
}
static void svap(int[] arr){
int temp = arr[0];//把第一个元素存在中间变量
arr[0] = arr[arr.length - 1];//把最后一个元素赋值给第一个
arr[arr.length - 1] = temp;//将中间变量的值赋值给最后一个元素
}
//打印数组元素的方法
static void arrayPrint(int[] arr){
if(arr == null){//为了当数组为空引用是打印而不是报错
System.out.println("null");
return;//结束方法,否则依然报错
}
String ret = "[";
for(int index = 0;index < arr.length;index ++){
ret = ret + arr[index];
if(index != arr.length - 1){
ret = ret + ", ";
}
}
ret = ret + "]";
System.out.println(ret);
}
引用数据类型值传递
基本数据类型传递的是值的副本,而引用数据类型传递的是引用地址值的副本。理解两种不同类型产生结果的原因是关键。
网友评论