day.8
1.一維數組
定義:是相同類型數據的有序集合,描述的是相同類型的若干個數據,按照一定先后次序排列組合而成,其中,每個數據稱為一個數組元素,每個數組元素可以通過一個下標來訪問它們。(必須先聲明才能使用,或者聲明的時候已經創建好了)(聲明的時候數組并不在,只有創建的時候才存在)
#聲明語法:
dataType[]arrayRefVar;//首選方法
dataType arrayRefVar[];//效果相同,但是不首選
#用new操作符來創建(聲明創建同時):
dataType []arrayRefVar=new dataType[arraySize];
數組的元素是通過索引訪問的,從0開始索引。
#獲取數組的長度:
array.length
int []arr=new int[10]; for (int i = 0; i < arr.length; i++) {arr[i]=i;//賦值每個元素,沒有賦值的話就按初始值算 } for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]); }//循環輸出每個元素 int sum=0;//定義總和 for (int i = 0; i <arr.length ; i++) {sum+=arr[i];//循環計算總和 }#數組的四個基本特點
其長度是確定的,數組一旦被建立,它的大小就是不可改變的。
其元素必須是相同類型,不允許出現混合類型。
數組中的元素可以是任何數據類型,包括基本類型和引用類型。
數組變量屬于引用類型,數組也可以看成是對象,數組的每個元素相當于該對象的成員變量。
數組本身就是對象,java中對象是在堆中的,因此數組無論保存原始類型還是其他對象類型。
數組對象本身是在堆中的。
#數組小結:
數組是相同數據類型的(數據類型可以為任意類型)有序集合
數組也是對象。數組元素相當于對象的成員變量。
數組長度是確定的,不可變的。如果越界,則會報錯。
2.內存分析
堆:存放new的對象跟數組,可以被所有的線程共享,不會存放別的對象引用
棧:存放基本變量類型(會包含這個基本類型的具體數值),引用對象的變量(會存放這個引用在堆里面的具體地址)
方法區:可以被所以的線程共享,包含了所有的class和static變量
3.數組的三種初始化
#靜態初始化:
int []a={1,2,3,4,55}; System.out.println(a[0]); Man []mans={new Man(),new Man()};//引用類來創建數組(對象數組)#動態初始化:
int [] b=new int[4]; b[0]=1;#數組的默認初始化
數組是引用類型,它的元素相當于類的實例變量,因此數組一經分配空間,其中的每個元素也會被按照實例變量同樣的方法被隱式初始化(變為默認值)
4.數組使用
#for-each循環
for (int i : a) {//沒有下標System.out.println(i); }#數組作方法入參
public static void printArray(int []arr){//打印數組元素for (int i = 0; i <arr.length ; i++) {System.out.println(arr[i]+" ");} }#數組作為返回值
public static int[] reverse(int []arr){//反轉數組元素int [] result=new int[arr.length];for (int i = 0,j=result.length-1; i <arr.length ; i++,j--) {//反轉操作result[j]=arr[i];}return result; } int []reverse=reverse(a);//利用一個同類型的新數組接受反轉后的數組 printArray(reverse);//(數組作為實參傳入)打印數組總結
- 上一篇: 原创-含泪贡献:Revit二次开发,从零
- 下一篇: re学习笔记(59)BUUCTF - r