1.陣列概述和特點
陣列的定義
陣列是相同型別資料的有序集合。陣列描述的是相同型別的若干個資料,按照一定的先後次序排列組合而成。其中,每乙個資料稱作乙個元素,每個元素可以通過乙個索引(下標)來訪問它們。陣列的三個基本特點:
1. 長度是確定的。陣列一旦被建立,它的大小就是不可以改變的。
2. 其元素必須是相同型別,不允許出現混合型別。
3. 陣列型別可以是任何資料型別,包括基本型別和引用型別。
2. 陣列宣告
陣列的宣告方式有兩種(以一維陣列為例)
type arr_name; //(推薦使用這種方式)
type arr_name;
注意事項
1. 宣告的時候並沒有例項化任何物件,只有在例項化陣列物件時,jvm才分配空間,這時才與長度有關。
2. 宣告乙個陣列的時候並沒有陣列真正被建立。
3. 構造乙個陣列,必須指定長度。
建立基本型別一維陣列
基本型別陣列記憶體分配圖
建立引用型別一維陣列
引用型別陣列記憶體分配圖
3.初始化
陣列的初始化方式總共有三種:靜態初始化、動態初始化、預設初始化。
靜態初始化
除了用new關鍵字來產生陣列以外,還可以直接在定義陣列的同時就為陣列元素分配空間並賦值。
靜態初始化陣列
int a = ;// 靜態初始化基本型別陣列;
man mans = ;// 靜態初始化引用型別陣列;
動態初始化
陣列定義與為陣列元素分配空間並賦值的操作分開進行。
動態初始化陣列
int a1 = new int[2];//動態初始化陣列,先分配空間;
a1[0]=1;//給陣列元素賦值;
a1[1]=2;//給陣列元素賦值;
陣列的預設初始化
陣列是引用型別,它的元素相當於類的例項變數,因此陣列一經分配空間,其中的每個元素也被按照例項變數同樣的方式被隱式初始化。
int a2 = new int[2]; // 預設值:0,0
boolean b = new boolean[2]; // 預設值:false,false
string s = new string[2]; // 預設值:null, null
4.陣列的遍歷
陣列元素下標的合法區間:[0, length-1]。我們可以通過下標來遍歷陣列中的元素,遍歷時可以讀取元素的值或者修改元素的值。
使用迴圈遍歷初始化和讀取陣列
5.for-each迴圈
增強for迴圈for-each是jdk1.5新增加的功能,專門用於讀取陣列或集合中所有的元素,即對陣列進行遍歷。
注意事項
1. for-each增強for迴圈在遍歷陣列過程中不能修改陣列中某元素的值。
2. for-each僅適用於遍歷,不涉及有關索引(下標)的操作。
迴圈給陣列賦值 PHP 迴圈引用的問題
為了引出問題,先來看下面一段 這段 很簡單,輸出陣列的元素兩次,感覺會輸出兩次 abcd?不好意思,輸出結果如下 是不是感覺很奇怪?我沒有給陣列賦值啊,陣列的最後乙個元素怎麼在第二次迴圈的時候改變了呢?再來看下面一段修改過得 是不是發現了什麼?修改each變數會修改arr的最後乙個元素,這是為什麼呢...
如何給給字元陣列賦值
要說c語言中最讓我覺得棘手的,就是字元陣列的,c語言中沒有字串這個型別,字串只能存放在字元型陣列中。那麼,我們先來看看如何給乙個一維陣列賦值 1 定義的時候直接賦值 char arr 10 這種寫法也可以直接省略花括號,直接寫成 char arr 10 kitty 2 初始化列表,把各個字元依次賦給...
給多維陣列物件賦值
var messagetable new function var messageinfo function passparm messageinfo messagetable messageinfo i messageid message messageinfo i message message...