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