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

Java基礎(chǔ)之?dāng)?shù)組超詳細(xì)知識(shí)總結(jié)

 更新時(shí)間:2021年05月07日 11:14:07   作者:一直小菜雞~  
這篇文章主要介紹了Java基礎(chǔ)之?dāng)?shù)組詳解,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有很好的幫助,需要的朋友可以參考下

一、一維數(shù)組

1、Java語言中的數(shù)組是一種 引用數(shù)據(jù)類型。不屬于基本數(shù)據(jù)類型。數(shù)組的父類Object。

2、數(shù)組實(shí)際上是一個(gè)容器,可以同時(shí)容納多個(gè)元素。(數(shù)組是一個(gè)數(shù)據(jù)的集合

3、數(shù)組當(dāng)中可以存儲(chǔ)“基本數(shù)據(jù)類型”的數(shù)據(jù),也可以存儲(chǔ)“引用數(shù)據(jù)類型”的數(shù)據(jù)。

4、數(shù)組因?yàn)槭?strong>引用類型,所以數(shù)組對象存儲(chǔ)在 堆內(nèi)存 當(dāng)中。(數(shù)組是存儲(chǔ)在當(dāng)中的)

5、數(shù)組當(dāng)中如果存儲(chǔ)的是“java對象”的話,實(shí)際上存儲(chǔ)的是對象的“引用(內(nèi)存地址)”,數(shù)組中不能直接存儲(chǔ)java對象。

6、數(shù)組一旦創(chuàng)建,在java中規(guī)定,長度不可變。(數(shù)組長度不可變

7、數(shù)組的分類:一維數(shù)組二維數(shù)組、三維數(shù)組、多維數(shù)組…(一維數(shù)組較多,二維數(shù)組偶爾使用?。?/p>

8、所有的數(shù)組對象都有 length 屬性(java自帶的),用來獲取數(shù)組中元素的個(gè)數(shù)

9、java中的數(shù)組要求數(shù)組中元素的 類型統(tǒng)一。

比如:int類型數(shù)組只能存儲(chǔ)int類型,Person類型數(shù)組只能存儲(chǔ)Person類型。

10、數(shù)組在內(nèi)存方面存儲(chǔ)的時(shí)候,數(shù)組中的元素內(nèi)存地址(存儲(chǔ)的每一個(gè)元素都是有規(guī)則的挨著排列的)是連續(xù)的。內(nèi)存地址連續(xù)。(數(shù)組特點(diǎn))

11、所有的數(shù)組都是拿“第一個(gè)小方框的內(nèi)存地址”作為整個(gè)數(shù)組對象的內(nèi)存地址。
(數(shù)組中首元素的內(nèi)存地址作為整個(gè)數(shù)組對象的內(nèi)存地址。)

12、數(shù)組中每一個(gè)元素都是有下標(biāo)的,下標(biāo)從0開始,以1遞增。最后一個(gè)元素的下標(biāo)是:length - 1

13、數(shù)組這種數(shù)據(jù)結(jié)構(gòu)的優(yōu)點(diǎn)和缺點(diǎn)是什么?

  • 優(yōu)點(diǎn)查詢/查找/檢索某個(gè)下標(biāo)上的元素時(shí)效率極高。

原因:

第一:每一個(gè)元素的內(nèi)存地址在空間存儲(chǔ)上是連續(xù)的。

第二:每一個(gè)元素類型相同,所以占用空間大小一樣。

第三:知道第一個(gè)元素內(nèi)存地址,知道每一個(gè)元素占用空間的大小,又知道下標(biāo),所以通過一個(gè)數(shù)學(xué)表達(dá)式就可以計(jì)算出某個(gè)下標(biāo)上元素的內(nèi)存地址。直接通過內(nèi)存地址定位元素,所以數(shù)組的檢索效率是最高的。

注意:

數(shù)組中存儲(chǔ)100個(gè)元素,或者存儲(chǔ)100萬個(gè)元素,在元素查詢/檢索方面,效率是相同的,
因?yàn)閿?shù)組中元素查找的時(shí)候不會(huì)一個(gè)一個(gè)找,是通過數(shù)學(xué)表達(dá)式計(jì)算出來的。(算出一個(gè)
內(nèi)存地址,直接定位的。)

  • 缺點(diǎn)

