练习(19):写一个类,它接受一个可变参数的String数组。验证你可以向该方法传递一个用逗号分割的String列表,或是一个String[].
public class test5_8_19 {
public static void main(String[] args){
String[] strs = new String[]{"1","2","3","4","5"};
canChange.f(strs);
}
}
class canChange{
static void f(String...strs){
for (String str :
strs) {
System.out.println(str);
}
}
}
可变参数列表就是某个方法的某个参数数量可变,最小可以为0,也就是没有,最大没有限制。这个参数类型可以是object类,也可以是各种基本类型,也可以是包装类型。
练习(20):创建一个使用可变参数列表而不是普通的main()语法的main()。打印所产生的args数组的所以元素,并用各种不同数量的命令行参数来测试它。
普通的mian()语法里面是String[] args
可变参数列表是String…args
题目里说的用不同数量的命令行参数来测试,意思就是,当你使用命令行编译时,在xxx.java 后面跟上一些参数,这些参数会在main()运行时随args传入。
使用IDE达成输入命令行参数的方法前面提到过了,请参考 http://blog.youkuaiyun.com/qq_35396447/article/details/52051790
public static void main(String...args){
for (String str :
args) {
System.out.println(str);
}
}
控制台输出:
hello
world
!
hi
java
!
练习(21):创建一个enum,它包含纸币中最小面值的6种类型。通过value()循环并打印每一个值及其ordinal()。
ordinal()方法是编译器为枚举类型创建的,用来表示类型中某个常量的声明顺序,通俗的讲就是第几个。
static values()方法是按照常量顺序,生成由这些常量构成的数组。
public class test5_9_21 {
public static void main(String[] args){
for (Money money :
Money.values()) {
System.out.println(money + ",ordinal " + money.ordinal());
}
}
}
enum Money{
YIYUAN,WUYUAN,SHIYUAN,ERSHIYUAN,WUSHIYUAN,YIBAIYUAN
}
练习(22):在前面的例子中,为enum写一个switch语句,对于每个case,输出待定货币的描述。
public class test5_9_21 {
public static void main(String[] args){
// for (Money money :
// Money.values()) {
// System.out.println(money + ",ordinal " + money.ordinal());
// }
MoneyValue value = new MoneyValue(Money.WUSHIYUAN);
value.howMuch();
MoneyValue value1 = new MoneyValue(Money.YIYUAN);
value1.howMuch();
}
}
enum Money{
YIYUAN,WUYUAN,SHIYUAN,ERSHIYUAN,WUSHIYUAN,YIBAIYUAN
}
class MoneyValue{
Money money ;//枚举类的引用
public MoneyValue(Money money){
this.money = money;//枚举类的初始化,注意枚举类不能用new关键字,用法类似static常量,直接=Money.xxx即可
}
public void howMuch() {
switch (money) {
case YIYUAN:
System.out.println("一块钱");
break;
case WUYUAN:
System.out.println("五块钱");
break;
case SHIYUAN:
System.out.println("十块钱");
break;
case ERSHIYUAN:
System.out.println("二十块钱");
break;
case WUSHIYUAN:
System.out.println("五十块钱");
break;
case YIBAIYUAN:
System.out.println("一百块钱");
break;
}
}
}