import static java.lang.Math.max
若在定义方法时, 在最后一个形参的类型后增加三点(…, ...位于变量类型和变量名之间,前后有无空格都可以)则表明该形参可以接受多个参数值, 多个参数值被当成数组传入
可变形参只能处于形参列表的最后, 所以一个方法最多只能有一个长度可变的形参
调用包含一个可变形参的方法时, 可以为该形参传入多个参数或一个数组
调用可变参数的方法时, 编译器为该可变参数隐含创建一个数组, 在方法体中以数组的形式访问可变参数
5) 枚举
一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,此类问题在JDK5以前采用自定义带有枚举功能的类解决,Java5以后可以直接使用枚举予以解决。
JDK 5新增的 enum 关键字用于定义一个枚举类。
使用 enum 定义的枚举类默认继承了 java.lang.Enum 类
枚举类的构造器只能使用 private 访问控制符
枚举类的所有实例必须在枚举类中显式列出(, 分隔 ; 结尾). 列出的实例系统会自动添加 public static final 修饰
JDK5中扩展了switch语句,它除了可以接收int, byte, char, short外,还可以接收一个枚举类型
若枚举只有一个成员, 则可以作为一种单例模式的实现方式
枚举类的使用 private final 修饰的属性应该在构造器中为其赋值
若枚举类显式的定义了带参数的构造器, 则在列出枚举值时也必须对应的传入参数
Java中声明的枚举类,均是java.lang.Enum类的孩子,它继承了Enum类的所有方法。常用方法:
name():返回此枚举常量的名称,在其枚举声明中对其进行声明
ordinal():返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
valueof(Class enumClass, String name):返回带指定名称的指定枚举类型的枚举常量。 静态方法
values() 此方法虽然在JDK文档中查找不到,但每个枚举类都具有该方法,它遍历枚举类的所有枚举值非常方便。
请编写一个关于星期几的枚举WeekDay,要求:
枚举值:Mon,Tue,Wed,Thu,Fri,Sat,Sun
该枚举要有一个方法,调用该方法返回中文格式的星期。
Time.java-------------------------------------
package com.hbsi.homework;
public class Time {
private WeekDay weekday;
public WeekDay getWeekday() {
return weekday;
}
public void setWeekday(WeekDay weekday) {
this.weekday = weekday;
}
}
enum WeekDay{
Mon(){
public String toLocalWeekDay() {
return "星期一";
}
},
Tue(){
public String toLocalWeekDay() {
return "星期二";
}
},
Wed(){
public String toLocalWeekDay() {
return "星期三";
}
},
Thu(){
public String toLocalWeekDay() {
return "星期四";
}
},
Fri(){
public String toLocalWeekDay() {
return "星期五";
}
},
Sat(){
public String toLocalWeekDay() {
return "星期六";
}
},
Sun(){
public String toLocalWeekDay() {
return "星期日";
}
} ;
public abstract String toLocalWeekDay();
}
Homework1.java--------------------------
package com.hbsi.homework;
public class Homework1 {
public static void main(String[] args) {
Time time=new Time();
time.setWeekday(WeekDay.Mon);
System.out.println(WeekDay.Mon.toLocalWeekDay());
time.setWeekday(WeekDay.Fri);
System.out.println(WeekDay.Fri.toLocalWeekDay());
}
}