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

詳解Java數(shù)組的一維和二維講解和內(nèi)存顯示圖

 更新時(shí)間:2023年05月08日 11:12:33   作者:tq02  
這篇文章主要介紹了Java數(shù)組的一維和二維講解和內(nèi)存顯示圖,數(shù)組就相當(dāng)于一個(gè)容器,存放相同類型數(shù)據(jù)的容器。而數(shù)組的本質(zhì)上就是讓我們能 "批量" 創(chuàng)建相同類型的變量,需要的朋友可以參考下

一.數(shù)組的認(rèn)識(shí)

在C語(yǔ)言里,我們也曾學(xué)習(xí)過(guò)數(shù)組,數(shù)組是什么?數(shù)組就相當(dāng)于一個(gè)容器,存放相同類型數(shù)據(jù)的容器。而數(shù)組的本質(zhì)上就是讓我們能 "批量" 創(chuàng)建相同類型的變量。

注:容器是固定了大小的,不可改變的那種,例如:礦泉水瓶子、汽油罐、衣柜等容量大小不一的容器。

二.一維數(shù)組的用法

2.1 數(shù)組的創(chuàng)建

數(shù)組的初始化有2種形式

1、靜態(tài)初始化(固定內(nèi)容)

2、動(dòng)態(tài)初始化(固定長(zhǎng)度)

靜態(tài)初始化:指在數(shù)組聲明的同時(shí),直接給數(shù)組引用賦值 ,不需要申明長(zhǎng)度數(shù)據(jù)類型[ ]數(shù)組名稱 = new 數(shù)據(jù)類型 [ ]{ 初始化數(shù)據(jù) };

示例:int[ ]arr = new int[ ]{1, 2, 3};

省略方式:數(shù)據(jù)類型 [ ] 數(shù)組名稱 = { 初始化數(shù)據(jù) }; 示例:int [ ]arr = {1, 2, 3};

注:省略方式不允許先聲明后賦值,只能聲明同時(shí)直接賦值。

例如:int [ ]arr3; arr3 = {} //編譯出錯(cuò)

動(dòng)態(tài)初始化:指數(shù)組聲明和數(shù)組引用賦值分開(kāi)。根據(jù)數(shù)組定義方式的不同,又分為兩種。

第一種:直接引用相同數(shù)組進(jìn)行賦值。

例如:int[ ] arr=arr;直接將數(shù)組arr賦值給了arr;注:一定得相同類型的數(shù)組

第二種:數(shù)據(jù)類型 [ ]數(shù)組名稱 = new 數(shù)據(jù)類型 [數(shù)組長(zhǎng)度];

例如:int [ ]arr1 = int[10]; int arr1[0] = 0;

2.2數(shù)組的使用

每一個(gè)存儲(chǔ)到數(shù)組的元素,都會(huì)自動(dòng)的擁有一個(gè)編號(hào),從0開(kāi)始,這個(gè)自動(dòng)編號(hào)稱為數(shù)組索引 (index),可以通過(guò)數(shù)組的索引訪問(wèn)到數(shù)組中的元素。 數(shù)組的長(zhǎng)度屬性: 每個(gè)數(shù)組都具有長(zhǎng)度,而且是固定的,Java中賦予了數(shù)組的一個(gè)屬性,可以獲取到數(shù)組的長(zhǎng)度,語(yǔ)句為:數(shù)組名。length,屬性length的執(zhí)行結(jié)果是數(shù)組的長(zhǎng)度,int類型結(jié)果。由次可以推斷出,數(shù)組的最大索引值為:數(shù)組名。length-1。

public static void main(String[] args) {
	 int[] arr = new int[]{1,2,3,4,5}; 
	 //打印數(shù)組的長(zhǎng)度,輸出結(jié)果是5
	  System.out.println(arr.length);
    //打印對(duì)應(yīng)數(shù)組的值,輸出結(jié)果為1
      System.out.println(arr[0]);
}

2.3數(shù)組內(nèi)存原理

在Java中,內(nèi)存是非常非常重要的,作用:運(yùn)行程序。我們編寫(xiě)的程序都是存放在硬盤(pán)當(dāng)中的,而在硬盤(pán)里的程序是不會(huì)運(yùn)行的,必須得在內(nèi)存當(dāng)中才能運(yùn)行,運(yùn)行完畢后會(huì)清空內(nèi)存。 Java虛擬機(jī)要運(yùn)行程序,必須要對(duì)內(nèi)存進(jìn)行空間的分配和管理。

2.3.1Java虛擬機(jī)內(nèi)存劃分

Java為了提高效率,把內(nèi)存進(jìn)行了劃分,從而使每一片區(qū)域都有特點(diǎn)的處理數(shù)據(jù)方式和內(nèi)存管理方式。

jvm的內(nèi)存劃分:

