以匿名数组为例
一.
在java中,提供了一种创建数组对象并同时赋予初始值的简化书写形式,表明我们声明了一个数组。
int[] arr = {13,24,45,67};
这种写法不需要通过new来创建。
我们把这种写法和我们最常见的写法对比一下:
int[] arr = {13,24,45,67};
System.out.println(arr[0]+"---"+arr[1]+"---"+arr[2]+"---"+arr[3]);
int[] array = new int[]{13,24,45,67};
System.out.println(array[0]+"---"+array[1]+"---"+array[2]+"---"+array[3]);
得到结果如图:
发现这两种的方法都能够输出数组里面的元素。说明这两种声明数组的方法相同。
二.
也可以初始化一个匿名数组:
new int[] {14,23,45,67}
这种形式我们可以这样进行使用:
- 声明一个名为get()的静态的返回类型为一个int类型数组的函数,返回一个匿名数组。
public static int[] get(){
return new int[] {14,23 45,67};
}
- 在主函数中声明一个数组调用get()函数,并输出数组中每个元素
int[] bc = get();
for(int i = 0 ; i < bc.length ; i++){
System.out.println(bc[i]);
}
- 得到如下结果:
这种表示方法将创建一个新数组并利用括号中提供的值进行初始化,数组的大小就是初始值的个数。
而且,我们将匿名数组作为方法的返回值返回,我们在主函数中声明任意的数组都可以接收到这个匿名数组,是不是就比每次都new一个数组方便很多?
int[] arr1 = get();
System.out.println(arr1[0]+"---"+arr1[1]+"---"+arr1[2]+"---"+arr1[3]);
int[] arr2 = get();
System.out.println(arr2[0]+"---"+arr2[1]+"---"+arr2[2]+"---"+arr2[3]);
int[] arr3 = get();
System.out.println(arr3[0]+"---"+arr3[1]+"---"+arr3[2]+"---"+arr3[3]);
int[] arr4 = get();
System.out.println(arr4[0]+"---"+arr4[1]+"---"+arr4[2]+"---"+arr4[3]);
得到结果:
结果显示我们的说法也是行得通的。
对于题目中匿名对象来说同理
我们要实现一个方法method(Student stu),需要传递一个对象来作为参数,这时候我们也是有两种方法:
1.声明一个变量并初始化
Student stu = new Student();
method(stu);
2.声明一个匿名对象 (方法中new A()就是匿名对象)
method(new Student());
先在类中创建一个method方法,在Student类中写好get、set方法。
public static void method(Student stu){
stu.setName("张三");
System.out.println(stu.getName());
}
在main函数中输入:
method(new Student());
我们可以在控制台看到我们输出了“张三”。
总结:
匿名数组这种语法形式可以在不创建句柄(新变量)的前提下节省了我们在栈内的空间分配
这样我们就省略了一系列对栈的操作,减少了我们的代码量,最主要提升了程序的性能。