第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Java中,為什么對數(shù)組進行靜態(tài)初始化時,可以省略關(guān)鍵字new?

在Java中,為什么對數(shù)組進行靜態(tài)初始化時,可以省略關(guān)鍵字new?

玄天 2017-07-28 23:17:17
int?a[]?=?{1,?2,?3};int?b[]?=?new?int[]?{1,?2,?3};前者沒有使用關(guān)鍵字new,為什么不報錯呢?
查看完整描述

4 回答

已采納
?
yeehom

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}; 實際上是等價的,任何一種寫法都能正確編譯,所以當然不會報錯了。

查看完整回答
3 反對 回復 2017-07-29
?
慕雪9135782

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é),

查看完整回答
3 反對 回復 2017-07-28
  • 玄天
    玄天
    感謝耐心指點!但是抱歉,我只能采納一個...
?
showface

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

以我的理解,new是在堆中開辟了一塊區(qū)域,第一種是在常量池中定義的,內(nèi)容上無區(qū)別,但是底層開辟的原理不同。不知道技術(shù)到家了沒。

查看完整回答
反對 回復 2017-07-29
?
禿頭披風俠0

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

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

查看完整回答
反對 回復 2017-07-29
?
大大丶布維

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

嗯……我該怎么解釋呢,右邊有大括號的時候,我們都是用第一種方法的,下面的方法我們是用來定義空數(shù)組的
int[] b=new int[5];
而你的第二種定義方式,我還真的第一次見,不好意思,讓你見笑了

查看完整回答
反對 回復 2017-07-28
  • 4 回答
  • 0 關(guān)注
  • 3958 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號