最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中數(shù)組的定義與使用詳解

 更新時(shí)間:2021年11月08日 16:25:43   作者:mrbacker  
這篇文章主要給大家介紹了關(guān)于Java中數(shù)組的定義與使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

數(shù)組的基本概念

如果說(shuō)現(xiàn)在要求你定義100個(gè)整型變量,那么如果按照之前的做法,可能現(xiàn)在定義的的結(jié)構(gòu)如下:

int i1, i2, i3, ... i100;

但是這個(gè)時(shí)候如果按照此類方式定義就會(huì)非常麻煩,因?yàn)檫@些變量彼此之間沒有任何的關(guān)聯(lián),也就是說(shuō)如果現(xiàn)在突然再有一個(gè)要求,要求你輸出這100個(gè)變量的內(nèi)容,意味著你要編寫System.out.println()語(yǔ)句100次。

其實(shí)所謂的數(shù)組指的就是一組相關(guān)類型的變量集合,并且這些變量可以按照統(tǒng)一的方式進(jìn)行操作。數(shù)組本身屬于引用數(shù)據(jù)類型,那么既然是引用數(shù)據(jù)類型,這里面實(shí)際又會(huì)牽扯到內(nèi)存分配,而數(shù)組的定義語(yǔ)法有如下兩類。

  • 數(shù)組動(dòng)態(tài)初始化:
    • 聲明并開辟數(shù)組:
      • 數(shù)據(jù)類型 [] 數(shù)組名稱 = new 數(shù)據(jù)類型[長(zhǎng)度];
      • 數(shù)據(jù)類型 [] 數(shù)組名稱 = new 數(shù)據(jù)類型[長(zhǎng)度];
    • 分布進(jìn)行數(shù)組空間開辟(實(shí)例化)

