java——數組,java數組
數組是多個相同資料類型數組組合,其中資料類型是任何資料類型。
陣列變數是參考型別變數,數組可以作為對象,數組中的每一個元素相當於對象的成員變數,所以數組元素可以預設初始化。(部落格java——變數分類有關於成員變數初始化的說明)。
一維數組
聲明
type var[];或者type[] var
初始化
動態初始化:定義與數組元素分配和賦值分開操作
int a[];a=new int[3];a[0]=0;a[1]=1;a[2]=2;
靜態初始化:定義的同時為數組元素分配空間並賦值
int a[]={1,2,3};
記憶體分析
class TestArray{public static void main(String arg[]){int[] s;s=new int[5];for(int i=0;i<5;i++){s[i]=i;}}}
以上程式執行到最後,記憶體應該是這樣的:
二維數組
二維數組可以看做以數組為元素的數組。
初始化
動態初始化(註:java中多維陣列的聲明和建立按照從高維到低維的順序進行)
int a[][]=new int[3][];a[0]=new int[2];a[1]=new int[4];a[2]=new int[3];
靜態初始化
int a[][]={{1,2},{2,3},{3,4}};
記憶體分析:
class TestArr{public static void main(String arg[]){int s[][]=new int[3][];s[0]=new int[2];s[1]=new int[4];s[2]=new int[3];for(int i=0;i<a.length;i++){for(int j=0;j<s[i].length;j++){s[i][j]=i;}}}}
以上程式執行到最後,記憶體應該是這樣的
總結
1.java中一維數組的元素是資料類型相同的變數,而二維數組就是將多個一維數組組合成數組,所以理解好一維很重要。2.數組是引用變數,可以作為一個對象,而它的元素就是成員變數。
java 數組引用
因為數組是一個對象。。
java中的參數傳遞是引用傳遞。。
傳遞到
public B(String[] sss,String s){
sss[0]="bbbbb";
sss[1]="ccccc";
s="2222";
}
這裡的sss是那個數組對象的一個引用。。相當於指標。。
sss[0]="bbbbb";
sss[1]="ccccc";
這樣處理相當於是在調用這個數組的對象的方法。。
即相當於在對這個對象做處理。。
所以這個對象的值改變了。。
但是String [] a={null,"aaaaa"};a這個引用依然指向那個對象。。所以輸出結果就是改變後的結果。。
假如你將
public B(String[] sss,String s){
sss[0]="bbbbb";
sss[1]="ccccc";
s="2222";
}
改為
public B(String[] sss,String s){
String[] strs = new String[2];
strs[0]="bbbbb";
strs[1]="ccccc";
sss = strs;
s="2222";
}
這樣的話..是不會改變那個對象的值的..
只是對sss這個引用重新賦值..讓他指向了另一個對象而已..
這樣的話前面的a引用依然指向那個對象..那個對象的值也不會改變..
為什麼那個String對象的值沒有改變呢..
跟上面一樣了..
只是對s引用重新賦值了..讓他指向了一個新的String對象..
而String aa="111111";aa依然指向的是值為111111的這個String對象..
java數組的定義與使用方法
數組是有序資料的集合,數組中的每個元素具有相同的數組名和下標來唯一地確定數組中的元素。
§5.1一維數組
一、一維數組的定義
type arrayName[];
其中類型(type)可以為Java中任意的資料類型,包括簡單類型組合類別型,數組名arrayName為一個合法的標識符,[]指明該變數是一個數群組類型變數。例如:
int intArray[];
聲明了一個整型數組,數組中的每個元素為整型資料。與C、C++不同,Java在數組的定義中並不為數組元素分配記憶體,因此[]中不用指出數組中元素個數,即數組長度,而且對於如上定義的一個數組是不能訪問它的任何元素的。我們必須為它分配記憶體空間,這時要用到運算子new,其格式如下:
arrayName=new type[arraySize];
其中,arraySize指明數組的長度。如:
intArray=new int[3];
為一個整型數組分配3個int型整數所佔據的記憶體空間。
通常,這兩部分可以合在一起,格式如下:
type arrayName=new type[arraySize];
例如:
int intArray=new int[3];
二、一維數組元素的引用
定義了一個數組,並用運算子new為它分配了記憶體空間後,就可以引用數組中的每一個元素了。數組元素的引用方式為:
arrayName[index]
其中:index為數組下標,它可以為整型常數或運算式。如a[3],b[i](i為整型),c[6*I]等。下標 從0開始,一直到數組的長度減1。對於上面例子中的in-tArray數來說,它有3個元素,分別為:
intArray[0],intArray[1],intArray[2]。注意:沒有intArray[3]。
另外,與C、C++中不同,Java對數組元素要進行越界檢查以保證安全性。同時,對於每個數組都有一個屬性length指明它的長度,例如:intArray.length指明數組intArray的長度。
例5.1
public class ArrayTest{
public static void main(String args[]){
int i;
int a[]=newint[5];
for(i=0;i<5;i++)
a[i]=i;
for(i=a.length-1;i>=0;i--)
System.out.println("a["+i+"]="+a[i]);
}
}
運行結果如下:
C:\>java ArrayTest
a[4]=4
a[3]=3
a[2]=2
a[1]=1
a[0]=0
該程式對數組中的每個元素賦值,然後按逆序輸出。
三、一維數組的初始化
對數組元素可以按照上述的例子進行賦值。也可以在定義數組的同時進行初始化。
例如:
int a[]={1,2,3,4,5};
用逗號(,)分隔數組的各個元素,系統自動為數組分配一定空間。
與C中不同,這時Java不要求數組為靜態(static)。
四、一維數組程式舉例:
例5.2Fibonacci數列
Fibonacci數列的定義為:
F1=F2=1,Fn=Fn-1+Fn-2(n>=3)
public classFibonacci{
public static void main(String args[]){
int i;
int f[]=new int[10];
f[0]=f[1]=1;
for(i=2;i<......餘下全文>>