第一:由于為了保證數(shù)組中每個(gè)元素的內(nèi)存地址連續(xù),所以在數(shù)組上隨機(jī)刪除或者增加元素的時(shí)候,效率較低,因?yàn)殡S機(jī)增刪元素會(huì)涉及到后面元素統(tǒng)一向前或者向后位移的操作。

第二:數(shù)組不能存儲(chǔ)大數(shù)據(jù)量。因?yàn)楹茈y在內(nèi)存空間上找到一塊特別大的連續(xù)的內(nèi)存空間。

注意:

對于數(shù)組中最后一個(gè)元素的增刪,是沒有效率影響的。

14、怎么聲明/定義一個(gè)一維數(shù)組?

語法格式:

int[] array1;
double[] array2;
boolean[] array3;
String[] array4;
Object[] array5;

15、怎么初始化一個(gè)一維數(shù)組呢?

包括兩種方式:靜態(tài)初始 化一維數(shù)組,動(dòng)態(tài)初始化 一維數(shù)組。

靜態(tài)初始化語法格式:

java風(fēng)格:

int[] array = {100, 2100, 300, 55};

C++風(fēng)格:

int array[] = {100, 2100, 300, 55};

動(dòng)態(tài)初始化語法格式:

Java風(fēng)格:

int[] array = new int[5]; // 這里的5表示數(shù)組的元素個(gè)數(shù)。
// 初始化一個(gè)5個(gè)長度的int類型數(shù)組,每個(gè)元素默認(rèn)值0
String[] names = new String[6]; // 初始化6個(gè)長度的String類型數(shù)組,每個(gè)元素默認(rèn)值null。

C++風(fēng)格:

int array[] = new int[5]; // 這里的5表示數(shù)組的元素個(gè)數(shù)。
// 初始化一個(gè)5個(gè)長度的int類型數(shù)組,每個(gè)元素默認(rèn)值0
String names[] = new String[6]; // 初始化6個(gè)長度的String類型數(shù)組,每個(gè)元素默認(rèn)值null。

注意:

采用動(dòng)態(tài)初始化,數(shù)組會(huì)賦默認(rèn)值!

注意:
和c++的區(qū)別

c++定義數(shù)組

//靜態(tài)初始化
int a[10];
int a[] = {1, 2, 3, 4};
int a[100] = {1, 2, 3, 4};

//動(dòng)態(tài)初始化
int *a = new int[10];

16、怎么修改一維數(shù)組某一個(gè)元素的值?

語法格式:

數(shù)組名[下標(biāo)] = 值;

eg.
a[1] = 100;

17、 什么時(shí)候采用靜態(tài)初始化方式,什么時(shí)候使用動(dòng)態(tài)初始化方式呢?

  • 當(dāng)你創(chuàng)建數(shù)組的時(shí)候,確定數(shù)組中存儲(chǔ)哪些具體的元素時(shí),采用靜態(tài)初始化方式。
  • 當(dāng)你創(chuàng)建數(shù)組的時(shí)候,不確定將來數(shù)組中存儲(chǔ)哪些數(shù)據(jù),你可以采用動(dòng)態(tài)初始化的方式,預(yù)先分配內(nèi)存空間。

18、方法形參為一維數(shù)組如何傳參?

public void print(int[] num){
	for (int i = 0; i < num.length; i++){
		System.out.println(num[i]);
	}
}

傳參:
int[] a = {1, 2, 3, 4};
print(a);

還可以這樣傳參:

傳靜態(tài)數(shù)組
print(new int[]{1, 2, 3, 4});

new int[]{1, 2, 3, 4}還可以.length是一個(gè)數(shù)組對象!

19、數(shù)組擴(kuò)容(效率低)

方法:(System類的方法)

/**
*@src	拷貝源
*@srcPos	拷貝源起始位置
*@dest	目標(biāo)數(shù)組
*@destPos	目標(biāo)數(shù)組起始位置
*@length	拷貝長度
*/
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

eg.

int[] a = {1, 2, 3, 4};
int[] b = new int [10];
System.arraycopy(a, 0, b, 0, aa.length);
//從a數(shù)組下標(biāo)為0開始拷貝,拷貝到從b數(shù)組下標(biāo)為0開始存入,長度為整個(gè)a數(shù)組

二、二維數(shù)組

1、二維數(shù)組其實(shí)是一個(gè) 特殊的一維數(shù)組,特殊在這個(gè)一維數(shù)組當(dāng)中的每一個(gè)元素是一個(gè)一維數(shù)組。

