摘要
- 數(shù)組
概述和定義格式
- A:存儲(chǔ)同種數(shù)據(jù)類型的多個(gè)值
- B:數(shù)組概念
- 存儲(chǔ)同一種數(shù)據(jù)類型多個(gè)元素的集合,可以看成容器。
- 既可以存儲(chǔ)基本數(shù)據(jù)類型,也可以存儲(chǔ)引用數(shù)據(jù)類型哥蔚。
- C定義格式(動(dòng)態(tài)初始化)
- a:數(shù)據(jù)類型[] 數(shù)組名 =new 數(shù)據(jù)列席[數(shù)組長度]
初始化值
- 整數(shù)類型:0
- 浮點(diǎn)類型:0.0
- 布爾類型:false
- 字符類型:char默認(rèn)'\u0000',char占兩個(gè)字節(jié),16個(gè)二進(jìn)制位蛛蒙,每個(gè)0表示一個(gè)16進(jìn)制的0糙箍,四個(gè)即表示16個(gè)二進(jìn)制位
注意
- 直接輸出數(shù)組會(huì)打印數(shù)組的地址。如地址[I@19bb45c,其中[的個(gè)數(shù)即數(shù)組維數(shù)牵祟,I表示int類型深夯,@后面的代表十六進(jìn)制的地址值。
Java的內(nèi)存分配以及堆和棧的區(qū)別
- 棧
- 儲(chǔ)存局部變量(定義在方法聲明上和方法中的變量)
- 堆
- 存儲(chǔ)new出來的數(shù)組或?qū)ο?/li>
- 方法區(qū)
- 代碼儲(chǔ)存區(qū)
- 本地方法區(qū)
- 和系統(tǒng)相關(guān)
- 寄存器
- 給CPU使用
例子
int[] arr = new int[3];
動(dòng)態(tài)初始化诺苹,創(chuàng)建三塊連續(xù)空間塌西。在棧中儲(chǔ)存變量arr,堆中儲(chǔ)存new出來的3個(gè)對(duì)象筝尾。
多個(gè)數(shù)組的內(nèi)存分配
-
每次新建數(shù)組就會(huì)在內(nèi)存的堆和棧中分配空間給新的對(duì)象和變量捡需。當(dāng)利用一個(gè)數(shù)組定義另一個(gè)數(shù)組時(shí):
int[] arr1=new int[3]; int[] arr2=arr1;
arr2和arr1指向的地址相同,改變其中一個(gè)數(shù)據(jù)筹淫,另一個(gè)會(huì)隨之改變站辉。
靜態(tài)初始化
1. 數(shù)據(jù)類型[] 數(shù)組名 =new 數(shù)據(jù)類型[] {元素1,元素2损姜,...}
2. 數(shù)據(jù)類型[] 數(shù)組名 ={元素1饰剥,元素2,...}
第一種可以先聲明后賦值摧阅,第二種必須同時(shí)聲明和賦值汰蓉。
越界和空指針
- 訪問數(shù)組中不存在的索引會(huì)出現(xiàn)索引越界異常
- 若數(shù)組變量被重新賦值為null,再調(diào)用數(shù)組中的元素會(huì)出現(xiàn)空指針
傳值還是傳址
- Java中只有傳值棒卷,地址值也是值顾孽。