java數組簡單介紹以及其方法

                        小談一下java數組

數組是存放數據的容器,有兩個特點:元素類型唯一,長度固定。

一維數組聲明:類型[] 數組名;類型 數組名[];推薦用前一種。

多維數組聲明同樣是以上要求。

在數組創建時,要注意一下幾點:

1).數組對象一旦創建,其大小不能更改,所以創建數組是要給予適當的長度,對這一點還是有解決餘地的,畢竟代碼是自己的;

2).數組的下表是從0開始的,下表的範圍從到數組的長度-1

3).數組中的元素是通過數組名和數組下標來確定的。

數組的初始化分爲靜態初始化(不能指定長度)和動態初始化(必須指定長度)兩種:

如一維數組初始化:int[] a = new int[3]; int[] a = new int[]{1,2,3}注意後一種的[]中不可以填值;

多維數組的初始化:int[][] a = new int [3][3]; int[][] a = new int[3][];int[][] a = new int[][]{{1},{1,2},{1,2,3}};注意後兩種格式[]中不可再填值。

從另一個角度說數組的初始化分爲:

1).默認初始化:不論數組是什麼類型的數組,從創建開始,系統便會默認爲其每個元素賦初值。對於基本類型的默認值,這一點以前說過,現在再細說一下吧,對於boolean類型的爲false,其他類型的都相應的0。具體的是byte,short,int默認爲0long默認爲0Ldouble默認爲0.0float默認爲0.0Fchar默認爲\u0000String的默認值爲null

2).賦值初始化:當要爲數組元素賦值,但又具有明顯的規律時,則可以利用循環語句對其初始化。在對數組進行循環式,限制條件一般都與其length屬性相關,這樣一定不會越界;在對數組進行賦值時最好不要使用具體數值,因爲在具體的數值既容易出錯,可維護性又差,一旦數組長度改變,那麼就要修改多行代碼,所以還是建議用數組名.length吧。

3).枚舉初始化:如果數組元素需要的初始值與默認值不同,但又沒有明顯的規律且數量又不多,這是就可採用枚舉初始化,如上面的int[] a = new int[]{1,8,4,3}

數組賦值的規則如下:*數組的維數要相同,*數組元素的類型要相同,*對於數組而言不存在數據類型轉換。

Java有其輸入的方式:下面說一下基本的輸入方法

Scanner爲輸入掃描類,基本用法如下代碼所示:

package practice;
import java.util.Scanner;
public class TestScanner {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//可輸入多種數據類型
int i = scan.nextInt();
String s = scan.next();
boolean b = scan.nextBoolean();
double d = scan.nextDouble();
System.out.println("int:"+i+" Sring:"+s+" boolean"+b+" double:"+d);
}
}

輸出如下:

1
maidou
true
1.1
int:1 Sring:maidou booleantrue double:1.1

下面說一下測試數組常用的方法吧:

Arrays.copyOfRange(參數,參數,參數):將指定數組的指定範圍複製到一個新的數組

Arrays.copyOf(參數,參數):複製指定的數組,截取或用0填充,使副本具有指定的長度

Arrays.sort(參數):對指定int型數組的指定範圍按數字升序進行排序

Arrays.binarySearch(參數,參數):二分法查找指定的int型數組,以獲得指定的值,但其必須在排完序的基礎上,也就是在sort調用完再用二分法來查找

Arrays.toString():方法提供了數組的格式化輸出方式,一般在調用時需要重寫此方法

System.arraycopy(src,srcPos,dest,destPos.length):src-原數組 srcPos-原數組的起始位置dest-目標數組 destPos-目標數組的起始位置 length-要拷貝的數組元素個數

Arrays工具類的使用與後來集合中的Collections相似,這一點在集合中再說吧!

下面看一下代碼吧:

package practice;
import java.util.Arrays;
public class TestArrays {
public static void main(String[] args) {
int[] a = new int[]{1,3,5,7,9,2,4,6,8,10};
int[] b = Arrays.copyOf(a, a.length);
int[] c = Arrays.copyOfRange(a, 2, 5);//前閉後開
System.out.println("Arrays.copyOf()方法 "+Arrays.toString(b));
System.out.println("copyOf方法常見了一個新的地址 "+(a == b));//copyOf()方法創建了一個新的內存空間
System.out.println("Arrays.copyOfRange方法 "+Arrays.toString(c));
Arrays.sort(a);
for(int i : a){
System.out.print(i+" ");//排序後的數組依次輸出每個元素
}
System.out.println();
System.out.println("Arrays.toString()方法 "+Arrays.toString(a));
int pos = Arrays.binarySearch(a, 5);
System.out.println("Arrays.binarySearch方法 "+pos);
int[] d = new int[6];
System.arraycopy(a, 0, d, 1, 5);
System.out.println("System.arraycopy方法 "+Arrays.toString(d));
}
}

輸出如下所示:

Arrays.copyOf()方法 [1, 3, 5, 7, 9, 2, 4, 6, 8, 10]
copyOf方法常見了一個新的地址 false
Arrays.copyOfRange方法 [5, 7, 9]
1 2 3 4 5 6 7 8 9 10
Arrays.toString()方法 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Arrays.binarySearch方法 4
System.arraycopy方法 [0, 1, 2, 3, 4, 5]

好啦,數組就先到這裏吧,接下來會講一下面向對象的三大特^-^!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章