方法参数的值传递机制
1.实例:
public class Hello
{
public static void main(String[] args)
{
System.out.println("Hello");
}
}
参数:参数类型:String[] 参数名称:args(arguments)
main方法是static修饰的,直接使用hello类调用即可。在底层是JVM通过Hello.main(实参)。main方法的String数组参数,其实是暴露给程序运营者的用于给程序传递一个数据信息
2.基本数据类型
class ParameterDemo1
{
public static void main(String[] args)
{
int x=10;
change(x);//改变x变量
System.out.println("change方法后,x="+ x)//10
}
static void change(int x)
{
System.out.println("change方法前,x="+ x)//10
x=50;
System.out.println("change方法后,x="+ x)//50
}
}
change(x)是先把X的值先拷贝一份,再传递给change方法。
3.引用数据类型
class ParameterDemo2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr=new int[] {10,99};
printArray(arr);
Swap(arr);
printArray(arr);
}
static void printArray(int[] arr) {
if(arr==null) {
System.out.println("null");
return;
}
String ret="[";
for(int index=0;index<arr.length;index++) {
ret+=arr[index];
//如果当前index不是最后一个索引,则拼接“,”
if(index!=arr.length-1) {
ret=ret+",";
}
}
ret=ret+"]";
System.out.println(ret);
}
static void Swap(int[] arr) {
int temp=arr[0];
arr[0]=arr[arr.length-1];
arr[arr.length-1]=temp;
}
}
输出结果:
[10,99]
[99,10]
swap(arr)是把main方法中的arr所引用的地址值复制一份,把复制之后的副本传递给swap方法的arr变量