有一年多没写过Java了,借一点儿契机把基础捡一捡,顺便记一下笔记
先放一个比较好的自学网站https://how2j.cn,有一定基础的可以直接跟着做,也不用看视频
首先switch是if else语句的另一种写法
举个栗子:判断星期
public class HelloWorld {
public static void main(String[] args) {
//如果使用if else
int day = 5;
if (day==1)
System.out.println("星期一");
else if (day==2)
System.out.println("星期二");
else if (day==3)
System.out.println("星期三");
else if (day==4)
System.out.println("星期四");
else if (day==5)
System.out.println("星期五");
else if (day==6)
System.out.println("星期六");
else if (day==7)
System.out.println("星期天");
else
System.out.println("这个是什么鬼?");
//如果使用switch
switch(day){
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期天");
break;
default:
System.out.println("这个是什么鬼?");
}
}
}
可以看出,switch语句作为一整块,在处理3个以上分支条件的时候要比if else语句更美观。从原来上讲,因为switch是为case增加了一个数组来保存地址,所以可以直接跳转到分支位置,而if else语句则需要遍历,所以在面对大量分支条件的情况下switch效率更高。
注意switch是不能处理非常量的情况的,所以面对if(a>1&&a<2)这种情况就不要枉费心机了
一个例题
编写程序模拟,小明和小红猜拳,出拳的情况用随机数来处理,执行结果要求,显示小明和小红出拳的内容和比赛的结果,例如:
猜拳大会
小明是锤
小红是布
小红胜利
实现
package kiso_test;
import java.util.Random;
public class Janken {
private static Random rnd = new Random();
static int qMing;
static int qHong;
static String ming = "小明";
static String hong = "小红";
public static void main(String[] args) {
System.out.println("比赛开始");
qMing = chuquan(ming);
qHong = chuquan(hong);
String jgString ; //结果
if (qMing == qHong) {
jgString = "平局";
}else if ((qMing == 0 && qHong == 1)||(qMing == 1 && qHong == 2)||(qMing == 2 && qHong == 0)) {
jgString = ming+"获胜";
}
else {
jgString = hong+"获胜";
}
System.out.println(jgString);
}
private static int chuquan(String p) {
// TODO 出拳的函数
String quan;
int q = rnd.nextInt(3);// nextInt(n),生成一个整数a,使 0<=a<n
try {
switch (q) {
case 0:
quan = "剪";
break;
case 1:
quan = "布";
break;
case 2:
quan = "锤";
break;
default:
quan = "";
break;
}
System.out.println(p + "出" + quan);
} catch (Exception e) {
// TODO: handle exception
System.err.println("switch出错" + e);
}
return q;
}
}