内容

  • if 语句
  • if…else语句
  • if...else if…else语句
  • 嵌套的if语句
  • Switch语句

If语句

一个 if 语句包含一个布尔表达式和一条或多条语句。

如果布尔表达式的值为 true,则执行 if 语句中的代码块,否则执行 if 语句块后面的代码。

if(布尔表达式){
   //如果布尔表达式为true将执行的语句
}

我们来测试一下

int x = 12;
if( x < 20 ){
      System.out.println("执行了“);
}

if...else语句

if 语句后面可以跟 else 语句,当 if 语句的布尔表达式值为 false 时,else 语句块会被执行。

if(布尔表达式){
   //如果布尔表达式的值为true
}else{
   //如果布尔表达式的值为false
}

我们来测试一下

int x = 30;
if( x < 20 ){
	System.out.print("这是 if 语句");
}else{
	System.out.print("这是 else 语句");
}

if...else if…else语句

如果我有多重可能怎么办呢?

我们就可以 if...else if…else语句。但是需要注意

  • if 语句至多有 1 个 else 语句,else 语句在所有的 else if 语句之后。
  • if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。
  • 一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。
if(布尔表达式 1){
   //如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
   //如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
   //如果布尔表达式 3的值为true执行代码
}else {
   //如果以上布尔表达式都不为true执行代码
}

我们来测试一下

int x = 20;
if( x == 10 ){
    System.out.print("Value of X is 10");
}else if( x == 20 ){
    System.out.print("Value of X is 20");
}else if( x == 30 ){
    System.out.print("Value of X is 30");
}else{
    System.out.print("这是 else 语句");
}

嵌套的if语句

我们还可以在上面讲到的这些If语句里面,嵌套的 if…else 语句。

比如说

if(布尔表达式 1){
   ////如果布尔表达式 1的值为true执行代码
   if(布尔表达式 2){
      ////如果布尔表达式 2的值为true执行代码
      //// 这里还可以继续嵌套。
   } 
    
}

我们来实验一下

int x = 30;
int y = 10;

if( x == 30 ){
    if( y == 10 ){
   		 System.out.print("X = 30 and Y = 10");
    }
}

switch语句

switch 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

首先还是先看一下语法

switch(expression){
    case value :
       //语句
       break; //可选 如果不写,即使这行执行了,还是会继续去判断。
    case value :
       //语句
       break; //可选
    //你可以有任意数量的case语句
    default : //可选
       //语句
}

关于一下Swith的规则

  • switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java 7 开始,switch 支持字符串 String 类型了。
  • switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
  • case 语句中的值的数据类型必须与变量的数据类型相同。 expression和value的值是相同的。
  • 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。
  • 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。
  • switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。

我们先看一个正常的使用

char grade = 'C';

switch(grade)
{
    case 'A' :
        System.out.println("优秀");
        break;
    case 'B' :
    case 'C' :
        System.out.println("良好");
        break;
    case 'D' :
        System.out.println("及格");
        break;
    case 'F' :
        System.out.println("你需要再努力努力");
        break;
    default :
        System.out.println("未知等级");
}
System.out.println("你的等级是 " + grade);

我们在看一下没有Break的话会是什么样的呢?

  • 没有匹配值
int i = 5;
switch(i){
    case 0:
        System.out.println("0");
    case 1:
        System.out.println("1");
    case 2:
        System.out.println("2");
    default:
        System.out.println("default");
}

如果 case 语句块中没有 break 语句时,Java并不会顺序输出每一个 case 对应的返回值,而是继续匹配,匹配不成功则返回默认 case。

  • 有匹配值
int i = 1;
switch(i){
    case 0:
        System.out.println("0");
    case 1:
        System.out.println("1");
    case 2:
        System.out.println("2");
    default:
        System.out.println("default");
}

如果 case 语句块中没有 break 语句时,匹配成功后,从当前 case 开始,后续所有 case 的值都会输出。

这个会输出

1
2
default
  • 有匹配值但是case语句块没有Break
	  int i = 1;
      switch(i){
         case 0:
            System.out.println("0");
         case 1:
            System.out.println("1");
         case 2:
            System.out.println("2");
         case 3:
            System.out.println("3"); break;
         default:
            System.out.println("default");
      }

如果当前匹配成功的 case 语句块没有 break 语句,则从当前 case 开始,后续所有 case 的值都会输出,如果后续的 case 语句块有 break 语句则会跳出判断。

这个会输出

1
2
3

或 与 非

短路

或 or

||


与 and

&&

非 not

不短路

或 or

|


与 and

&

进制和下划线

// 0b 二进制
// 0  八进制
// 0x 十六进制
// 1-9 十进制

// 二进制
//  1  -> 1
//  10 -> 2
//  11 -> 3
//  100 -> 4

//  八进制
//  7  -> 7
//  8  -> 10
//  9  -> 11
//  16 -> 20


// 十六进制
// a -> 10
// b -> 11
// f -> 15
// 10-> 16

// 下划线 Java SE 7 
int d = 1_000_000;