从JDK1.0开始几乎每一个版本都会提供许多的新特性,例如,在JDK之中有以下几个代表性的版本
·JDK1.2:推出了轻量级的JavaGUI设计组件包 Swing
·JDK1.5:退出了心得程序结构的设计思想
·JDK1.8:Lambda表达式、接口的定义加强
现在为止已经接触过了一些新特性,例如:自动装箱与拆箱、swith对String的判断支持。
自动装箱:Integer x=10;
Dobule y=20;
可变参数
现在假设有这样一个要求:要求设计一个方法用于计算任意个数的整数的相加结果,预算这种开发需求在最早的时候只能够通过数组的方式来实现。
范例:最初的实现模式
public class TestDemo {
public static void main(String[] args) {
System.out.println(add(new int[] {1}));
System.out.println(add(new int[] {1,2,3}));
System.out.println(add(new int[] {1,2,3,4,5,6,7,8}));
}
/**
* 实现任意个数的数据的相加处理操作
* @param data 要进行相加操作的数据
* @return 返回的讴歌数据的相加结果
*/
public static int add(int[]data) {
int sum=0;
for(int x=0;x<data.length;x++) {
sum+=data[x];
}
return sum;
}
}
但是这种最初的实现方式本身会存在有缺陷,
我现在需要你设计的并不是一个数组,而是任意多个参数,
所以在JDK1.5之前该操作根本就无法使用,
而从JDK1.5后追加了一个可变参数,也就是说这个时候的方法定义格式:
public [static] [final] 返回值 方法名称 (参数类型 ... 参数名称){ } |
这个参数上使用的“...”实际上就明确描述了一个数组的结构。
public class TestDemo {
public static void main(String[] args) {
System.out.println(add());//随意你传数据的个数
System.out.println(add(new int[] {1}));
System.out.println(add(1,2,3));//可变参数可以接收参数和数组
}
/**
* 实现任意个数的数据的相加处理操作
* @param data 要进行相加操作的数据
* @return 返回的讴歌数据的相加结果
*/
public static int add(int ...data) {//本身还是一个数组
int sum=0;
for(int x=0;x<data.length;x++) {
sum+=data[x];
}
return sum;
}
}
现阶段可以通过一些java中的类库观察到使用,后期开发的时候也会不定期出现在你自己写的代码之中,总之原则:参数个数不确定,随意由用户传递。
注意点:如果要传递多类参数,可变参数写在最后
public static int add(String msg,int ...data)
public static void main(String[] args) {
System.out.println(add("你好"));//随意你传数据的个数
System.out.println(add("你好",new int[] {1}));
System.out.println(add("你好",1,2,3));//可变参数可以接收参数和数组
}
因为可变参数都是靠逗号的 不知道到那个逗号才是String
以后如果要想编写更好的一些程序方法,可变参数是一个很常见的组合
一个方法只能设置一个可变参数。