JAVA中匿名对象的性能优势分析

以匿名数组为例

一.
在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}

这种形式我们可以这样进行使用:

  1. 声明一个名为get()的静态的返回类型为一个int类型数组的函数,返回一个匿名数组。
public static int[] get(){
        return new int[] {14,23 45,67};
    }
  1. 在主函数中声明一个数组调用get()函数,并输出数组中每个元素
int[] bc = get();
for(int i = 0 ; i < bc.length ; i++){
    System.out.println(bc[i]);
}
  1. 得到如下结果:
    在这里插入图片描述
    这种表示方法将创建一个新数组并利用括号中提供的值进行初始化,数组的大小就是初始值的个数。
    而且,我们将匿名数组作为方法的返回值返回,我们在主函数中声明任意的数组都可以接收到这个匿名数组,是不是就比每次都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());

我们可以在控制台看到我们输出了“张三”。
在这里插入图片描述


总结:
匿名数组这种语法形式可以在不创建句柄(新变量)的前提下节省了我们在栈内的空间分配
这样我们就省略了一系列对栈的操作,减少了我们的代码量,最主要提升了程序的性能。

相关推荐
©️2020 CSDN 皮肤主题: 护眼 设计师:闪电赇 返回首页