4 回答

TA貢獻2條經(jīng)驗 獲得超4個贊
這是由于java設(shè)計之初為了契合用戶習慣做得妥協(xié)(也可以說是優(yōu)化)。
大家都知道java是1995年設(shè)計出來的,相比c(1972年)、c++(1983年)這些語言來說是后起之秀。而c、c++定義數(shù)組習慣使用 int a[] = {1, 2, 3}; 這樣的方式。因此java也順勢繼承了下來。
java作為純面向?qū)ο笳Z言,同時數(shù)組在java中以對象形式存在。這種寫法咋看之下違背了對象創(chuàng)建的方式,而它實際上只是一種語法糖(簡化寫法)。編譯器遇到 int?a[]?=?{1,?2,?3}; 會編譯成和 int a[]?=?new?int[]?{1,?2,?3}; 完全一樣的中間代碼。
因此 int?a[]?=?{1,?2,?3}; 和 int a[]?=?new?int[]?{1,?2,?3}; 實際上是等價的,任何一種寫法都能正確編譯,所以當然不會報錯了。

TA貢獻2條經(jīng)驗 獲得超7個贊
Java中定義數(shù)組的方式有三種:
int[]?arr1=new?int[10]; ?
int[]?arr2=new?int[]{1,2,3,4,5,6}; ?
int[]?arr3={1,2,3,6}; ?
第一種在定義時確定下數(shù)組的長度,java中數(shù)組長度一旦被定義了就不能在改變它的長度length,基本類型的數(shù)組,其中的元素的默認值為基本類型的默認值,比如說int默認值為0,這里面所有元素的默認值都為0,引用類型的數(shù)組其元素的默認值為null;
第二組定義方式是將數(shù)組定義時,同時將數(shù)組內(nèi)部元素給確定下來;
第三種與第二種的結(jié)果相同,只不過是定義方式不同而已,你可以理解為,同一個結(jié)果只不過是不同的實現(xiàn)罷了.不用太糾結(jié),

TA貢獻3593條經(jīng)驗 獲得超0個贊

TA貢獻1條經(jīng)驗 獲得超0個贊
以我的理解,new是在堆中開辟了一塊區(qū)域,第一種是在常量池中定義的,內(nèi)容上無區(qū)別,但是底層開辟的原理不同。不知道技術(shù)到家了沒。

TA貢獻24條經(jīng)驗 獲得超12個贊
C++11的語法聲明并初始化數(shù)組連等號都可以不要 ,人家編譯器支持這種語法格式就不要非要去區(qū)別兩種方式了 ,太底層的實現(xiàn)等自己技術(shù)很扎實了再去研究吧

TA貢獻12條經(jīng)驗 獲得超117個贊
嗯……我該怎么解釋呢,右邊有大括號的時候,我們都是用第一種方法的,下面的方法我們是用來定義空數(shù)組的
int[] b=new int[5];
而你的第二種定義方式,我還真的第一次見,不好意思,讓你見笑了
添加回答
舉報