JAVA中int[ ] a={10,9}和int[ ] a=new int[ ]{10,9} 两种写法的区别

刚学,好纠结int[ ] a={10,9};int[ ] a=new int[ ]{10,9} ;两种写法的区别
2024-10-30 23:17:09
推荐回答(1个)
回答(1):

这是java的悖论,java建立的时候,想做成一切皆对象的(这点c#做到了),但是又继承了很多面向过程的语法,比如int类型什么,所以后来sun孜孜不倦地推广Integer等类 就是int等基本类型的封装实现。
好了,说你这个问题,第二种写法左边说明定义立刻一个int类型的数组的引用,引用名为a,右边new了一个int类型的数组对象,并且分配初值为10,9,其实你不用new,java也会给你new一个数组对象,并且把值给i,所以两种写法一样,只是java在最初设计的时候没弄好,所以现在只好两种语法都用,所以,结论就是 java当初没设计好,这两种方法就是写法不一样,前者有点面向过程,后者面向对象。

不过如果在C语言里面类似这样写的话那就是有区别的。
比如int a[]={10,9};
int a[] = new int[]{10,9};
前者系统会栈分配空间系统会自动实现内存分配和回收
后者系统会堆分配空间系统般会自动实现内存回收程序没有delete能会造成内存泄露
后者比前者灵活,动态分配内存会根据程序需要分配需要多少,自己决定分配多少浪费空间少