欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java數(shù)組的動(dòng)態(tài)初始化和常見問題解析

 更新時(shí)間:2024年10月21日 11:26:47   作者:洛上言  
本文介紹了數(shù)組動(dòng)態(tài)初始化的概念,即在初始化時(shí)僅指定數(shù)組長(zhǎng)度,系統(tǒng)會(huì)為數(shù)組分配初始值,而靜態(tài)初始化則手動(dòng)指定數(shù)組元素,系統(tǒng)根據(jù)元素個(gè)數(shù)計(jì)算數(shù)組長(zhǎng)度,這兩種初始化方式應(yīng)用場(chǎng)景不同,另外,還講述了數(shù)組默認(rèn)初始化值的規(guī)律及數(shù)組常見問題,如越界問題等

一、為什么有數(shù)組動(dòng)態(tài)初始化呢?

如果一開始就知道數(shù)組里的數(shù)據(jù),就可以使用靜態(tài)初始化去完成。

但是如果一開始就不知道要添加什么數(shù)據(jù),那此時(shí)大括號(hào)中寫什么呢?

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

是不是感覺寫什么都不太合適。所以動(dòng)態(tài)初始化和靜態(tài)初始化的應(yīng)用場(chǎng)景是不一樣的。

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

動(dòng)態(tài)初始化:初始化時(shí)只指定數(shù)組長(zhǎng)度,由系統(tǒng)為數(shù)組分配初始值。

格式:

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

示例:

下述代碼表示arr數(shù)組里只能存3個(gè)int類型的整數(shù)。

int[] arr = new int[3];

三、代碼示例

需求:

定義一個(gè)數(shù)組,用來存班級(jí)中50個(gè)學(xué)生的姓名。

姓名未知,等學(xué)生報(bào)道之后,再進(jìn)行添加。

package com.itheima.arraydemo;

public class ArrayDemo4 {
    public static void main(String[] args) {
        //格式:
        //數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組的長(zhǎng)度];
        //在創(chuàng)建的時(shí)候,由我們自己指定數(shù)組的長(zhǎng)度,由虛擬機(jī)給出默認(rèn)的初始化值

        String[] arr = new String[50];
        //添加學(xué)生
        arr[0] = "zhangsan";
        arr[1] = "lisi";
        //獲取
        System.out.println(arr[0]);//zhangsan
        System.out.println(arr[1]);//lisi
        System.out.println(arr[2]);//打印出來的是默認(rèn)初始化值null
    }
}

四、數(shù)組默認(rèn)初始化值的規(guī)律

  • 整數(shù)類型:默認(rèn)初始化值0
  • 小數(shù)類型:默認(rèn)初始化值0.0
  • 字符類型:默認(rèn)初始化值’\u0000’ 空格
  • 布爾類型:默認(rèn)初始化值 false
  • 引用數(shù)據(jù)類型:默認(rèn)初始化值 null,String就是一個(gè)引用數(shù)據(jù)類型
int[] arr2 = new int[3];
System.out.println(arr2[0]);//0
System.out.println(arr2[1]);//0
System.out.println(arr2[2]);//0

五、數(shù)組動(dòng)態(tài)初始化和靜態(tài)初始化的區(qū)別

1、動(dòng)態(tài)初始化:手動(dòng)指定數(shù)組長(zhǎng)度,由系統(tǒng)給出默認(rèn)初始化值。

只明確元素個(gè)數(shù),不明確具體數(shù)值,推薦使用動(dòng)態(tài)初始化

例如:使用數(shù)組容器來存儲(chǔ)鍵盤錄入的5個(gè)整數(shù)。

int[] arr = {????}; // 不明確數(shù)組中應(yīng)該存儲(chǔ)哪些
int[] arr = new int[5]; // 就使用動(dòng)態(tài)初始化

2、靜態(tài)初始化:手動(dòng)指定數(shù)組元素,系統(tǒng)會(huì)根據(jù)元素個(gè)數(shù),計(jì)算出數(shù)組的長(zhǎng)度。

需求中已經(jīng)明確了要操作的具體數(shù)據(jù),直接靜態(tài)初始化即可。

例如:將全班的學(xué)生成績(jī)存入數(shù)組中:11,22 ,33

int[] arr = {11, 22, 33};

六、數(shù)組常見問題:越界

當(dāng)訪問了數(shù)組中不存在的索引,就會(huì)引發(fā)索引越界異常

package com.itheima.arraydemo;

