62、foreach与可变参数(108)

来源:互联网 发布:天书世界阵法1升2数据 编辑:程序博客网 时间:2024/05/17 22:02

1、foreach循环

2、可变参数

 

 

1、foreach循环

JDK1.5也称为JAVASE5.0,这个版本中增加的新功能很多,在后面的课程中会一一为大家讲解。今天要讲的foreach是其中一个。

增强for循环

foreach语法   foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句。从英文字面意思理解foreach也就是“for每一个的意思。实际上也就是这个意思。 (for的一种重载)

 

for(类型变量名称:数组或集合){

       //输出操作

}

 

没有用i来作为递增变量(内部已经封装了实现细节)

普通for循环

       for(inti=0;i<names.length;i++){

           System.out.println("for循环的结果:"+names[i]);

       }

foreach循环

       for(String name:names){ //注意:这里的是一个随意的变量,换成吗m,n都行

           System.out.println("foreach循环方式:"+name); //这里方法的参数是上面的随意变量,且要保持一致,不要把参数传成了字符串

       }

 

优缺点:

foreach循环:代码简洁,但可能产生垃圾对象,因为会不断将数组names中的元素取出赋值给name对象,反复不断生成新的name对象

在未来应用中,比较吃内存的如Android应用就不建议使用,如EE中做电脑应用程序就没影响。总结来就是只适用于单纯只遍历(迭代)不考虑内存时。

 

for循环:可通过变量i来进行一系列输出设置

       for(inti=1;i<names.length;i+=i){

           System.out.println("for循环改变变量i的结果:"+names[i]);

       }

 

 

 

2、可变参数

一个方法中定义好了参数,在调用时必须传入与其一一对应的参数,

但是在JDK1.5之后提供了新的功能,可以根据需要自动传入任意个数的参数。这就是可变参数。

 

可变参数语法:

返回值类型方法名称(数据类型参数名称){

}

 

这里的代表着同一类型的参数1~n个。可变就体现在同一类型参数的个数上

 

数组·也是一种类型,可作为参数传递

 

…连着数据类型写,后接空格形参最为标准。

String... names

…与数据类型间有空格也可。

String ... names

全部连一起也没错。

String...names


可变参数的参数就是一个数组! 


public class VariableParameter_0 {public static void main(String args[]){用数组和可变参数作为参数类型时传参的不同点String[] names = {"缪缪","玲玲","琪琪"};//调用数组作为参数的方法。 封装成数组后传进method1(names);//调用可变参数作为参数的方法,可直接写1~n个参数进去。 相当散装method2("缪缪","玲玲","琪琪");//也可传数组进去method2(names);method3(21,names);}//一个参数列表里有多个可变参数时出现受检异常//public static void method3(int... num,String...names){////}//多个参数时,第二个参数作为可变参数public static void method3(int age,String...names){for(String name:names){System.out.println("My wife is "+age+",name is "+name);}}//参数为可变参数public static void method2(String... names){for(String name:names){System.out.println(name+" ");}}//数组作为参数类型public static void method1(String[] names){for(String name:names){System.out.println(name+" ");}}}

1、一个参数列表里只能有一个可变参数,因为可变参数可表示任意多个,如果有两个可变参数,则都会当成第一个可变参数的参数类型,后面的参数永远不会有。

    public static void method3(int...num,String...names){

      

    }

    在编译期就会报受检期异常

 

2、在参数列表里有多个参数时,可变参数只能是最后一个,理由同上。



阅读全文
0 0
原创粉丝点击