欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java創(chuàng)建數(shù)組、賦值的四種方式詳解(聲明+創(chuàng)建+初始化?)

 更新時(shí)間:2024年04月15日 09:31:51   作者:尋求出路的程序媛  
數(shù)組是一種數(shù)據(jù)結(jié)構(gòu),用來存儲(chǔ)同一類型值的集合一旦創(chuàng)建了數(shù)組,就不能再改變它的長度,下面這篇文章主要給大家介紹了關(guān)于Java創(chuàng)建數(shù)組、賦值的四種方式(聲明+創(chuàng)建+初始化?)的相關(guān)資料,需要的朋友可以參考下

一、創(chuàng)建數(shù)組的四種方式

以int數(shù)據(jù)類型為例

@Test
public void testNewArray() {
    //創(chuàng)建數(shù)組

    //法一
    int[] arr1 = new int[]{1,2,3,4,5};
    System.out.println(arr1.length + "   " + arr1[2]);   //5   3
    //Arrays.toString(Object[])  將數(shù)組的元素生成字符串,數(shù)組的各個(gè)元素使用方括號(hào)括著 [ ]
    System.out.println(Arrays.toString(arr1));   //[1, 2, 3, 4, 5]

    //法二 聲明、分配空間并賦值
    int[] arr2 = {1,2,3,4};
    System.out.println(arr2.length + "   " + arr2[2]);   //4   3

    //法三 聲明數(shù)組時(shí)指定元素個(gè)數(shù),然后賦值。此時(shí)所有的元素值均為0
    int[] arr3 = new int[4];
    System.out.println(arr3.length + "   " + arr3[3]);  //4   0

    //法四 聲明數(shù)組名、開辟空間、賦值
    int[] arr4;
    arr4 = new int[]{0,1,2,3};
    System.out.println(arr4.length + "   " + arr4[2]);   //4   2

    //創(chuàng)建多維數(shù)組
    int[][] doubleArr1 = {{1,2,3},{4,5,6},{7,8,9}};
    int m = 3, n = 4, q = 5;
    int[][] doubleArr2 = new int[m][n];  //其中n可以省略
    int[][][] tArr = new int[m][n][q];   //其中n、q可以省略
}

注意:

  • new 數(shù)據(jù)類型[]{},其中花括號(hào)可以省去,但要在[ ]中填寫數(shù)組的個(gè)數(shù);
  • 創(chuàng)建多維數(shù)組時(shí) new后面第一個(gè)方括號(hào)中的元素?cái)?shù)量不能省略

二、詳解

1、一維數(shù)組的聲明方式:

type[] arrayName; 或 type arrayName[];

推薦使用第一種格式,因?yàn)榈谝环N格式具有更好的可讀性,表示type[]是一種引用類型(數(shù)組)而不是type類型。建議不要使用第二種方式

int[] intArr;

注:Java語言中聲明數(shù)組時(shí)不能指定其長度(數(shù)組中元素的個(gè)數(shù)),這是因?yàn)閿?shù)組是一種引用類型的變量,因此使用它定義一個(gè)變量時(shí),僅僅表示定義了一個(gè)引用變量(也就是定一個(gè)了一個(gè)指針),這個(gè)引用變量還未指向任何有效的內(nèi)存,所以定義數(shù)組時(shí)不能指定數(shù)組的長度。而且由于定義數(shù)組僅僅只是定一個(gè)引用變量,并未指向任何有效的內(nèi)存空間,所以還沒有內(nèi)存空間來存儲(chǔ)數(shù)組元素,因此這個(gè)數(shù)組也不能使用,只有在數(shù)組進(jìn)行初始化后才可以使用。

2、一維數(shù)組的創(chuàng)建

Java中使用關(guān)鍵字new創(chuàng)建數(shù)組對(duì)象,格式為:數(shù)組名 = new 數(shù)組元素的類型 [數(shù)組元素的個(gè)數(shù)]

// 創(chuàng)建數(shù)組,如果在創(chuàng)建的同時(shí)不初始化數(shù)組則必須指定其大小
intArr = new int[5];
// 創(chuàng)建數(shù)組時(shí),不指定數(shù)組大小則必須在創(chuàng)建的同時(shí)初始化數(shù)組
intArray1 = new int[]{0,1,2};
  • 一旦使用new關(guān)鍵字為數(shù)組分配了內(nèi)存空間,每個(gè)內(nèi)存空間存儲(chǔ)的內(nèi)容就是數(shù)組元素的值,也就是數(shù)組元素就有了初始值,即使這個(gè)內(nèi)存空間存儲(chǔ)的內(nèi)容是空,這個(gè)空也是一個(gè)值null。也就是說不可能只分配內(nèi)容空間而不賦初始值,即使自己在創(chuàng)建數(shù)組對(duì)象(分配內(nèi)容空間)時(shí)沒有指定初始值,系統(tǒng)也會(huì)自動(dòng)為其分配
  • 基礎(chǔ)數(shù)據(jù)類型的包裝類,其默認(rèn)的初始化值均為null,因?yàn)榛A(chǔ)數(shù)據(jù)類型的包裝類創(chuàng)建的數(shù)組屬于引用數(shù)組(對(duì)象數(shù)組),對(duì)象數(shù)組默認(rèn)的初始化值都是null。