public class ArrayDemo5 {
    public static void main(String[] args) {
        //1.定義一個(gè)數(shù)組
        int[] arr = {1,2,3,4,5};
        //長(zhǎng)度:5
        //最小索引:0
        //最大索引:4(數(shù)組的長(zhǎng)度 - 1)
        //如果訪問的數(shù)字不在這個(gè)范圍(0 ~ 4)就會(huì)報(bào)索引越界異常
        System.out.println(arr[2]);


        //小結(jié):
        //索引越界異常
        //原因:訪問了不存在的索引
        //避免:只要知道索引的范圍就行了
        //最小索引:0
        //最大索引:(數(shù)組的長(zhǎng)度 - 1)
    }
}

下圖的紅色就表示代碼出現(xiàn)了問題,通常我們也會(huì)說代碼報(bào)錯(cuò)了。

閱讀報(bào)錯(cuò)的信息:Exception:異常,異常在main里。java.lang.ArrayIndexOutOfBoundsException 是異常的名字,叫做:索引越界異常。后面就會(huì)緊接著異常出現(xiàn)的解釋:

Index 10 out of bounds for length 5

索引10已經(jīng)超過了長(zhǎng)度為5的數(shù)組。

at:表示 。com.itheima.arraydemo 是包名,ArrayDemo5 是類名。

main 是方法名。ArrayDemo5.java:10 表示異常出現(xiàn)的位置,這里就表示在第10行出現(xiàn)了問題。

點(diǎn)一下,它就會(huì)自動(dòng)跳轉(zhuǎn)到第10行。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MyBatis延遲加載與立即加載案例教程

    MyBatis延遲加載與立即加載案例教程

    這篇文章主要介紹了MyBatis延遲加載與立即加載案例教程,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • springboot?maven?打包插件介紹及注意事項(xiàng)說明

    springboot?maven?打包插件介紹及注意事項(xiàng)說明

    這篇文章主要介紹了springboot?maven?打包插件介紹及注意事項(xiàng)說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 搭建JavaWeb服務(wù)器步驟詳解

    搭建JavaWeb服務(wù)器步驟詳解

    本篇文章主要給大家詳細(xì)分享了搭建JavaWeb服務(wù)器的詳細(xì)步驟以及用到的代碼,對(duì)此有需要的朋友可以跟著學(xué)習(xí)下。
    2018-02-02
  • 簡(jiǎn)單易懂的Java Map數(shù)據(jù)添加指南

    簡(jiǎn)單易懂的Java Map數(shù)據(jù)添加指南

    Java提供了多種方法來往Map中添加數(shù)據(jù),開發(fā)者可以根據(jù)具體需求選擇合適的方法,需要的朋友可以參考下
    2023-11-11
  • 解決springboot整合cxf啟動(dòng)報(bào)錯(cuò),原因是版本問題

    解決springboot整合cxf啟動(dòng)報(bào)錯(cuò),原因是版本問題

    這篇文章主要介紹了解決springboot整合cxf啟動(dòng)報(bào)錯(cuò),原因是版本問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Springboot整合多數(shù)據(jù)源代碼示例詳解

    Springboot整合多數(shù)據(jù)源代碼示例詳解

    這篇文章主要介紹了Springboot整合多數(shù)據(jù)源代碼示例詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java定時(shí)器Timer的源碼分析

    Java定時(shí)器Timer的源碼分析

    通過源碼分析,我們可以更深入的了解其底層原理。本文將通過Timer的源碼,帶大家深入了解Java?Timer的使用,感興趣的小伙伴可以了解一下
    2022-11-11
  • SpringBoot項(xiàng)目啟動(dòng)報(bào)錯(cuò)踩坑實(shí)戰(zhàn)記錄

    SpringBoot項(xiàng)目啟動(dòng)報(bào)錯(cuò)踩坑實(shí)戰(zhàn)記錄

    這篇文章主要給大家介紹了關(guān)于SpringBoot項(xiàng)目啟動(dòng)報(bào)錯(cuò)踩坑的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-02-02
  • Java多線程中Callable和Future的解讀

    Java多線程中Callable和Future的解讀

    這篇文章主要介紹了Java多線程中Callable和Future的解讀,Callable接口類似于Runnable,從名字就可以看出來了,但是Runnable不會(huì)返回結(jié)果,并且無法拋出返回結(jié)果的異常,而Callable功能更強(qiáng)大一些,被線程執(zhí)行后,可以返回值,這個(gè)返回值可以被Future拿到,需要的朋友可以參考下
    2023-09-09
  • IDEA實(shí)現(xiàn)JDBC的操作步驟

    IDEA實(shí)現(xiàn)JDBC的操作步驟

    JDBC提供了一種基準(zhǔn),據(jù)此可以構(gòu)建更高級(jí)的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠編寫數(shù)據(jù)庫應(yīng)用程序,本文給大家介紹IDEA實(shí)現(xiàn)JDBC的操作步驟,感興趣的朋友一起看看吧
    2022-01-01

最新評(píng)論