第一种形式:
if(true){
statements...
}
第二种形式:
if(true)
{
statements...
}
else
{
statements...
}
第三种形式:
if(true)
{
statements...
}
else if(true)
{
statements...
}
else
{
statements...
}
如果if()、else if()和else后的语句块只有一行语句时,则可以省略花括号,因为单行语句本身就是一个
int a = 5
if(a > 4)
System.out.println("a大于4");
else
System.out.println("a不大于4");
通常我们不建议省略if、else、else if后执行块的花括号,即使条件执行体只有一行代码,因为保留花括号
public static void main(String[] args) {
int age = 45;
if(age > 20){
System.out.println("青年人");
}else if(age > 40){
System.out.println("中年人");
}else if(age > 60){
System.out.println("老年人");
}
}
运行一下会发现结果是”青年人“,而我们的本意是45岁是中年人。显然出现了问题。
public static void main(String[] args) {
int age = 40;
if (age > 60) {
System.out.println("老年人");
} else if (age > 40) {
System.out.println("中年人");
} else if (age > 20) {
System.out.println("青年人");
}
}
这样运行就得到正确结果。为了避免出现上面的错误,在使用if...else语句有一条基本规则:总是优先把包含
switch(expression)
{
case condition1:
{
statements...
break;
}
case condition2:
{
statements...
break;
}
case condition3:
{
statements...
break;
}
default:
{
statements...
break;
}
}
这种分支语句的执行是先对expression求值,然后依次匹配condition1、condition2...conditionN等值,
才会中断。所以说千万不能省略break;
因为Java的switch语句允许case后代码块没有break,下面看一段代码,省略了break会使什么情况:
public static void main(String[] args) {
char score = 'C';
switch (score) {
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("中");
// break;
case 'D':
System.out.println("及格");
// break;
case 'F':
System.out.println("不及格");
// break;
default:
System.out.println("成绩输入错误");
// break;
}
}
中
及格
不及格
成绩输入错误
这个运行结果看起来比较奇怪,但这是由switch语句的运行流程决定的:switch语句会先求出expression表达式的值,然后拿这个表达式的值和case标签后的值进行比较,一旦遇到相等的值,程序
就开始执行这个case标签后的代码,不再判断与后面case、default标签的条件是否匹配,除非遇到break才会结束。