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

帶你粗略了解Java數(shù)組的使用

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

數(shù)組的定義

數(shù)組:可以看作相同類型元素的一個(gè)集合,且在內(nèi)存中是一塊連續(xù)的內(nèi)存空間

注意:

C語言中,數(shù)組的內(nèi)存在棧上

在Java中,數(shù)組的內(nèi)存在堆上

數(shù)組的創(chuàng)建及初始化:

1.數(shù)組的創(chuàng)建:

基本語法格式:

T[ ] 數(shù)組名 = new T[N];
.
① T,即Type,表示:數(shù)組中存放元素的類
② T[ ], 表示:數(shù)組的類型
③ N, 表示:數(shù)組的長(zhǎng)度

舉例:

創(chuàng)建一個(gè)可以容納10個(gè)int類型元素的數(shù)組
int[] array1 = new int[10]; 
創(chuàng)建一個(gè)可以容納5個(gè)double類型元素的數(shù)組
double[] array2 = new double[5];

2.數(shù)組的初始化

數(shù)組的初始化主要分為動(dòng)態(tài)初始化和靜態(tài)初始化

①動(dòng)態(tài)初始化:

基本語法格式:

int[ ] array = new int[10]
在創(chuàng)建數(shù)組時(shí),直接指定數(shù)組中元素的個(gè)數(shù)

②靜態(tài)初始化:

基本語法格式:

int[ ] array1 = new int[ ] {0,1,2,3,4,5,6};
double[ ] array2 = new double[ ]{1.0, 2.0, 3.0, 4.0,5.0};

注意事項(xiàng):

  • 如果沒有對(duì)數(shù)組進(jìn)行初始化,數(shù)組中元素有其默認(rèn)值

如果數(shù)組中存儲(chǔ)元素類型為基類類型,默認(rèn)值為基類類型對(duì)應(yīng)的默認(rèn)值

如果數(shù)組中存儲(chǔ)元素類型為引用類型,默認(rèn)值為null

  • 靜態(tài)初始化無需指定數(shù)組的長(zhǎng)度,編譯器在編譯時(shí)會(huì)根據(jù){ }中元素個(gè)數(shù)來確定數(shù)組的長(zhǎng)度
  • 靜態(tài)初始化時(shí),{ }中數(shù)據(jù)類型必須與[ ]前數(shù)據(jù)類型一致、
  • 靜態(tài)初始化可以簡(jiǎn)寫,省去后面的new T[ ]
  • 如果不確定數(shù)組當(dāng)中內(nèi)容時(shí),使用動(dòng)態(tài)初始化,否則建議使用靜態(tài)態(tài)初始化

數(shù)組的使用

1.數(shù)組的長(zhǎng)度:

數(shù)組的長(zhǎng)度屬性: 每個(gè)數(shù)組都具有長(zhǎng)度,而且是固定的,Java中賦予了數(shù)組的一個(gè)屬性,可以獲取到數(shù)組的長(zhǎng)度,語句為:數(shù)組名.length

int[ ] array = new int[ ]{1,2,3,4,5,6};
int len = array.length;
此處的 length 是屬性

2.數(shù)組的訪問:

數(shù)組在內(nèi)存中是一段連續(xù)的空間,空間的編號(hào)都是從0開始的,依次遞增,該編號(hào)稱為數(shù)組的下標(biāo),數(shù)組可以通過下標(biāo)訪問其任意位置的元素

索引:每一個(gè)存儲(chǔ)到數(shù)組的元素,都會(huì)自動(dòng)的擁有一個(gè)編號(hào),從0開始,這個(gè)自動(dòng)編號(hào)稱為數(shù)組索引 (index),可以通過數(shù)組的索引訪問到數(shù)組中的元素
由數(shù)組的長(zhǎng)度知,屬性 length 的執(zhí)行結(jié)果是數(shù)組的長(zhǎng)度,int類型結(jié)果,則數(shù)組的最大索引值為數(shù)組名.length-1

格式:
數(shù)組名[索引]