2、三維數(shù)組是什么?

三維數(shù)組是一個(gè)特殊的二維數(shù)組,特殊在這個(gè)二維數(shù)組 中每一個(gè)元素是一個(gè)一維數(shù)組

實(shí)際的開發(fā)中使用最多的就是一維數(shù)組。二維數(shù)組也很少使用。三維數(shù)組幾乎不用。

3、二維數(shù)組靜態(tài)初始化

int[][] array = {
        {1,1,1},
        {2,3,4,5},
        {0,0,0,0},
        {2,3,4,5},
        {2,3,4,5},
        {2,3,4,5},
        {2,3,4,5}
};

4、二維數(shù)組動(dòng)態(tài)初始化

eg.

int[][] array = new int[3][4];

5、關(guān)于二維數(shù)組中元素的:讀和改。

a[二維數(shù)組中的一維數(shù)組的下標(biāo)][一維數(shù)組的下標(biāo)]

a[0][0]:表示第1個(gè)一維數(shù)組中的第1個(gè)元素。

a[3][100]:表示第4個(gè)一維數(shù)組中的第101個(gè)元素。

注意:

對于a[3][100]來說,其中 a[3] 是一個(gè)整體。[100]是前面a[3]執(zhí)行結(jié)束的結(jié)果然后再下標(biāo)100。

6、方法形參為二維數(shù)組如何傳參?

public void print(int[][] num){
	for (int i = 0; i < num.length; i++){
		for (int j = 0; j < num[i].length; j++){
			System.out.println(num[i][j]);
		}
	}
}

傳參:
 int[][] a = {{1,2,3,4},{4,5,6,76},{1,23,4}};
print(a);

還可以這樣傳參:

傳靜態(tài)數(shù)組
print(new int[][]{{1,2,3,4},{4,5,6,76},{1,23,4}});

new int[][]{{1,2,3,4},{4,5,6,76},{1,23,4}}還可以.length是一個(gè)數(shù)組對象!

三、總結(jié)

1. 數(shù)組的優(yōu)點(diǎn)和缺點(diǎn),并且要理解為什么。

第一:空間存儲(chǔ)上,內(nèi)存地址是連續(xù)的。

第二:每個(gè)元素占用的空間大小相同。

第三:知道首元素的內(nèi)存地址。

第四:通過下標(biāo)可以計(jì)算出偏移量。
通過一個(gè)數(shù)學(xué)表達(dá)式,就可以快速計(jì)算出某個(gè)下標(biāo)位置上元素的內(nèi)存地址,
直接通過內(nèi)存地址定位,效率非常高。

優(yōu)點(diǎn):檢索效率高。
缺點(diǎn):隨機(jī)增刪效率較低,數(shù)組無法存儲(chǔ)大數(shù)據(jù)量。
注意:數(shù)組最后一個(gè)元素的增刪效率不受影響。

2. 一維數(shù)組的靜態(tài)初始化和動(dòng)態(tài)初始化

靜態(tài)初始化:

int[] arr = {1,2,3,4};

Object[] objs = {new Object(), new Object(), new Object()};

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

int[] arr = new int[4]; // 4個(gè)長度,每個(gè)元素默認(rèn)值0

Object[] objs = new Object[4]; // 4個(gè)長度,每個(gè)元素默認(rèn)值null

3. 一維數(shù)組的遍歷

for(int i = 0; i < arr.length; i++){
	System.out.println(arr[i]);
}

4. 二維數(shù)組的靜態(tài)初始化和動(dòng)態(tài)初始化

靜態(tài)初始化:

int[][] arr = {
		{1,2,34},
		{54,4,34,3},
		{2,34,4,5}
};

Object[][] arr = {
		{new Object(),new Object()},
		{new Object(),new Object()},
		{new Object(),new Object(),new Object()}
};

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

int[][] arr = new int[3][4];

Object[][] arr = new Object[4][4];

Animal[][] arr = new Animal[3][4];

// Person類型數(shù)組,里面可以存儲(chǔ)Person類型對象,以及Person類型的子類型都可以。
Person[][] arr = new Person[2][2];
....

5. 二維數(shù)組的遍歷

for(int i = 0; i < arr.length; i++){ // 外層for循環(huán)負(fù)責(zé)遍歷外面的一維數(shù)組。
	// 里面這個(gè)for循環(huán)負(fù)責(zé)遍歷二維數(shù)組里面的一維數(shù)組。
	for(int j = 0; j < arr[i].length; j++){
		System.out.print(arr[i][j]);
	}
	// 換行。
	System.out.println();
}

