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

Java由淺入深學(xué)習(xí)數(shù)組的使用

 更新時間:2022年05月10日 16:32:54   作者:知心寶貝  
數(shù)組對于每一門編程語言來說都是重要的數(shù)據(jù)結(jié)構(gòu)之一,當(dāng)然不同語言對數(shù)組的實現(xiàn)及處理也不盡相同。Java?語言中提供的數(shù)組是用來存儲固定大小的同類型元素

一、前言

學(xué)習(xí)概述:前八天我們學(xué)習(xí)了語法基礎(chǔ)、運算符與表達(dá)式、循環(huán)結(jié)構(gòu)、分支結(jié)構(gòu),今天主要學(xué)習(xí)數(shù)組的定義、相關(guān)的屬性方法、數(shù)組存儲的內(nèi)存圖、常見錯誤

學(xué)習(xí)目標(biāo):掌握數(shù)組的兩種定義方法、相關(guān)屬性、了解內(nèi)存原理、錯誤解決

二、數(shù)組的定義

1.概述

假如有一個班同學(xué)的成績需要存儲,該使用什么方法呢?

像我們之前學(xué)習(xí)的,可以定義多個變量存儲不同的成績。但是要有1000多個學(xué)生,那么到定義1000多個變量嗎?當(dāng)然不行,這就需要用到我們的數(shù)組了。

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

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

通用格式:

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

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

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

通用格式:

數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[長度];
例如:
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)初始化適合知道了元素值
  • 動態(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.長度

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

例題:

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

3.遍歷

遍歷就是一個一個數(shù)組元素的訪問,主要應(yīng)用在搜索、數(shù)據(jù)統(tǒng)計......

我們之前學(xué)了循環(huán)結(jié)構(gòu)、分支結(jié)構(gòu),下面通過for循環(huán)遍歷一個數(shù)組

例題:

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

編碼實現(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在程序運行時,需要在內(nèi)存中分配空間,對空間進(jìn)行了不同區(qū)域的劃分。
  • 棧內(nèi)存:存儲局部變量,使用完畢立即消失
  • 堆內(nèi)存:存儲new 出來的內(nèi)容(對象、實體),地址使用完畢在垃圾回收器空閑時回收

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

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

編碼實現(xiàn):

//動態(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

原理講解:

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

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

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

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

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

編碼實現(xiàn):

//動態(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

原理講解:

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

五、常見問題

1.索引越界

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

2.空指針異常

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

到此這篇關(guān)于Java由淺入深學(xué)習(xí)數(shù)組的使用的文章就介紹到這了,更多相關(guān)Java數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JAVA集成本地部署的DeepSeek的圖文教程

    JAVA集成本地部署的DeepSeek的圖文教程

    本文主要介紹了JAVA集成本地部署的DeepSeek的圖文教程,包含配置環(huán)境變量及下載DeepSeek-R1模型并啟動,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • Java?NIO實戰(zhàn)之多人聊天室

    Java?NIO實戰(zhàn)之多人聊天室

    這篇文章主要為大家詳細(xì)介紹了Java?NIO實戰(zhàn)之多人聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • SpringBoot?@Scheduled?Cron表達(dá)式使用方式

    SpringBoot?@Scheduled?Cron表達(dá)式使用方式

    這篇文章主要介紹了SpringBoot?@Scheduled?Cron表達(dá)式使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Java獲取配置文件的值過程解析

    Java獲取配置文件的值過程解析

    這篇文章主要介紹了java獲取配置文件的值過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • jdk自帶線程池實例詳解

    jdk自帶線程池實例詳解

    在最近做的一個項目中,需要大量的使用到多線程和線程池,下面就java自帶的線程池和大家一起分享
    2018-02-02
  • 使用ResponseEntity處理API返回問題

    使用ResponseEntity處理API返回問題

    這篇文章主要介紹了使用ResponseEntity處理API返回問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Kotlin-Coroutines中的async與await異步協(xié)程管理

    Kotlin-Coroutines中的async與await異步協(xié)程管理

    這篇文章主要為大家介紹了Kotlin-Coroutines中的async與await異步協(xié)程管理,提升程序性能解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • SpringBoot整合高德地圖實現(xiàn)天氣預(yù)報功能

    SpringBoot整合高德地圖實現(xiàn)天氣預(yù)報功能

    在當(dāng)今數(shù)字化時代,天氣預(yù)報功能在眾多應(yīng)用中扮演著重要角色,通過整合高德地圖提供的天氣API,我們可以輕松地在自己的SpringBoot項目中實現(xiàn)這一功能,本文將詳細(xì)介紹如何在SpringBoot項目中整合高德地圖的天氣預(yù)報功能,感興趣的小伙伴跟著小編一起來看看吧
    2025-03-03
  • java?spring?validation?自動、手動校驗

    java?spring?validation?自動、手動校驗

    HibernateValidator簡化了Java開發(fā)中的參數(shù)校驗過程,提供自動和手動兩種校驗方式,通過引入相關(guān)依賴并使用@Validated注解,可以實現(xiàn)自動校驗,手動校驗則需要使用ValidatorUtils類,此方法有效減少代碼重復(fù),提高開發(fā)效率
    2024-09-09
  • Java實現(xiàn)連接kubernates集群的兩種方式詳解

    Java實現(xiàn)連接kubernates集群的兩種方式詳解

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)連接kubernates集群的兩種方式,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01

最新評論

盐池县| 凤阳县| 宝清县| 随州市| 阳春市| 浦城县| 姜堰市| 唐海县| 额敏县| 苏尼特右旗| 曲麻莱县| 正蓝旗| 基隆市| 石阡县| 祁阳县| 长泰县| 昌吉市| 清新县| 台前县| 三江| 舞钢市| 荆州市| 安康市| 赤壁市| 宁强县| 马山县| 尖扎县| 会同县| 湄潭县| 马公市| 乡宁县| 新津县| 白山市| 金坛市| 濉溪县| 石狮市| 开江县| 漾濞| 吉林省| 平阳县| 齐齐哈尔市|