數(shù)組名[索引] = 數(shù)值,為數(shù)組中的元素賦值變量 = 數(shù)組名[索引],獲取出數(shù)組中的元素
public static void main(String[] args) {
	//定義存儲(chǔ)int類型數(shù)組,賦值元素1,2,3,4,5 
	int[] arr = {1,2,3,4,5};
	//為0索引元素賦值為6 
	arr[0] = 6; 
	//獲取數(shù)組0索引上的元素 
	int i = arr[0]; 
	System.out.println(i); 
	//直接輸出數(shù)組0索引元素 
	System.out.println(arr[0]); 
}

注意事項(xiàng):

  • 數(shù)組是一段連續(xù)的內(nèi)容空間,因此支持隨機(jī)訪問,即通過下標(biāo)訪問快速訪問數(shù)組中任意位置的元素
  • 下標(biāo)從0開始,介于[0, N) 之間不包含N,N為元素個(gè)數(shù),不能越界,否則會(huì)報(bào)出下標(biāo)越界異常

3.數(shù)組的遍歷:

“遍歷”:是指將數(shù)組中的所有元素都訪問一遍

這里用打印的方式展示遍歷:

int[] array = new int[]{1,2,3,4,5,6};
int len = array.length;
for(int i=0;i<len;i++){
	System.out.println(array[i]);
}

延申:

Java中的打印方式,出了上述的,還有foreach,即:for( 遍歷的數(shù)組內(nèi)容 :數(shù)組本身)

代碼如下:

for (int val:array) {
	System.out.println(val+" ");
}

二者區(qū)別:

for循環(huán)遍歷打印數(shù)組,需要索引,而foreach不需要,若單純的想要遍歷數(shù)組,用foreach即可

4.使用數(shù)組交換兩個(gè)整數(shù)

//使用數(shù)組實(shí)現(xiàn)交換兩個(gè)整數(shù)
    public static void swap(int[] array){
	    int tmp = array[0];
	    array[0] = array[1];
	    array[1] = tmp;
    }
    public static void main(String[] args) {
        int[] array1 = {10,20};
        System.out.println("交換前:"+array1[0]+" "+array1[1]);
        swap(array1);
        System.out.println("交換后:"+array1[0]+" "+array1[1]);
    }

輸出結(jié)果:
交換前:10 20
交換后:20 10

交換原理:

在這里插入圖片描述

5.以字符串的形式輸出數(shù)組:

使用方法toString 需要調(diào)用包 java.util.Arrays

int[] arr = {1,2,3,4,5,6};
String ret = Arrays.toString(arr);
System.out.println(ret);

理解引用類型:

1.基本類型變量與引用類型變量的區(qū)別

基本數(shù)據(jù)類型創(chuàng)建的變量,稱為基本變量,該變量空間中直接存放的是其所對(duì)應(yīng)的值;
引用數(shù)據(jù)類型創(chuàng)建的變量,一般稱為對(duì)象的引用,其空間中存儲(chǔ)的是對(duì)象所在空間的地址

public static void func() {
	 int a = 10;
	 int b = 20;
	 int[] arr = new int[]{1,2,3};
}

在上述代碼中:a,b,arr,都是函數(shù)內(nèi)部的變量,因此其空間都在main方法對(duì)應(yīng)的棧幀中分配;

a、b是內(nèi)置類型的變量,因此其空間中保存的就是給該變量初始化的值。

array是數(shù)組類型的引用變量,因?yàn)槎紴橐闷鋬?nèi)部保存的是數(shù)組在堆空間中的首地址

在這里插入圖片描述

引用變量并不直接存儲(chǔ)對(duì)象本身,而存儲(chǔ)的是對(duì)象在堆中空間的起始地址,通過該地址,引用變量便可以去操作對(duì)象。有點(diǎn)類似C語言中的指針,但是Java中引用要比指針的操作更簡(jiǎn)單

2.認(rèn)識(shí)null

null 在 Java 中表示 “空引用”,也就是一個(gè)不指向?qū)ο蟮囊?,即:空?duì)象

int[ ] arr = null; //arr引用的是一個(gè)空對(duì)象
System.out.println(arr[0]);
此處不能訪問0下標(biāo),因?yàn)闆]有所指對(duì)象

null 的作用類似于 C 語言中的 NULL (空指針), 都是表示一個(gè)無效的內(nèi)存位置,因此不能對(duì)這個(gè)內(nèi)存進(jìn)行任何讀寫操作,Java 中并沒有約定 null 和 0 號(hào)地址的內(nèi)存有任何關(guān)聯(lián)