| Tables | Are |
| ------------- |:-------------?
| 聲明數(shù)組: | 數(shù)組類型 數(shù)組名稱[] = null; | | | 數(shù)組類型 [] 數(shù)組名稱 =null; | | 開辟數(shù)組空間: | 數(shù)組名稱 =new` 數(shù)組類型[長(zhǎng)度]; |

那么當(dāng)數(shù)組開辟空間之后,就可以采用如下的方式的操作:

  • 數(shù)組的訪問(wèn)通過(guò)索引完成,即:“數(shù)組名稱[索引]”,但是需要注意的是,數(shù)組的索引從0開始,所以索引的范圍就是0 ~ 數(shù)組長(zhǎng)度-1,例如開辟了3個(gè)空間的數(shù)組,所以可以使用的索引是:0,1,2,如果此時(shí)訪問(wèn)的時(shí)候超過(guò)了數(shù)組的索引范圍,會(huì)產(chǎn)生java.lang.ArrayIndexOutOfBoundsException 異常信息;
  • 當(dāng)我們數(shù)組采用動(dòng)態(tài)初始化開辟空間后,數(shù)組里面的每一個(gè)元素都是該數(shù)組對(duì)應(yīng)數(shù)據(jù)類型的默認(rèn)值;
  • 數(shù)組本身是一個(gè)有序的集合操作,所以對(duì)于數(shù)組的內(nèi)容操作往往會(huì)采用循環(huán)的模式完成,數(shù)組是一個(gè)有限的數(shù)據(jù)集合,所以應(yīng)該使用 for 循環(huán)。
  • 在 Java 中提供有一種動(dòng)態(tài)取得數(shù)組長(zhǎng)度的方式:數(shù)組名稱.length;

范例: 定義一個(gè)int型數(shù)組

public class ArrayDemo {
	public static void main(String args[]) {
		int data[] = new int[3]; /*開辟了一個(gè)長(zhǎng)度為3的數(shù)組*/
		data[0] = 10; // 第一個(gè)元素
		data[1] = 20; // 第二個(gè)元素
		data[2] = 30; // 第三個(gè)元素
		for(int x = 0; x < data.length; x++) {
			System.out.println(data[x]); //通過(guò)循環(huán)控制索引
		}
	}
}

數(shù)組本身除了聲明并開辟空間之外還有另外一種開辟模式。

范例: 采用分步的模式開辟數(shù)組空間

public class ArrayDemo {
	public static void main(String args[]) {
		int data[] = null; 
		data = new int[3]; /*開辟了一個(gè)長(zhǎng)度為3的數(shù)組*/
		data[0] = 10; // 第一個(gè)元素
		data[1] = 20; // 第二個(gè)元素
		data[2] = 30; // 第三個(gè)元素
		for(int x = 0; x < data.length; x++) {
			System.out.println(data[x]); //通過(guò)循環(huán)控制索引
		}
	}
}

但是千萬(wàn)要記住,數(shù)組屬于引用數(shù)據(jù)類型,所以在數(shù)組使用之前一定要開辟控件(實(shí)例化),如果使用了沒有開辟空間的數(shù)組,則一定會(huì)出現(xiàn) NullPointerException 異常信息:

public class ArrayDemo {
	public static void main(String args[]) {
		int data[] = null; 
		System.out.println(data[x]);
	}
}

這一原則和之前講解的對(duì)象是完全相同的。

數(shù)組在開發(fā)之中一定會(huì)使用,但是像上面的操作很少。在以后的實(shí)際開發(fā)之中,會(huì)更多的使用數(shù)組概念,而直接使用,99%情況下都只是做一個(gè) for 循環(huán)輸出。

數(shù)組引用傳遞

既然數(shù)組屬于引用數(shù)據(jù)類型,那么也一定可以發(fā)生引用傳遞。在這之前首先來(lái)研究一下數(shù)組的空間開辟。

范例: 觀察一道程序

public class ArrayDemo {
	public static void main(String args[]) {
		int data[] = null;
		data = new int[3]; //開辟一個(gè)長(zhǎng)度為3的數(shù)組
		data[0] = 10;
		data[1] = 20;
		data[2] = 30;
	}
}

新建數(shù)組變量

那么既然說(shuō)到了引用數(shù)據(jù)類型了,就一定可以發(fā)生引用傳遞,而現(xiàn)在的引用傳遞的本質(zhì)也一定是:同一塊堆內(nèi)存空間可以被不同的棧內(nèi)存所指向。

范例: 定義一個(gè)程序

public class ArrayDemo {
	public static void main(String args[]) {
		int data[] = null;
		data = new int[3]; //開辟一個(gè)長(zhǎng)度為3的數(shù)組
		int temp[] = null; //聲明對(duì)象
		data[0] = 10;
		data[1] = 20;
		data[2] = 30;
		temp = data;  //int temp[] = data;
		temp[0] = 99;
		for(int i = 0; i < temp.length; i++) {
			System.out.println(data[i]);
		}
	}
}

這里寫圖片描述

引用傳遞分析都是一個(gè)套路。同一塊堆內(nèi)存被不同的棧內(nèi)存所指向。

數(shù)組靜態(tài)初始化

在之前所進(jìn)行的數(shù)組定義都有一個(gè)明顯特點(diǎn):數(shù)組先開辟內(nèi)存空間,而后再使用索引進(jìn)行內(nèi)容的設(shè)置,實(shí)際上這種做法都叫做動(dòng)態(tài)初始化,而如果希望數(shù)組在定義的時(shí)候可以同時(shí)出現(xiàn)設(shè)置內(nèi)容,那么就可以采用靜態(tài)初始化完成。

數(shù)組的靜態(tài)初始化一共分為以下兩種類型:

Tables Are
簡(jiǎn)化格式: 數(shù)據(jù)類型 數(shù)組名稱 = {值, 值,…}
完整格式: 數(shù)據(jù)類型 數(shù)組名稱 = new 數(shù)據(jù)類型[] {值, 值,…}

TablesAre簡(jiǎn)化格式:數(shù)據(jù)類型 數(shù)組名稱 = {值, 值,…}完整格式:數(shù)據(jù)類型 數(shù)組名稱 = new 數(shù)據(jù)類型[] {值, 值,…}

范例: 采用靜態(tài)初始化定義數(shù)組

public class ArrayDemo {
	public static void main(String args[]) {
		int data[] = {1, 2, 4, 545, 11, 32, 13131, 4444};
		for(int i = 0; i < data.length; i++) {
			System.out.println(data[i]);
		}
	}
}

在開發(fā)之中,對(duì)于靜態(tài)數(shù)組的初始化強(qiáng)烈建議使用完整語(yǔ)法模式,這樣可以輕松地使用匿名數(shù)組這一概念。

public class ArrayDemo {
	public static void main(String args[]) {
		System.out.println(new int[] {1, 2, 4, 545, 11, 32, 13131, 4444}.length);
	}
}

以后使用靜態(tài)方式定義數(shù)組的時(shí)候一定要寫上完整格式。

數(shù)組最大的缺陷:長(zhǎng)度固定。

二維數(shù)組

在之前所使用的數(shù)組發(fā)現(xiàn)只需要一個(gè)索引就可以進(jìn)行訪問(wèn),那么這樣的數(shù)組實(shí)際上非常像一個(gè)數(shù)據(jù)行的概念。

索引 0 1 2 3 4 5 6 7 8
內(nèi)容 12 23 44 56 90 445 49 99 1010

現(xiàn)在痛過(guò)一個(gè)索引就可以取得唯一的一個(gè)記錄。所以這樣的數(shù)組可以簡(jiǎn)單理解為一維數(shù)組,而二維數(shù)組本質(zhì)上指的是行列集合,也如果要確定某一個(gè)數(shù)據(jù)需要行索引和列索引來(lái)進(jìn)行定位。

索引 0 1 2 3 4 5 6 7 8
0 12 23 44 56 90 445 49 99 1010
1 2 3 41 56 9 45 49 99 10

如果要想確定一個(gè)數(shù)據(jù)則數(shù)據(jù)使用的結(jié)構(gòu)是“數(shù)組名稱[行索引][列索引]”,所以這樣的結(jié)構(gòu)就是一個(gè)表的結(jié)構(gòu)。

那么對(duì)二維數(shù)組的定義有兩種聲明形式:

  • 數(shù)組的動(dòng)態(tài)初始化:數(shù)據(jù)類型 對(duì)象數(shù)組[][] = new 數(shù)據(jù)類型[行個(gè)數(shù)][列個(gè)數(shù)];
  • 數(shù)組的靜態(tài)初始化:數(shù)據(jù)類型 對(duì)象數(shù)組[][] = new 數(shù)據(jù)類型[行個(gè)數(shù)][列個(gè)數(shù)]{{值, 值,…}, {值, 值,…},…};

數(shù)組的數(shù)組就是二維數(shù)組。

范例: 定義一個(gè)二維數(shù)組

public class ArrayDemo {
	public static void main(String args[]) {
		//此時(shí)的數(shù)組并不是一個(gè)等列數(shù)組
		int data[][] = new int[][] {
			{1, 2, 3}, {4, 5}, {6, 7, 8, 9}};
		//如果在進(jìn)行輸出的時(shí)候一定要使用雙重循環(huán),
		//外部的循環(huán)控制輸出的行數(shù),而內(nèi)部的循環(huán)控制輸出列數(shù)
		for(int i = 0; i < data.length; i++) {
			for(int j = 0; j < data[i].length; j++) {
				System.out.print("data[" + i + "][" + j + "]=" + data[i][j] + "、");
			}
			System.out.println();
		}
	}
}

于輸出麻煩,所以可以忽略了,在進(jìn)行開發(fā)之中,出現(xiàn)二位數(shù)組的幾率并不高。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Spring中的兩種代理JDK和CGLIB的區(qū)別淺談

    Spring中的兩種代理JDK和CGLIB的區(qū)別淺談

    本篇文章中主要介紹了Spring中的兩種代理JDK和CGLIB的區(qū)別淺談,詳解的介紹了JDK和CGLIB的原理和方法,有需要的朋友可以了解一下
    2017-04-04
  • Spring JdbcTemplate實(shí)現(xiàn)添加與查詢方法詳解

    Spring JdbcTemplate實(shí)現(xiàn)添加與查詢方法詳解

    JdbcTemplate是Spring框架自帶的對(duì)JDBC操作的封裝,目的是提供統(tǒng)一的模板方法使對(duì)數(shù)據(jù)庫(kù)的操作更加方便、友好,效率也不錯(cuò),這篇文章主要介紹了Spring?JdbcTemplate執(zhí)行數(shù)據(jù)庫(kù)操作,需要的朋友可以參考下
    2022-11-11
  • java Class文件內(nèi)部結(jié)構(gòu)解析過(guò)程詳解

    java Class文件內(nèi)部結(jié)構(gòu)解析過(guò)程詳解

    java class的文件結(jié)構(gòu),java class文件結(jié)構(gòu)是基于字節(jié)流的,用unicode進(jìn)行編碼,下面說(shuō)說(shuō)java Class文件內(nèi)部結(jié)構(gòu)分析
    2013-11-11
  • 詳解使用Jenkins自動(dòng)編譯部署web應(yīng)用

    詳解使用Jenkins自動(dòng)編譯部署web應(yīng)用

    本篇主要介紹基于Jenkins實(shí)現(xiàn)持續(xù)集成的方式,通過(guò)案例介紹線上自動(dòng)編譯及部署的配置過(guò)程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Java跨域問(wèn)題分析與解決方法詳解

    Java跨域問(wèn)題分析與解決方法詳解

    這篇文章主要介紹了Java跨域問(wèn)題分析與解決方法,跨域問(wèn)題是在Web應(yīng)用程序中,由于同源策略的限制,導(dǎo)致瀏覽器無(wú)法發(fā)送跨域請(qǐng)求,也無(wú)法獲取跨域響應(yīng)的問(wèn)題,感興趣想要詳細(xì)了解可以參考下文
    2023-05-05
  • += 和 ++ 操作符區(qū)別簡(jiǎn)單介紹

    += 和 ++ 操作符區(qū)別簡(jiǎn)單介紹

    這篇文章主要介紹了+= 和 ++ 操作符區(qū)別簡(jiǎn)單介紹的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • SpringBoot中驗(yàn)證用戶上傳的圖片資源的方法

    SpringBoot中驗(yàn)證用戶上傳的圖片資源的方法

    這篇文章主要介紹了在SpringBoot中驗(yàn)證用戶上傳的圖片資源,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Spring Boot中使用jdbctemplate 操作MYSQL數(shù)據(jù)庫(kù)實(shí)例

    Spring Boot中使用jdbctemplate 操作MYSQL數(shù)據(jù)庫(kù)實(shí)例

    本篇文章主要介紹了Spring Boot中使用jdbctemplate 操作MYSQL數(shù)據(jù)庫(kù)實(shí)例,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-04-04
  • SpringBoot導(dǎo)入Druid運(yùn)行失敗問(wèn)題

    SpringBoot導(dǎo)入Druid運(yùn)行失敗問(wèn)題

    這篇文章主要介紹了SpringBoot導(dǎo)入Druid運(yùn)行失敗,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • NoHttpResponseException問(wèn)題分析解決記錄

    NoHttpResponseException問(wèn)題分析解決記錄

    這篇文章主要為大家介紹了NoHttpResponseException問(wèn)題分析解決記錄,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08

最新評(píng)論

阜新市| 谢通门县| 诸暨市| 宜宾县| 五家渠市| 嘉峪关市| 台南市| 聂荣县| 灵山县| 平潭县| 明光市| 如东县| 疏勒县| 丹巴县| 肥西县| 翁牛特旗| 临潭县| 抚州市| 稷山县| 尼木县| 龙州县| 阳曲县| 旺苍县| 昆山市| 汉源县| 万年县| 泸州市| 滕州市| 华池县| 闸北区| 大冶市| 康马县| 阳原县| 萝北县| 佛山市| 班玛县| 五莲县| 昆明市| 靖边县| 锦州市| 江阴市|