欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          Java數(shù)組知識(shí)點(diǎn)(總結(jié)分享)

          本篇文章給大家?guī)砹岁P(guān)于java的相關(guān)知識(shí),其中主要介紹了關(guān)于數(shù)組的相關(guān)問題,包括了數(shù)組的定義、數(shù)組的屬性以及內(nèi)存圖還有常見的一些問題,下面一起來看一下,希望對(duì)大家有幫助。

          Java數(shù)組知識(shí)點(diǎn)(總結(jié)分享)

          推薦學(xué)習(xí):《java視頻教程》

          數(shù)組的定義

          1.概述

          • 假如有一個(gè)班同學(xué)的成績(jī)需要存儲(chǔ),該使用什么方法呢?
          • 像我們之前學(xué)習(xí)的,可以定義多個(gè)變量存儲(chǔ)不同的成績(jī)。但是要有1000多個(gè)學(xué)生,那么到定義1000多個(gè)變量嗎?當(dāng)然不行,這就需要用到我們的數(shù)組了。

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

          • 特點(diǎn):定義數(shù)組的時(shí)候直接給數(shù)組賦值,由系統(tǒng)決定數(shù)組長(zhǎng)度

          通用格式:

          數(shù)據(jù)類型[] 數(shù)組名 = { 元素1,元素2 ,元素3,… }; 例如: int [] array= {1,2,3,4,5}; double[] scores = {88.5, 99.5, 59.5};

          3.動(dòng)態(tài)初始化數(shù)組

          • 特點(diǎn):定義數(shù)組時(shí)確了定元素的類型和數(shù)組的長(zhǎng)度,之后存入數(shù)據(jù)

          通用格式:

          數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[長(zhǎng)度]; 例如: int [] array= new int[5]; double[] scores = new double[3];

          默認(rèn)值:

          數(shù)據(jù)類型 具體定義類型 默認(rèn)值
          基本類型

          byte、short、char、int、long

          0

          float、double

          0.0

          boolean

          false
          引用類型

          類、接口、數(shù)組、String

          null

          4.總結(jié)

          • 數(shù)組適合同種類型大量數(shù)據(jù)
          • 靜態(tài)初始化適合知道了元素值
          • 動(dòng)態(tài)初始化適合不清楚存入哪些數(shù)據(jù)

          數(shù)組的屬性

          1.訪問

          • 一般訪問數(shù)組的方式為:
          數(shù)組名稱[索引]

          例題:

          //靜態(tài)初始化數(shù)組 int [] array= {1,2,3,4,5}; System.out.println(array[0]);//輸出 1 System.out.println(array[1]);//輸出 2 System.out.println(array[3]);//輸出 4

          2.長(zhǎng)度

          • 長(zhǎng)度可以直接調(diào)用length得到數(shù)組的長(zhǎng)度。

          例題:

          //靜態(tài)初始化數(shù)組 int [] array= {1,2,3,4,5}; System.out.println(array.length);//調(diào)用方法,輸出長(zhǎng)度 5 //最大索引array.length-1

          3.遍歷

          • 遍歷就是一個(gè)一個(gè)數(shù)組元素的訪問,主要應(yīng)用在搜索、數(shù)據(jù)統(tǒng)計(jì)……
          • 我們之前學(xué)了第7天:循環(huán)結(jié)構(gòu)、第6天:分支結(jié)構(gòu),下面通過for循環(huán)遍歷一個(gè)數(shù)組

          例題:

          • 給定元素 {10,8,9,4,5,6,8,71,2,3,9,99},用靜態(tài)數(shù)組存儲(chǔ)并輸出數(shù)組中大于5的元素?

          編碼實(shí)現(xiàn)

          //靜態(tài)初始化數(shù)組 int [] array= {10,8,9,4,5,6,8,71,2,3,9,99}; for(int i=0;i<array.length;i++) { 	if(array[i]>5) 		System.out.println(array[i]); }

          輸出結(jié)果

          10 8 9 6 8 71 9 99

          內(nèi)存圖

          Java數(shù)組知識(shí)點(diǎn)(總結(jié)分享)

          • Java在程序運(yùn)行時(shí),需要在內(nèi)存中分配空間,對(duì)空間進(jìn)行了不同區(qū)域的劃分。
          • 棧內(nèi)存:存儲(chǔ)局部變量,使用完畢立即消失
          • 堆內(nèi)存:存儲(chǔ)new 出來的內(nèi)容(對(duì)象、實(shí)體),地址使用完畢在垃圾回收器空閑時(shí)回收

          1.單數(shù)組內(nèi)存圖

          • 下面的創(chuàng)建數(shù)組代碼,實(shí)現(xiàn)它的內(nèi)存關(guān)系圖

          編碼實(shí)現(xiàn)

          //動(dòng)態(tài)初始化數(shù)組 int [] arr=new int[3]; System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]); //修改值 arr[0]=100; arr[2]=200; System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]);

          輸出結(jié)果

          [I@15db9742 0 0 0 [I@15db9742 100 0 200

          原理講解:

          Java數(shù)組知識(shí)點(diǎn)(總結(jié)分享)

          • 動(dòng)態(tài)初始化先在堆內(nèi)存生成一個(gè)new 一個(gè)arr 地址值,具體看編譯器的結(jié)果,這里假設(shè)001。由于動(dòng)態(tài)初始化,所以每個(gè)元素都有一個(gè)初始值,具體可以看上面的表。我們輸出元素,先訪問數(shù)組名地址,到堆內(nèi)存下標(biāo),再輸出元素值。
          • 修改數(shù)組值,歷程和查看相同,只不過多了一步修改的過程,如下圖:

          Java數(shù)組知識(shí)點(diǎn)(總結(jié)分享)

          2.多數(shù)組內(nèi)存圖

          Java數(shù)組知識(shí)點(diǎn)(總結(jié)分享)

          • 多個(gè)數(shù)組和單數(shù)組內(nèi)存使用原理相同,這里我就不過多講述了。

          3.數(shù)組指向相同內(nèi)存

          • 假如我們把兩個(gè)數(shù)組的地址值改為相同,修改后的結(jié)果該是如何,如下面的代碼。

          編碼實(shí)現(xiàn)

          //動(dòng)態(tài)初始化數(shù)組 int [] arr=new int[3]; arr[0]=100; arr[1]=200; arr[2]=300; System.out.println(arr); System.out.println(arr[0]); System.out.println(arr[1]); System.out.println(arr[2]);  int [] arr2=arr; arr2[0]=111; arr2[1]=222; arr2[2]=333;  System.out.println(arr); System.out.println(arr[0]); System.out.println(arr2); System.out.println(arr2[0]);

          輸出結(jié)果

          [I@15db9742 100 200 300 [I@15db9742 111 [I@15db9742 111

          原理講解:

          Java數(shù)組知識(shí)點(diǎn)(總結(jié)分享)

          • 第一個(gè)數(shù)組在堆內(nèi)存的地址為001,第二個(gè)數(shù)組也為001,所以修改第二個(gè)數(shù)組的值,其實(shí)都是同一個(gè)數(shù)組內(nèi)存。第一個(gè)數(shù)組的值也會(huì)隨著改變,結(jié)果如下:

          Java數(shù)組知識(shí)點(diǎn)(總結(jié)分享)

          常見問題

          1.索引越界

          //靜態(tài)初始化數(shù)組 int [] array= {1,2,3}; System.out.println(array[3]);
          • 上面的代碼運(yùn)行之后,會(huì)出現(xiàn)下面的報(bào)錯(cuò)異常:
          • Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
          • 解釋:我們靜態(tài)化初始數(shù)組給了3個(gè)數(shù)字,最大索引為2,當(dāng)我們?cè)L問3時(shí),就會(huì)報(bào)錯(cuò)

          2.空指針異常

          //動(dòng)態(tài)初始化數(shù)組 int [] array= new int[3]; array=null; System.out.println(array[0]);
          • 上面的代碼運(yùn)行之后,會(huì)出現(xiàn)下面的報(bào)錯(cuò)異常:
          • Exception in thread "main" java.lang.NullPointerException
          • 解釋:我們將數(shù)組置為null,導(dǎo)致訪問的數(shù)組不指向堆內(nèi)存的數(shù)據(jù)

          推薦學(xué)習(xí):《java視頻教程》

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)