3.數(shù)組作為方法的返回值

將一個(gè)數(shù)組內(nèi)容擴(kuò)大二倍:

public static int[] fun(int[] array){
	int[] tmp = new int[array.length];
	for (int i = 0; i <array.length; i++) {
	    tmp[i] = array[i] * 2;
}
	return tmp;
}
public static void main(String[] args) {
	int[] array = {1,2,3,4,5,6,7,8};
	int[] ret = fun(array);
	System.out.println(Arrays.toString(ret));
}

二維數(shù)組:

二維數(shù)組本質(zhì)上也就是一維數(shù)組, 只不過每個(gè)元素又是一個(gè)一維數(shù)組

即:數(shù)組的數(shù)組就是一個(gè)二維數(shù)組

語法格式:
數(shù)據(jù)類型[ ][ ] 數(shù)組名稱 = new 數(shù)據(jù)類型 [行數(shù)][列數(shù)] { 初始化數(shù)據(jù) };

在這里插入圖片描述

1.創(chuàng)建二維數(shù)組及初始化:

int[][] array1 = new int[10][10];
int array2[][] = new int[10][10];
int array3[][] = { { 1, 1, 1 }, { 2, 2, 2 } };
int array4[][] = new int[][] { { 1, 1, 1 }, { 2, 2, 2 } };

2.二維數(shù)組長(zhǎng)度:

// 獲取二維數(shù)組的第一維長(zhǎng)度(3)
int len1 = array.length;
// 獲取二維數(shù)組的第一維的第一個(gè)數(shù)組長(zhǎng)度(1)
int len2 = array[0].length;

進(jìn)行開發(fā)之中,出現(xiàn)二位數(shù)組的幾率并不高

3.二維數(shù)組的打?。?/h3>
  • 方法① foreach
int[][] array = { {1,2,3}, {4,5,6} };
	for (int[] tmp : array) {
		for (int x: tmp) {
			System.out.print(x+" ");
		}
		System.out.println();
	}
  • 方法② for循環(huán)
for (int i = 0; i < array.length; i++) {
	for (int j = 0; j < array[i].length; j++) {
		System.out.print(array[i][j]+" ");
	}
	System.out.println();
}

打印結(jié)果:

在這里插入圖片描述

  • 方法③ deeptoString
int[][] array = {{1, 2, 3}, {4, 5, 6}};
System.out.println(Arrays.deepToString(array));

打印結(jié)果:

在這里插入圖片描述

4.不規(guī)則的二維數(shù)組:

int[ ][ ] array = new int[2][ ];

注意:C語言中是可以指定列,行可自行推導(dǎo);Java中,行必須指定,列是不可以自動(dòng)推導(dǎo)的

此時(shí)若用上述 for 循環(huán)來打印數(shù)組,便會(huì)出現(xiàn)異常:

在這里插入圖片描述

分析如下:

在這里插入圖片描述

Array類:

java.util.Arrays 類提供的所有方法都是靜態(tài)的,能方便地操作數(shù)組,

由于數(shù)組對(duì)象本身并沒有什么方法可以供我們調(diào)用,但API中提供了一個(gè)工具類Arrays供我們使用,從而可以對(duì)數(shù)據(jù)對(duì)象進(jìn)行一些基本的操作。

Arrays類中的方法都是static修飾的靜態(tài)方法,在使用的時(shí)候可以直接使用類名進(jìn)行調(diào)用,而"不用"使用對(duì)象來調(diào)用 (注意:是"不用"而不是"不能")

Array具有的功能這里就不一一列舉了,可以去JDK幫助文檔自行了解

總結(jié)

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