區(qū)域名稱作用
寄存器給CPU使用,和我們開(kāi)發(fā)無(wú)關(guān)
本地方法棧JVM在使用操作系統(tǒng)功能的時(shí)候使用,和我們開(kāi)發(fā)無(wú)關(guān)
方法區(qū)存儲(chǔ)可以運(yùn)行的class文件
堆內(nèi)存存儲(chǔ)對(duì)象或者數(shù)組,new來(lái)創(chuàng)建的,都存儲(chǔ)在堆內(nèi)存
方法棧方法運(yùn)行時(shí)使用的內(nèi)存,比如main方法運(yùn)行,進(jìn)入方法棧中執(zhí)行

此處我們不詳細(xì)講解,只講解與數(shù)組有關(guān)的堆區(qū)間。

1.棧(Stack): 存放的都是方法中的局部變量。方法的運(yùn)行一定要在棧當(dāng)中運(yùn)行局部變量:方法的參數(shù),或者是方法幾內(nèi)部的變量 作用域: 一旦超出作用域,立刻從棧內(nèi)存當(dāng)中消失

2.堆(Heap) : 凡是new出來(lái)的東西都在堆中

2.3.2數(shù)組內(nèi)存示例圖

在圖中我們可以看見(jiàn),棧區(qū)可以有堆區(qū),其實(shí)不是這樣理解的,而是可以通過(guò)棧區(qū)而去訪問(wèn)堆區(qū),

個(gè)人理解:數(shù)組變量名就是一個(gè)遙控器,可以控制堆區(qū)。

三.二維數(shù)組的認(rèn)識(shí)

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

二維數(shù)組的四種不同形式的定義方式:

定義二維數(shù)組:int[][] array1 = new int[10][10];

定義二維數(shù)組(簡(jiǎn)潔版):int array2[][] = new int[10][10];

定義二維數(shù)組并且初始化:int array3[][] = { { 1, 1, 1 }, { 2, 2, 2 } };

定義二維數(shù)組并且初始化(簡(jiǎn)潔版)int array4[][] = new int[][] { { 1, 1, 1 }, { 2, 2, 2 } };

其實(shí)仔細(xì)一看。我們可以看見(jiàn)以上的定義方式和一維數(shù)組十分相似。

二維數(shù)組存儲(chǔ)的相當(dāng)于一維數(shù)組的集合。

圖片例如:

二維數(shù)組array3 擁有array3[0]和array3[1]兩個(gè)一維數(shù)組,其實(shí)道理和一維數(shù)組一樣,只不過(guò)擁有的不再是元素,而是數(shù)組。想象一下套娃,便懂了。

注:只定義二維數(shù)組時(shí),可以不寫(xiě)第二個(gè)下標(biāo),但一定需要定義第一個(gè)下標(biāo),實(shí)際就是定義有幾個(gè)一維數(shù)組。

四.數(shù)組作為方法參數(shù)和返回值

將數(shù)組傳遞到方法當(dāng)中。有沒(méi)有想過(guò),這是值傳遞,還是地址傳遞呢?

public static void main(String[] args) {
    int[] arr = {1, 2, 3};
    func(arr);
    System.out.println("arr[0] = " + arr[0]);
} 
public static void func(int[] a) {
    a[0] = 10;
    System.out.println("a[0] = " + a[0]);
} 
// 執(zhí)行結(jié)果
a[0] = 10
arr[0] = 10

我們可以發(fā)現(xiàn)數(shù)組傳遞過(guò)去之后,程序結(jié)束,數(shù)組值發(fā)生了改變,那么這是地址傳遞嗎?事實(shí)上,并不是的。但是我們得注意,此時(shí)此刻我們這并不是傳地址,而是傳引用。

原理圖:

解釋:相當(dāng)于從一個(gè)控制器(arr)變成了兩個(gè)控制器(arr,a),這兩個(gè)指向同一個(gè)堆,都可以對(duì)其修改。

但是是否存在傳引用之后,卻無(wú)法改變實(shí)參的值?存在的,new可以創(chuàng)造出一個(gè)新的堆空間,從而與之前的數(shù)組分道揚(yáng)鑣。

例如:

重點(diǎn): arr數(shù)組值為1,2,3;傳引用之后,a的數(shù)組值也為1,2,3;也就是說(shuō),arr==a;但是重新new出一個(gè)堆空間之后,a控制的堆不再是arr控制的堆,因此也無(wú)法改變arr數(shù)組了

五.Java常用API

API,你先當(dāng)作一個(gè)方法庫(kù)一樣理解,有了API,我們可以更加快速的操作數(shù)組。

5.1輸出數(shù)組

Arrays.toString()

 int[] array = { 1, 2, 3 };
 System.out.println(Arrays.toString(array));
//輸出【1,2,3】

5.2數(shù)組轉(zhuǎn)集合

Arrays.asList()

String[] array2 = {"a", "b", "c", "d"};
	System.out.println(array2);  
	List list = new ArrayList(Arrays.asList(array2));
	System.out.println(list);   // [a, b, c, d]
	list.add("GG");
	System.out.println(list);  // [a, b, c, d, GG]