3、一維數(shù)組的初始化

數(shù)組的初始化分為靜態(tài)初始化、動(dòng)態(tài)初始化和默認(rèn)初始化:

  • 靜態(tài)初始化是數(shù)組在初始化時(shí)由程序員顯式指定每個(gè)數(shù)組元素的初始值而數(shù)組長度由系統(tǒng)決定。
  • 動(dòng)態(tài)初始化是數(shù)組在初始化時(shí)只指定數(shù)組長度,由系統(tǒng)為數(shù)組元素分配初始值。
//a、數(shù)組靜態(tài)初始化的語法格式:
arrayName = new type[]{element1,element2,element3...};
// 或者使用簡化的語法格式:
arrayName = {element1,element2,element3...}

//b、數(shù)組動(dòng)態(tài)初始化的語法格式:
arrayName = new type[length];

附:靜態(tài)初始化時(shí)不能指定元素個(gè)數(shù),而動(dòng)態(tài)初始化時(shí)則必須指定元素個(gè)數(shù)。靜態(tài)初始化時(shí)數(shù)組能夠知道元素的個(gè)數(shù)所以不需要指定,而動(dòng)態(tài)初始化時(shí)數(shù)組元素個(gè)數(shù)未知 因此必須指定。

// 靜態(tài)初始化
int intArray2 [] = new int []{20,21,22};
// 靜態(tài)初始化簡化方式
int intArray3 [] = {30,31,32};

// 動(dòng)態(tài)初始化
int [] intArray4 = new int [3];           
// 錯(cuò)誤寫法:靜態(tài)初始化不能指定元素個(gè)數(shù)
// int intErrorArray5[] = new int[3]{50,51,52};
// 錯(cuò)誤寫法:動(dòng)態(tài)初始化必須指定元素個(gè)數(shù)
// int intErrorArray6[] = new int[];

注:一維數(shù)組這一塊記住兩點(diǎn),數(shù)組聲明的時(shí)候是不能指定大小的,也就是說等號(hào)左邊的中括號(hào)中不能包含數(shù)字。另外一旦使用new關(guān)鍵字那么肯定在內(nèi)存中為數(shù)組分配了空間,則必然數(shù)組有默認(rèn)值。數(shù)組是對(duì)象數(shù)據(jù)類型

注:不要靜態(tài)初始化和動(dòng)態(tài)初始化同時(shí)使用,也就是說不要再進(jìn)行數(shù)組初始化時(shí),既指定數(shù)組長度,也為每個(gè)數(shù)組元素分配初始值。

4、數(shù)組進(jìn)行動(dòng)態(tài)初始化時(shí)系統(tǒng)分配初始值的規(guī)則

  • 數(shù)組元素類型是基本類型中的整數(shù)類型(byte、short、int、long),則數(shù)組元素的初始化默認(rèn)值是0
  • 數(shù)組元素類型是基本類型中的浮點(diǎn)類型(float、double),則數(shù)組元素的值是0.0
  • 數(shù)組元素類型是基本類型中的字符類型(char),則數(shù)組元素的值是’\u0000’
  • 數(shù)組元素類型是基本類型中的布爾類型(boolean),則數(shù)組元素的值是false
  • 數(shù)組元素類型是基本類型中的引用類型(類、接口、數(shù)組),則數(shù)組元素的值是null

詳情見:http://www.dbjr.com.cn/program/319567ebl.htm

三、數(shù)組存儲(chǔ)的弊端

  • 一旦初始化,其長度就不可修改,長度不夠用、開辟很大的長度會(huì)導(dǎo)致空間浪費(fèi)
  • 數(shù)組中提供的方法非常有限。添加、刪除、插入等操作 效率很低【為了保證元素的內(nèi)存地址連續(xù),添加或刪除元素時(shí),涉及到前移或者后移】
  • 擴(kuò)容麻煩,只能新建一個(gè)更大的數(shù)組,將元素一個(gè)一個(gè)移進(jìn)去,效率低
  • 獲取數(shù)組中實(shí)際元素的個(gè)數(shù)的需求,數(shù)組沒有現(xiàn)成的屬性或方法可用
  • 數(shù)組存儲(chǔ)數(shù)據(jù)的特點(diǎn):有序、可重復(fù)。對(duì)于無序、不可重復(fù)的需求,不能滿足

