Lesson Seven 2018-04-20 01:19:00
可变个数的形参
1.格式:对于方法的形参:数据类型...形参名 public void c(int
2.可变个数的形参的方法与同名的方法之间构成重载
3.可变个数的形参在调用时,个数从0开始,没有上限
4.使用可变多个形参的方法 与 方法的形参使用数组是一样的。。。。。。。。。。。。。。。
5.若方法中存在可变个数的形参,一定要声明在方法形参最后
6.在一个方法中,最多声明一个可变个数的形参


1 class TestArgs {
2 public void a() {
3 System.out.println("aaa");
4 }
5
6 public void b(String b) {
7 System.out.println(b);
8 }
9
10 //与上面两个方法构成重载
11 public void c(String agrs[]) {
12 for (int i = 0; i < agrs.length; i++) {
13 System.out.println(agrs[i]);
14 }
15 }
16 //与其它三个方法构成重载
17 public void c(int i, String ... args) {
18 for (int i1 = 0; i1 < args.length; i++) {
19 System.out.println(args[i]);
20
21 }
22 }
23
24 //不能与其它方法构成重载(方法名不一样!)
25 public void c1(int ... args) {
26 int sum = 0;
27 for (int i = 0; i < args.length; i++) {
28 sum += args[i];
29 }
30 }
31 }
示例
方法的参数传递(重点,难点)
1.形参:方法声明时,方法小括号内的参数。
实参:调用方法时,实际传入的参数的值。
2.规则: JAVA中的参数传递机制:值传递机制
2.1形参是基本数据类型的,将实参的值传递给形参是基本数据类型的变量


1 public class Main {
2 public static void main(String[] args) {
3 Main a = new Main();
4
5 int i = 10;
6 int j = 5;
7
8 System.out.println("i="+i);
9 System.out.println("j="+j);
10
11 a.swap( i, j);//将i和j的值传给swap方法
12
13 System.out.println("i="+i);
14 System.out.println("j="+j);
15 }
16 //形参 把i和j的值传入n和m
17 public void swap(int n, int m) {
18 //逻辑与, 一个数连续 逻辑与 另一个数两次就会等于原来的数
19 // m^n^m 结果为 n
20 n = m^n;
21 m = n^m;
22 n = n^m;
23 }
24 }
值类型
PS:以上代码并不能实现两个数想到交换,因为方法内的变量为局部变量,存在于栈中,
而类中的变量存在于堆中。当方法执行完成的时候,栈中的变量因为生命周期结束,而被回收。
所以两数的值并没有交换。
2.2形参是引用数据类型的,将实参的引用类型变量的值(对应的堆空间对象的首地址值)传递给形参的引用类型变量


1 public class ArgsTransfer {
2
3 public static void main(String[] args) {
4 ArgsTransfer tt = new ArgsTransfer();
5 DataSwap ds = new DataSwap();
6 tt.swap(ds);
7 }
8
9 private void swap(DataSwap ds) {
10 int temp = ds.i;
11 ds.i = ds.j;
12 ds.j = temp;
13 }
14 }
15
16 class DataSwap{
17 int i = 10;
18 int j = 5;
19 }
引用类型
PS:以上代码能够实现两个数想到交换,因为引用类型变量中存放的都是堆中的地址,可以直接对堆中的对像实体进行修改
当方法执行完成的时候,虽然栈中的变量因为生命周期结束,而被回收。但因为是对堆中的实体进行修改,所以就算最后被回收了,也能将两数交换
匿名函数
1.当只需要一底价调用类的对象的时候,可以用匿名的方式创建类的对象
2.特点 创建匿名类的对象只能调用一次
3.语法: new 方法名(); 例如: new ArrayTest();


1 public static void main(String[] args) {
2 new StaticAccessNonStatic().info();
3
4 }
5 public void info() {
6 System.out.println("info方法");
7 }
匿名函数
















