Java數(shù)組的動態(tài)初始化和常見問題解析
一、為什么有數(shù)組動態(tài)初始化呢?
如果一開始就知道數(shù)組里的數(shù)據(jù),就可以使用靜態(tài)初始化去完成。
但是如果一開始就不知道要添加什么數(shù)據(jù),那此時大括號中寫什么呢?
int[] arr = {1, 2, 3, 4, 5}; int[] arr = {????}
是不是感覺寫什么都不太合適。所以動態(tài)初始化和靜態(tài)初始化的應用場景是不一樣的。
二、動態(tài)初始化
動態(tài)初始化:初始化時只指定數(shù)組長度,由系統(tǒng)為數(shù)組分配初始值。
格式:
數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組長度];
示例:
下述代碼表示arr數(shù)組里只能存3個int類型的整數(shù)。
int[] arr = new int[3];
三、代碼示例
需求:
定義一個數(shù)組,用來存班級中50個學生的姓名。
姓名未知,等學生報道之后,再進行添加。
package com.itheima.arraydemo; public class ArrayDemo4 { public static void main(String[] args) { //格式: //數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組的長度]; //在創(chuàng)建的時候,由我們自己指定數(shù)組的長度,由虛擬機給出默認的初始化值 String[] arr = new String[50]; //添加學生 arr[0] = "zhangsan"; arr[1] = "lisi"; //獲取 System.out.println(arr[0]);//zhangsan System.out.println(arr[1]);//lisi System.out.println(arr[2]);//打印出來的是默認初始化值null } }
四、數(shù)組默認初始化值的規(guī)律
- 整數(shù)類型:默認初始化值0
- 小數(shù)類型:默認初始化值0.0
- 字符類型:默認初始化值’\u0000’ 空格
- 布爾類型:默認初始化值 false
- 引用數(shù)據(jù)類型:默認初始化值 null,String就是一個引用數(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ù)組動態(tài)初始化和靜態(tài)初始化的區(qū)別
1、動態(tài)初始化:手動指定數(shù)組長度,由系統(tǒng)給出默認初始化值。
只明確元素個數(shù),不明確具體數(shù)值,推薦使用動態(tài)初始化
例如:使用數(shù)組容器來存儲鍵盤錄入的5個整數(shù)。
int[] arr = {????}; // 不明確數(shù)組中應該存儲哪些 int[] arr = new int[5]; // 就使用動態(tài)初始化
2、靜態(tài)初始化:手動指定數(shù)組元素,系統(tǒng)會根據(jù)元素個數(shù),計算出數(shù)組的長度。
需求中已經(jīng)明確了要操作的具體數(shù)據(jù),直接靜態(tài)初始化即可。
例如:將全班的學生成績存入數(shù)組中:11,22 ,33
int[] arr = {11, 22, 33};
六、數(shù)組常見問題:越界
當訪問了數(shù)組中不存在的索引,就會引發(fā)索引越界異常
package com.itheima.arraydemo; public class ArrayDemo5 { public static void main(String[] args) { //1.定義一個數(shù)組 int[] arr = {1,2,3,4,5}; //長度:5 //最小索引:0 //最大索引:4(數(shù)組的長度 - 1) //如果訪問的數(shù)字不在這個范圍(0 ~ 4)就會報索引越界異常 System.out.println(arr[2]); //小結(jié): //索引越界異常 //原因:訪問了不存在的索引 //避免:只要知道索引的范圍就行了 //最小索引:0 //最大索引:(數(shù)組的長度 - 1) } }
下圖的紅色就表示代碼出現(xiàn)了問題,通常我們也會說代碼報錯了。
閱讀報錯的信息:Exception:異常,異常在main里。java.lang.ArrayIndexOutOfBoundsException
是異常的名字,叫做:索引越界異常。后面就會緊接著異常出現(xiàn)的解釋:
Index 10 out of bounds for length 5
索引10已經(jīng)超過了長度為5的數(shù)組。
at:表示 在
。com.itheima.arraydemo
是包名,ArrayDemo5
是類名。
main
是方法名。ArrayDemo5.java:10
表示異常出現(xiàn)的位置,這里就表示在第10行出現(xiàn)了問題。
點一下,它就會自動跳轉(zhuǎn)到第10行。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot?maven?打包插件介紹及注意事項說明
這篇文章主要介紹了springboot?maven?打包插件介紹及注意事項說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12Springboot整合多數(shù)據(jù)源代碼示例詳解
這篇文章主要介紹了Springboot整合多數(shù)據(jù)源代碼示例詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-08-08