相關(guān)文章

  • java中jvm逃逸問題分析

    java中jvm逃逸問題分析

    本篇文章給大家詳細(xì)總結(jié)了java中jvm逃逸問題的相關(guān)內(nèi)容,有興趣的朋友可以根據(jù)小編一起學(xué)習(xí)下。
    2018-02-02
  • SpringBoot Starter依賴原理與實(shí)例詳解

    SpringBoot Starter依賴原理與實(shí)例詳解

    SpringBoot中的starter是一種非常重要的機(jī)制,能夠拋棄以前繁雜的配置,將其統(tǒng)一集成進(jìn)starter,應(yīng)用者只需要在maven中引入starter依賴,SpringBoot就能自動(dòng)掃描到要加載的信息并啟動(dòng)相應(yīng)的默認(rèn)配置。starter讓我們擺脫了各種依賴庫(kù)的處理,需要配置各種信息的困擾
    2022-09-09
  • maven?傳遞依賴的實(shí)現(xiàn)

    maven?傳遞依賴的實(shí)現(xiàn)

    本文主要介紹了Maven中傳遞依賴的處理方式,如scope=compile影響依賴傳遞,使用排除不需要的依賴,以及如何通過查看依賴樹解決運(yùn)行時(shí)錯(cuò)誤,特別是在依賴排除后可能導(dǎo)致的運(yùn)行時(shí)缺少必需包的問題,感興趣的可以了解一下
    2024-10-10
  • Java垃圾回收機(jī)制的finalize方法實(shí)例分析

    Java垃圾回收機(jī)制的finalize方法實(shí)例分析

    這篇文章主要介紹了Java垃圾回收機(jī)制的finalize方法,結(jié)合實(shí)例形式分析了finalize方法的特點(diǎn)及在垃圾回收機(jī)制中的相關(guān)操作技巧,需要的朋友可以參考下
    2019-08-08
  • Java實(shí)現(xiàn)獲取銀行卡所屬銀行,驗(yàn)證銀行卡號(hào)是否正確的方法詳解

    Java實(shí)現(xiàn)獲取銀行卡所屬銀行,驗(yàn)證銀行卡號(hào)是否正確的方法詳解

    這篇文章主要介紹了Java實(shí)現(xiàn)獲取銀行卡所屬銀行,驗(yàn)證銀行卡號(hào)是否正確的方法,結(jié)合實(shí)例形式詳細(xì)分析了java判斷銀行卡歸屬地及有效性的原理與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-09-09
  • spring,mybatis事務(wù)管理配置與@Transactional注解使用詳解

    spring,mybatis事務(wù)管理配置與@Transactional注解使用詳解

    這篇文章主要介紹了spring,mybatis事務(wù)管理配置與@Transactional注解使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • springBoot基于webSocket實(shí)現(xiàn)掃碼登錄

    springBoot基于webSocket實(shí)現(xiàn)掃碼登錄

    最近做了個(gè)新項(xiàng)目,涉及到掃碼登錄。之前項(xiàng)目使用的是 ajax輪詢的方式。感覺太low了。所以這次用webSocket的方式進(jìn)行實(shí)現(xiàn),感興趣的可以了解一下
    2021-06-06
  • java:程序包javafx.geometry不存在問題及解決

    java:程序包javafx.geometry不存在問題及解決

    這篇文章主要介紹了java:程序包javafx.geometry不存在問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • SpringBoot整合Lombok的步驟詳解

    SpringBoot整合Lombok的步驟詳解

    在Java開發(fā)中,我們經(jīng)常需要編寫大量的模板代碼,比如getter和setter方法、構(gòu)造函數(shù)、toString、equals和hashCode等,本文將詳細(xì)介紹如何在Spring Boot項(xiàng)目中整合Lombok,以及Lombok的一些常用注解,需要的朋友可以參考下
    2024-11-11
  • Java函數(shù)式編程(一):你好,Lambda表達(dá)式

    Java函數(shù)式編程(一):你好,Lambda表達(dá)式

    這篇文章主要介紹了Java函數(shù)式編程(一):你好,Lambda表達(dá)式,本文講解了新老函數(shù)式編程的一些變化,需要的朋友可以參考下
    2014-09-09

最新評(píng)論

桓台县| 镇远县| 山阳县| 咸宁市| 三江| 津市市| 湘阴县| 林州市| 平遥县| 喜德县| 浏阳市| 巴楚县| 称多县| 镇雄县| 乐至县| 平阴县| 鞍山市| 得荣县| 巴里| 固阳县| 大姚县| 丰都县| 南康市| 洞头县| 瑞安市| 阿瓦提县| 监利县| 信丰县| 新乐市| 金平| 绥中县| 个旧市| 长兴县| 简阳市| 股票| 海口市| 永川市| 新兴县| 潼关县| 夏邑县| 广河县|