写一个程序,判断某一年是否为闰年
(被4整除但不能被100整除能被400整除)是闰年 否则是平年
编程习惯
在实现分支判断时, 一个好的习惯是把匹配成功率高的判断放在前边,可以提高效率
在表达式判断时,我们尽量使用确定的值去跟不确定的值去判断
if(10 == x) 而不是 if(x == 10)
语法:
switch(表达式){
case 取值1: 语句块1;
break;
case 取值n: 语句块n;
break;
default: 语句块n+1;
break;
}
switch与if嵌套
switch(表达式){
case 取值n: 语句块n;
if(表达式){…}
break;
default: 语句块n+1;
break;
}
switch语句有关规则
1、表达式的返回值必须是下述几种类型之一:int, byte, char, short,确定的结果,jdk1.7后支持String;
2、case子句中的取值必须是常量,且所有case子句中的取值应是不同的;
3、default子句是可选的;
4、break语句用来在执行完一个case分支后使程序跳出switch语句块;如果case后面没有写break则直接往下面执行!
5、case后面的执行体可写{ }也可以不写{ }
每一个case子句的值必须是唯一的常量值 之后必须加break 不然会继续执行
default子句可以省略
package Stringlei;
import java.util.Scanner;
public class Bianliang {
public static void main(String[] args) {
//编写一程序实现如下功能:输入1、2、3、4、5、6、7(分别对应星期一至星期日)中的任何一个数。
Scanner input = new Scanner(System.in);
System.out.println("今天是星期几:");
int day = input.nextInt();
//case 一定要加break 不然会继续执行下边的case
switch (day) {
case 1:
System.out.println("今天是星期一");
int method = input.nextInt();
if(method == 1) {
System.out.println("公交出行");
}else {
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("地球上不适合你, 请回火星吧");
break;
}
}
}
if vs switch
同:都是选择分支语句。
异:1、语法不同。
2、语句后表达式值的类型不同,if语句表达式值的类型是boolean,switch分支表达式值的类型是byte,short,char,int,枚举,String。
3、适用场景
if:变量的值在某个区间之内。
switch:变量的值是某个定值。
if vs 三目运算
三目运算符都可以使用if语句实现,反之不成立。
Java 7 switch支持String的实现原理:
这个新特性是在编译器这个层次上实现的
在编译的过程中,编译器会根据源代码的含义进行转换,不同的Java编译器可能采用不同的方式来转换
比如:如果switch语句中只包含一个case语句,那么就可以简单的将其转换成一个if语句。
如果包含一个case和一个default语句,就可以转换成if-else语句。而对于复杂的情况(多个case语句),
也可以转换成Java 7 之前的switch语句,只不过使用字符串的哈希值(整数)作为switch语句表达式的值