為解決以上問題、靈活運(yùn)用,提出Java容器的概念

參考:http://www.dbjr.com.cn/article/93955.htm

總結(jié)

到此這篇關(guān)于Java創(chuàng)建數(shù)組、賦值的四種方式(聲明+創(chuàng)建+初始化 )的文章就介紹到這了,更多相關(guān)Java創(chuàng)建數(shù)組、賦值方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot+Redis執(zhí)行l(wèi)ua腳本的5種方式總結(jié)

    SpringBoot+Redis執(zhí)行l(wèi)ua腳本的5種方式總結(jié)

    Lua是一種快速、輕量級(jí)的腳本語言,廣泛應(yīng)用于各種領(lǐng)域,包括數(shù)據(jù)庫,Redis作為一個(gè)內(nèi)嵌Lua解釋器的NoSQL數(shù)據(jù)庫,允許通過Lua腳本在服務(wù)器端執(zhí)行一些復(fù)雜的操作,本文給大家介紹了使用SpringBoot Redis執(zhí)行l(wèi)ua腳本的五種方式,需要的朋友可以參考下
    2023-11-11
  • Java連接PostgreSql數(shù)據(jù)庫及基本使用方式

    Java連接PostgreSql數(shù)據(jù)庫及基本使用方式

    這篇文章主要介紹了Java連接PostgreSql數(shù)據(jù)庫及基本使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 一文帶你搞懂Java中的遞歸

    一文帶你搞懂Java中的遞歸

    這篇文章主要為大家詳細(xì)介紹了Java中的遞歸的實(shí)現(xiàn)以及應(yīng)用,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定幫助,需要的可以參考一下
    2022-10-10
  • Java面向?qū)ο缶幊讨惖睦^承詳解

    Java面向?qū)ο缶幊讨惖睦^承詳解

    這篇文章主要介紹了Java面向?qū)ο缶幊讨惖睦^承,結(jié)合實(shí)例形式較為詳細(xì)的分析了Java面向?qū)ο缶幊填惖母拍睢⒐δ?、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-02-02
  • Java實(shí)現(xiàn)簡易計(jì)算器(逆波蘭表達(dá)式)

    Java實(shí)現(xiàn)簡易計(jì)算器(逆波蘭表達(dá)式)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡易計(jì)算器,逆波蘭表達(dá)式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • java多線程應(yīng)用實(shí)現(xiàn)方法

    java多線程應(yīng)用實(shí)現(xiàn)方法

    以前沒有寫筆記的習(xí)慣,現(xiàn)在慢慢的發(fā)現(xiàn)及時(shí)總結(jié)是多么的重要了,呵呵。雖然才大二,但是也快要畢業(yè)了,要加油
    2012-11-11
  • java通過Callable和Future來接收線程池的執(zhí)行結(jié)果

    java通過Callable和Future來接收線程池的執(zhí)行結(jié)果

    這篇文章主要介紹了java通過Callable和Future來接收線程池的執(zhí)行結(jié)果,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 一文詳細(xì)解析Java?8?Stream?API中的flatMap方法

    一文詳細(xì)解析Java?8?Stream?API中的flatMap方法

    這篇文章主要介紹了Java?8?Stream?API中的flatMap方法的相關(guān)資料,flatMap方法是Java?StreamAPI中的重要中間操作,用于將流中的每個(gè)元素轉(zhuǎn)換為一個(gè)新的流,并將多個(gè)流合并為一個(gè)單一的流,常用于處理嵌套集合和一對(duì)多映射,需要的朋友可以參考下
    2024-12-12
  • HDFS-Hadoop NameNode高可用機(jī)制

    HDFS-Hadoop NameNode高可用機(jī)制

    本文詳細(xì)介紹了Hadoop NameNode高可用機(jī)制的各個(gè)方面內(nèi)容,NameNode 的可用性直接決定了 Hadoop 集群的可用性,感興趣的小伙伴可以參考本文章
    2021-08-08
  • @Autowired注解以及失效的幾個(gè)原因圖文詳解

    @Autowired注解以及失效的幾個(gè)原因圖文詳解

    在微服務(wù)項(xiàng)目中,會(huì)遇到@Autowired注解失效的情況,下面這篇文章主要給大家介紹了關(guān)于@Autowired注解以及失效的幾個(gè)原因的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03

最新評(píng)論