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、foreachJava中的新特性,主要作用是方便的输出数组中的内容。

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] + " ");

}

}

}