6. 數(shù)組的拷貝:System.arraycopy()方法的使用

數(shù)組有一個(gè)特點(diǎn):長度一旦確定,不可變。

所以數(shù)組長度不夠的時(shí)候,需要擴(kuò)容,擴(kuò)容的機(jī)制是:新建一個(gè)大數(shù)組,將小數(shù)組中的數(shù)據(jù)拷貝到大數(shù)組,然后小數(shù)組對象被垃圾回收。

補(bǔ)充:

數(shù)組長度為0:

int[] f = {};//數(shù)組長度為0
System.out.println(f.length);//0

int[] g = new int[0];//數(shù)組長度為0
System.out.println(g.length);//0

int[] h = null;
//System.out.println(h.length);//空指針異常

到此這篇關(guān)于Java基礎(chǔ)之?dāng)?shù)組詳解的文章就介紹到這了,更多相關(guān)Java數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring?data?jpa緩存機(jī)制使用總結(jié)

    Spring?data?jpa緩存機(jī)制使用總結(jié)

    這篇文章主要介紹了Spring?data?jpa緩存機(jī)制使用總結(jié),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java 使用openoffice進(jìn)行word轉(zhuǎn)換為pdf的方法步驟

    Java 使用openoffice進(jìn)行word轉(zhuǎn)換為pdf的方法步驟

    這篇文章主要介紹了Java 使用openoffice進(jìn)行word轉(zhuǎn)換為pdf的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Spring Security保護(hù)用戶密碼常用方法詳解

    Spring Security保護(hù)用戶密碼常用方法詳解

    這篇文章主要介紹了Spring Security保護(hù)用戶密碼常用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java實(shí)現(xiàn)的各種排序算法(插入排序、選擇排序算法、冒泡排序算法)

    Java實(shí)現(xiàn)的各種排序算法(插入排序、選擇排序算法、冒泡排序算法)

    本文是小編給大家?guī)淼膉ava各種排序算法知識(shí),包括插入排序、選擇排序算法、冒泡排序算法,代碼簡單易懂,需要的朋友可以參考下
    2016-08-08
  • Spring Security常用過濾器實(shí)例解析

    Spring Security常用過濾器實(shí)例解析

    這篇文章主要介紹了Spring Security常用過濾器實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 如何使用idea里面自帶的翻譯插件

    如何使用idea里面自帶的翻譯插件

    這篇文章主要介紹了idea里面自帶的翻譯插件,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Java的RxJava庫操作符的用法及實(shí)例講解

    Java的RxJava庫操作符的用法及實(shí)例講解

    RxJava由于提供異步和基于事件的支持在Android開發(fā)者中獲得了不少人氣,這里我們就來看一下Java的RxJava庫操作符的用法及實(shí)例講解,需要的朋友可以參考下
    2016-06-06
  • 一分鐘入門Java Spring Boot徹底解決SSM配置問題

    一分鐘入門Java Spring Boot徹底解決SSM配置問題

    Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進(jìn)行配置,從而使開發(fā)人員不再需要定義樣板化的配置。通過這種方式,Spring Boot致力于在蓬勃發(fā)展的快速應(yīng)用開發(fā)領(lǐng)域成為領(lǐng)導(dǎo)者
    2021-10-10
  • Hibernate緩存詳解

    Hibernate緩存詳解

    本文主要介紹了Hibernate緩存的相關(guān)知識(shí)。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • Java 淺談 高并發(fā) 處理方案詳解

    Java 淺談 高并發(fā) 處理方案詳解

    這篇文章主要介紹了淺談Java高并發(fā)解決方案以及高負(fù)載優(yōu)化方法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評論

达日县| 桦川县| 攀枝花市| 修水县| 南岸区| 灵川县| 婺源县| 章丘市| 仁寿县| 嘉鱼县| 抚远县| 湟源县| 天等县| 中方县| 行唐县| 江达县| 洪湖市| 玛纳斯县| 高平市| 海南省| 万荣县| 新津县| 巴林右旗| 桑植县| 西贡区| 宁明县| 宁安市| 禹州市| 榆林市| 逊克县| 彭泽县| 云霄县| 视频| 高淳县| 黎川县| 临沧市| 敦煌市| 台南县| 嘉荫县| 门头沟区| 神农架林区|