1.1 Java新特性對數組的支持
1.1.1 Java新特性——可變參數
在調用一個方法時,必須根據方法的定義傳遞指定的參數,但是JDK1.5之後產生了新的概念——可變參數,即方法中可以就接受的參數不再是固定值,而是隨着需要傳遞的,可變參數的定義格式如下:
返回值類型 方法名稱(類型 參數名稱){}
向方法中傳遞可變參數之後,其中的參數是以數組的形式保存下來的。
使用可變參數定義方法:
class NewDemo01{
public static void main(String[] args) {
System.out.print("不傳遞參數的fun():");
fun();
System.out.print("\n傳遞一個參數fun(1):");
fun(1);
System.out.print("\n傳遞五個參數fun(1,2,3,4,5)");
fun(1,2,3,4,5);
}
public static void fun(int...arg){
for (int i = 0; i < arg.length; i++) {
System.out.print(arg[i] + "、");
}
}
}
運行結果:
不傳遞參數的fun():
傳遞一個參數fun(1):1、
傳遞五個參數fun(1,2,3,4,5)1、2、3、4、5、
1.1.2 Java新特性——foreach輸出
數組的輸出一般都會使用for循環,但在JDK1.5後爲了方便數組的輸出,提供了一種foreach語法,此語法的使用格式如下:
for(數據類型 變量名稱:數組名稱){
……
}
使用foreach語法輸出數組內容:
class NewDemo02{
public static void main(String[] args) {
System.out.print("不傳遞參數的fun():");
fun();
System.out.print("\n傳遞一個參數fun(1):");
fun(1);
System.out.print("\n傳遞五個參數fun(1,2,3,4,5)");
fun(1,2,3,4,5);
}
public static void fun(int...arg){
for(int x:arg){
System.out.print(x + "、");
}
}
}
運行結果:
不傳遞參數的fun():
傳遞一個參數fun(1):1、
傳遞五個參數fun(1,2,3,4,5)1、2、3、4、5、
1.2 本章要點
1、數組是由一組相同的類型的變量所組成的數據類型,他們是以一個共同的名稱來表示的。數組按存放元素的複雜程度分爲一維、二維及多維數組。
2、使用Java中的數組必須經過聲明數組和開闢內存給該數組兩個步驟。聲明數組時會在棧內存開闢空間,只開闢棧空間的數組是無法使用的,必須有指向的堆內存空間才能夠使用,可以使用new關鍵字開闢堆內存空間,同時指定開闢的空間大小。
3、在Java中要取得數組的長度,可以利用.length來完成。
4、數組訪問時要使用下標,如果下標的訪問超過了數組的範圍,則會出現數組越界異常。
5、Java允許二維數組中每行的元素個數均不相同。
6、方法是一段可重複調用的代碼段,在本章中因爲方法可以由主方法直接調用,所以要加入public static 關鍵字修飾。
7、方法的重載爲方法名稱相同,參數的類型或個數不同。
8、數組的傳遞屬於引用數據類型的傳遞,傳遞的是堆內存地址的使用權,一個數組可以有多個名稱指向同一個堆內存空間,每一個名稱都可以修改堆內存中的內容。
9、Java新特性中提供了可變參數,這樣在傳遞參數時就可以不受參數的個數限制,全部的參數將以數組的形式保存下來。
10、foreach是Java中的新特性,主要作用是方便的輸出數組中的內容。
1.3 習題
1.3.1 編寫程序求1!+2!+……+30!的和並顯示,要求使用方法完成。
class test01{
public static void main(String[] args) {
aa();
}
public static void aa(){
int sum = 0;
for (int i = 1; i <= 20; i++) {
int num = 1;
for (int j = 1; j <= i; j++) {
num = num * j;
}
sum += num;
}
System.out.println(sum);
}
}
1.3.2 定義一個由整數組成的數組,要求求出其中的奇數個數和偶數個數。
class test02{
public static void main(String[] args) {
int sz[] = {1,2,3,4,5,6,7,8,9};
int JS = 0;
int OS = 0;
for (int i = 0; i < sz.length; i++) {
if (sz[i]%2 == 0) {
OS++;
}else {
JS++;
}
}
System.out.println("偶數有" + OS + "個。");
System.out.println("奇數有" + JS + "個。");
}
}
1.3.3 現在有如下的一個數組:
int oldArr[] = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
要求將以上數組中值爲0的項去掉,將不爲0的值存入一個新的數組,生成的新數組爲:
int newArr[] = {1,3,4,5,6,6,5,4,7,6,7,5};
class test03{
public static void main(String[] args) {
int oldArr[] = {1,2,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
int a = 0;
int tempArr[] = new int[oldArr.length];
for (int i = 0, j = 0; i < oldArr.length; i++) {
if (oldArr[i] != 0) {
tempArr[j++] = oldArr[i];
a++;
}
}
int newArr[] = new int[a];
for (int i = 0; i < newArr.length; i++) {
newArr[i] = tempArr[i];
System.out.print(newArr[i] + " ");
}
}
}