java学习笔记(六)-控制流语句-条件判断
文章目录
控制语句的作用
源文件中的语句通常按显示顺序从上到下执行。
控制流语句通过采用决策,循环和分支来分散执行流,使您的程序可以有条件地执行特定的代码块。
if…和if…else语句
语法规则
if…
语句的语法如下:
if(布尔表达式)
{
//如果布尔表达式为true将执行的语句
}
如果布尔表达式的值为 true,则执行 if 语句中的代码块,否则执行 if 语句块后面的代码。
Example
public class Test {
public static void main(String args[]){
int x = 10;
if( x < 20 ){
System.out.print("这是 if 语句");
}
}
}
if…else语句
语句的语法如下:
if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块会被执行。
if(布尔表达式){
//如果布尔表达式的值为true
}else{
//如果布尔表达式的值为false
}
Example
public class Test {
public static void main(String args[]){
int x = 30;
if( x < 20 ){
System.out.print("这是 if 语句");
}else{
System.out.print("这是 else 语句");
}
}
}
switch(参数)…case…
与if-then
和if-then-else
语句不同,该switch
语句可以具有许多可能的执行路径。一个switch
工作原理与byte
,short
,char
,和int
原始数据类型。它还可以与枚举类型(讨论 枚举类型)的 String
类,以及一些特殊的类,包装某些基本类型: Character
, Byte
, Short
,和 Integer
(在讨论 数字和字符串)。
public class SwitchDemo {
public static void main(String[] args) {
int month = 8;
String monthString;
switch (month) {
case 1: monthString = "January";
break;
case 2: monthString = "February";
break;
case 3: monthString = "March";
break;
case 4: monthString = "April";
break;
case 5: monthString = "May";
break;
case 6: monthString = "June";
break;
case 7: monthString = "July";
break;
case 8: monthString = "August";
break;
case 9: monthString = "September";
break;
case 10: monthString = "October";
break;
case 11: monthString = "November";
break;
case 12: monthString = "December";
break;
default: monthString = "Invalid month";
break;
}
System.out.println(monthString);
}
}
switch
语句的主体称为switch块。switch
块中的语句可以用一个或多个case
或default
标签来标记。该switch
语句计算其表达式,然后执行匹配case
标签后的所有语句。
根据可读性和该语句正在测试的表达式来决定是使用if-then-else
语句还是使用语句switch
。一条if-then-else
语句可以基于值或条件的范围来测试表达式,而一条switch
语句只能基于单个整数,枚举值或String
对象来测试表达式。
另一个兴趣点是break
声明。每个break
语句都终止该封闭的switch
语句。控制流继续执行该switch
块之后的第一条语句。该break
语句是必需的,因为没有它们,switch
块中的语句会陷入:匹配case
标签之后的所有语句将按顺序执行,而不管后续case
标签的表达如何,直到break
遇到一条语句为止。
在switch语句中使用字符串
可以String
在switch
语句的表达式中使用对象。
public class StringSwitchDemo {
public static int getMonthNumber(String month) {
int monthNumber = 0;
if (month == null) {
return monthNumber;
}
switch (month.toLowerCase()) {
case "january":
monthNumber = 1;
break;
case "february":
monthNumber = 2;
break;
case "march":
monthNumber = 3;
break;
case "april":
monthNumber = 4;
break;
case "may":
monthNumber = 5;
break;
case "june":
monthNumber = 6;
break;
case "july":
monthNumber = 7;
break;
case "august":
monthNumber = 8;
break;
case "september":
monthNumber = 9;
break;
case "october":
monthNumber = 10;
break;
case "november":
monthNumber = 11;
break;
case "december":
monthNumber = 12;
break;
default:
monthNumber = 0;
break;
}
return monthNumber;
}
public static void main(String[] args) {
String month = "August";
int returnedMonthNumber =
StringSwitchDemo.getMonthNumber(month);
if (returnedMonthNumber == 0) {
System.out.println("Invalid month");
} else {
System.out.println(returnedMonthNumber);
}
}
}
注意:此示例检查switch
语句中的表达式是否为null
。确保任何switch
语句中的表达式都不为空,以防止NullPointerException
引发。