问题描述
/**引入增强for循环的原因:在JDK5以前的版本中,遍历数组或集合中的元素,需先获得数组的长度或集合的迭代器,比较麻烦!因此JDK5中定义了一种新的语法——增强for循环,以简化此类操作。增强for循环只能用在数组、或实现Iterator接口的集合类上语法格式:for(变量类型变量 :需迭代的数组或集合){}*///java中的增强for循环int[]arry={1,2,3,4};for(inti:arr){System.out.println{i};}//for循环只适合取值,而不能改变原数组中的元素。以下代码是不可行的intarr[]=newint[5];for(intnum:arr){num=1;}System.out.println(arr[0]);//打印出的仍是初始值0/**从JDK5开始,Java允许为方法定义长度可变的参数。语法:publicvoidfoo(int…args){}**/publicvoidsum(int...nums){//可变参数其实就可以看作一个长度可变的数组intsum=0;for(inti:nums){sum+=i;}System.out.println(sum);}//注意以下的情况是错误的,因为可变数组的长度位置,故无法识别参数列表中后面的numpublicvoidfoo(int…args,intnum){}//很明显,当改为以下代码就对了publicvoidfoo(intnum,int…args){}/***枚举类enum具有如下特性:1、枚举类也是一种特殊形式的Java类。2、枚举类中声明的每一个枚举值代表枚举类的一个实例对象。3、与java中的普通类一样,在声明枚举类时,也可以声明属性、方法和构造函数,但枚举类的构造函数必须为私有的(这点不难理解)。4、枚举类也可以实现接口、或继承抽象类。5、JDK5中扩展了swith语句,它除了可以接收int,byte,char,short外,还可以接收一个枚举类型。6、若枚举类只有一个枚举值,则可以当作单态设计模式使用。**///例:设计一个Grade类,ABCDE,并能返回该等级的分数范围enumGrade{A("100-90"),B("89-80"),C("79-70"),D("69-60"),E("59-0");privateStringvalue;//用以封装每个对象的分数privatevoidsetValue(Stringvalue){this.value=value;}privateStringgetValue(){returnthis.value;}}publicvoidprint(Gradeg){Stringvalue=g.getValue();System.out.println(value);}//带抽象方法的枚举类型enumGrade{A("100-90"){//只要在枚举类型内实现该抽象方法即可publicStringLocalValue(){return"优";}}...//以此类推privateStringvalue;//用以封装每个对象的分数privateGrade(Stringvalue){//枚举的构造函数必须是私有的this.value=value;}publicStringgetValue(){returnthis.value;}publicabstractStringLocalValue(){};}publicvoidprint(Gradeg){Stringvalue=g.LocalValue();System.out.println(value);}/**枚举类型的常用方法:1、name()2、ordinal()3、valueof(ClassenumClass,Stringname)4、values()此方法虽然在JDK文档中查找不到,但每个枚举类都具有该方法,它遍历枚举类的所有枚举值非常方便。*///测试常用方法System.out.println(Grade.C.name());//得到C的名称System.out.println(Grade.C.ordinal());//得到C在枚举类中的位置Stringstr="A";//该字符串必须是枚举类中存在的枚举值Gradeg=valueof(str);//有三种重载的方法System.out.println(g);Grade[]gs=Grade.values();//得到所有枚举值for(Gradeg1:gs){System.out.println(g1);}
解决方案
本帖最后由 greenlight_74110 于 2015-01-22 18:49:40 编辑
解决方案二:
其实这几个我平时用的都不多,虽然类似foreach的for确实很方便,但是以前的写法写惯了,习惯难改至于enum就用的更少了,更习惯用staticfinalint参数数量可变用的也很少,一般都还是习惯用数组
解决方案三:
虽然用得不多但学了很受用涨了很多姿势....