5.3數(shù)組中是否包含某個(gè)值 Arrays.asList().contains()

String[] array = { "a", "b", "c", "d", "e" };
boolean isEle = Arrays.asList(array).contains("a");
System.out.println(isEle);

5.4數(shù)組排序Arrays.sort()

 int[] array = { 3, 1, 2 };
 System.out.println(Arrays.sort(array));
//輸出:1,2,3

5.5數(shù)組二分查找Arrays.binarySearch()

int[] array = { 1,2,4,5,3,7,8 };
System.out.println(Arrays.binarySearch(array,5));
//輸出4

以上并不是全部,只是列舉了一些常用的類方法。

總結(jié)

數(shù)組的重點(diǎn)在于了解內(nèi)存存儲(chǔ)的數(shù)據(jù),還有如何使用數(shù)組的數(shù)據(jù),如何快捷使用對(duì)應(yīng)的類方法。

到此這篇關(guān)于詳解Java數(shù)組的一維和二維講解和內(nèi)存顯示圖的文章就介紹到這了,更多相關(guān)Java一維二維數(shù)組和內(nèi)存顯示圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 源碼分析Spring?中?@Qualifier?注解基本用法

    源碼分析Spring?中?@Qualifier?注解基本用法

    這篇文章主要介紹了源碼分析Spring?中?@Qualifier?注解基本用法,在源碼分析的過(guò)程中,也?GET?到?Spring?許多新的玩法,感興趣的小伙伴趕緊去試試吧
    2023-08-08
  • 詳細(xì)解讀AbstractStringBuilder類源碼

    詳細(xì)解讀AbstractStringBuilder類源碼

    這篇文章主要介紹了詳細(xì)解讀AbstractStringBuilder類源碼,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-12-12
  • WIN10環(huán)境 Maven的安裝與配置詳細(xì)教程

    WIN10環(huán)境 Maven的安裝與配置詳細(xì)教程

    這篇文章主要介紹了WIN10環(huán)境 Maven的安裝與配置詳細(xì)教程,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • SpringBoot:JPA + AuditingEntityListener時(shí)區(qū)設(shè)置方式

    SpringBoot:JPA + AuditingEntityListener時(shí)區(qū)設(shè)置方式

    這篇文章主要介紹了SpringBoot:JPA + AuditingEntityListener時(shí)區(qū)設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 淺談兩個(gè)jar包中包含完全相同的包名和類名的加載問(wèn)題

    淺談兩個(gè)jar包中包含完全相同的包名和類名的加載問(wèn)題

    下面小編就為大家?guī)?lái)一篇淺談兩個(gè)jar包中包含完全相同的包名和類名的加載問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • SpringBoot之如何正確、安全的關(guān)閉服務(wù)

    SpringBoot之如何正確、安全的關(guān)閉服務(wù)

    這篇文章主要介紹了SpringBoot之如何正確、安全的關(guān)閉服務(wù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • springboot 接口版本區(qū)分方式

    springboot 接口版本區(qū)分方式

    這篇文章主要介紹了springboot 接口版本區(qū)分方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java實(shí)現(xiàn)求解一元n次多項(xiàng)式的方法示例

    Java實(shí)現(xiàn)求解一元n次多項(xiàng)式的方法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)求解一元n次多項(xiàng)式的方法,涉及java高斯消元法處理矩陣運(yùn)算解多項(xiàng)式的相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • Java中的Kafka為什么性能這么快及4大核心詳析

    Java中的Kafka為什么性能這么快及4大核心詳析

    這篇文章主要介紹了Java中的Kafka為什么性能這么快及4大核心詳析,文章通過(guò)圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • java并發(fā)編程中的SynchronousQueue實(shí)現(xiàn)原理解析

    java并發(fā)編程中的SynchronousQueue實(shí)現(xiàn)原理解析

    這篇文章主要介紹了java并發(fā)編程中的SynchronousQueue實(shí)現(xiàn)原理解析,SynchronousQueue是一個(gè)比較特別的隊(duì)列,此隊(duì)列源碼中充斥著大量的CAS語(yǔ)句,理解起來(lái)是有些難度的,為了方便日后回顧,本篇文章會(huì)以簡(jiǎn)潔的圖形化方式展示該隊(duì)列底層的實(shí)現(xiàn)原理,需要的朋友可以參考下
    2023-12-12

最新評(píng)論

陆丰市| 高平市| 会理县| 香格里拉县| 江门市| 衡南县| 黑山县| 浦北县| 教育| 兰溪市| 嘉黎县| 昌都县| 河间市| 济宁市| 天祝| 石阡县| 金塔县| 伊宁县| 朝阳县| 高清| 乡城县| 吉安市| 合肥市| 三亚市| 新乡县| 区。| 盈江县| 衡阳县| 道真| 九龙坡区| 信丰县| 砚山县| 松潘县| 靖宇县| 安徽省| 南川市| 会宁县| 蓬莱市| 自治县| 高雄市| 乌拉特后旗|