目录
方法的参数传递(基本类型)
-
对于基本数据类型的参数,形式参数的改变,不影响实际参数的值
-
代码实现
package com.csc; public class Test01 { public static void main(String[] args) { int number = 100; System.out.println("调用change前:"+number); change(number); System.out.println("调用change后:"+number); } public static void change(int number1){ number1 = 200; return number1; } }
-
代码解析
public static void main(String[] args) { //把main方法加载到栈内存 int number = 100; //在main方法中加载一个 int number 100; System.out.println("调用change前:"+number); //将number的值输出 change(number); //调用change方法:把change方法加载到栈内存 public static void change(int number1){ //在chenge方法中,加载一个 int nember1 100 // number1 是形参,它的初始值是实参number给它的。实参number的初始值:100 number1 = 200; // number1的值从100 变为了200 return number1; // 将number1的值返回到main方法中,暂时main方法中没人接收 } //chenge方法结束 int number1 = 200 和change方法一起随着changg方法的结束而在 栈内存中消失 System.out.println("调用change后:"+number);//再次输出number的值,这次number的值在main方法中,值为100 } //main方法结束,int number = 100 和main方法一起随着mian方法的结束在 栈内存中消失
方法的参数传递(引用类型)
-
对于引用类型的参数,形式参数的改变,影响实际参数的值。
-
代码实现
package com.csc; public class Test01 { public static void main(String[] args) { int[] arr = {10,20,30}; System.out.println("调用change前:"+arr[1]); change(arr); System.out.println("调用change后:"+arr[1]); } public static void change(int[] arr1){ arr1[1] = 200; } }
-
代码分析
public static void main(String[] args) { //把main方法加载到栈内存 int[] arr = {10,20,30}; //int[] arr 出现在栈内存main方法中 {10,20,30}会出现在堆内存里面,形成2行2列的表格 //表格上方会出现地址值001 //会将地址值001 赋值给栈内存的 arr System.out.println("调用change前:"+arr[1]);//输出arr[1]的值--->20 change(arr); //调用change方法:把change方法加载到栈内存 public static void change(int[] arr1){在chenge方法中,加载一个 int[] arr1 001 // arr1是arr 传递过来的 也是堆内存中地址值是001的数据 arr1[1] = 200; //通过arr1--->001--->索引1--->20 ===>20变成200 堆内存的数据发生改变 } //chenge方法结束 int number1 001 和change方法一起随着changg方法的结束而在栈内存中消失 System.out.println("调用change后:"+arr[1]);//再次输出arr[1]的值,堆内存的数据发生了改变 但是没有消失 } //main方法结束,int[] arr 001 和main方法一起随着mian方法的结束在栈内存中消失
命令行传参
-
有时候你希望运行一个程序的时候再传递给它消息。这需靠传递命令行参数给main()函数实现。
package com.chang.method;
public class Method0401 {
public static void main(String[] args) {
//args.length 数组长度
for (int i = 0; i <args.length ; i++) {
System.out.println("args["+i+"]:"+args[i]);
}
}
}
-
打开文件所在位置,进入命令行
-
找不到或无法加载主类原因:代码中引用了包机制 因此需要用cd..退到包机制上面的文件夹中:eg:src
-
第一运行java出没有变化 是因为没给传参
-
可变参数
-
在JDK1.5开始,Java支持传递同类型的可变参数的一个方法
-
在方法声明中,在制定参数类型后加一个省略号(...)
-
一个方法中只能制定一个可变参数,他必须是方法的最后一个参数。任何普通的参数必须在它之前声明
-
格式:
public void add(int...i)//main方法传参 add(1,2,3,4,5); 相当于i是个数组 int i[] = {1,2,3,4,5} public void add(int a,int...i)//main方法传参 add(1,2,3,4,5); 1 传a 2,3,4,5 传i
-
代码实现
package com.chang.method; public class Method0501 { public static void main(String[] args) { Method0501 method0501 = new Method0501(); method0501.add(1,2,3,4,5);//必须是相同的类型 } public void add(int...i){ System.out.println(i[0]); } }
package com.chang.method; public class Method0502 { public static void main(String[] args) { Method0502 method0502 = new Method0502(); method0502.printMax(10,20,30,21,29); } public void printMax(double...i){ if(i.length==0){ System.out.println("您没有输入"); } double result = i[0]; for (int j = 0; j <i.length ; j++) { if(i[j]>result){ result = i[j]; } } System.out.println("最大值为:"+result); } }