.新特性
可变参数的意义以及实现
那么下面通过一个简单的思考来分析可变参数的存在意义
范例:如果说现在要定义一个方法,这个方法可以实现任意多个整型数据的相加
那么现在唯一可以想到的方法的实现思路就是利用数组作为方法的参数
package cn.mysterious; public class NewCharacteristics { public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(add(new int[] {1,2,3}));
System.out.println(add(new int[] {1,2,3,4,5,6})); }
/**
* 此方法可以实现任意多个整型数据的相加操作
* @param data 所有的整型数据要求封装在数组之中
* @return 数据的累加结果
*/
public static int add(int[] data){
int sum = 0;
for (int i = 0; i < data.length; i++) {
sum += data[i];
}
return sum;
}
}
严格来讲以上的代码虽然实现了开发要求,只不过这种做法有一点不合适
要求是传递任意多个参数,而现在变成了值传递一个数组参数
那么从JDK1.5之后将发生变更对于方法定义的格式产生了新的支持
[public |protected |private] [static] [final] 返回值类型 方法名称(参数,......,参数类型... 变量)
范例:观察可变参数
package cn.mysterious; public class NewCharacteristics { public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(add(1,2,3));
System.out.println(add(1,2,3,4,5,6));
System.out.println(add(new int[] {1,2,3})); }
/**
* 此方法可以实现任意多个整型数据的相加操作
* @param data 所有的整型数据要求封装在数组之中
* @return 数据的累加结果
*/
public static int add(int ... data){// 可变参数就是利用了数组的形式
int sum = 0;
for (int i = 0; i < data.length; i++) {
sum += data[i];
}
return sum;
}
}
可变参数本质上实现的就是一个数组操作的形式
总结
从实际来讲,不建议在自己写的代码上过多的使用此技术
foreach 循环
增强型for 循环
foreach 是一个名字,而其本质就是for循环,但是着呀昂的 for 循环是给特点的结构使用的:数组,类集
范例:传统数组的输出
package cn.mysterious; public class Foreach { public static void main(String[] args) {
// TODO Auto-generated method stub
int data[] = new int[]{1,2,3};
for (int i = 0; i < data.length; i++) { // 传统的循环操作形式
System.out.println(data[i]); // 根据索引取得数据
}
} }
但是有人认为以上的索引操作过于复杂了,而且使用索引还有可能出现数组越界的情况,现在针对于数组就可以采用如下形式的for循环完成输出
for(数据类型 变量 :数组名称){}
此语句的作用在于自动进行数组的遍历(取出)操作,而后将每一个数组元素 都保存在变量之后,这样在 for 循环里面就可以不需要使用索引来进行操作了
范例:for 循环
package cn.mysterious; public class Foreach { public static void main(String[] args) {
// TODO Auto-generated method stub
int data[] = new int[]{1,2,3};
for (int i : data) { // 数组里面的每一个内容通过循环取出,取出的内容讲给 i
System.out.println(x); // 不需要索引
}
}
}
因为最早的时候,.NET 和JAVA 是两大阵营,.NET 有这样的输出,java没有.....
总结
foreach 这个名词就是通过.NET 学来的
对于 foreach 的使用随意吧