Java基础知识(Day 1 选择结构)

选择结构会根据不同的选择,运行代码也会有不同的的结果。
在Java中能够实现选择结构的语句有两种 if else 语句以及 switch 语句,还可以通过三目运算符 ?: 也可以实现选择结构。

(1)if else 语句

if else 语句结构为:

if(判断条件){
	语句1;
}else{
	语句2;
}

当 if 中的判断条件为真时,执行语句1,否则(条件为假)执行语句2。
并且判断条件只能为boolean类型
(1)通过代码验证 if else 语句

public class Demo {
	public static void main(String args[]) {
		boolean flag = true;
		if(flag){
			System.out.println("if条件满足!");
		}else{
			System.out.println("else条件满足!");
		}
	}
}

代码执行结果为:

D:\>javac Demo.java

D:\>java Demo
if条件满足!

上面代码中判断条件为 true ,执行语句。如果 flag = false 则执行语句2.
(2)验证判断条件为Boolean类型

public class Demo {
	public static void main(String args[]) {
		int a = 1;
		if(a){
			System.out.println("if条件满足!");
		}else{
			System.out.println("else条件满足!");
		}
	}
}

代码执行结果如下:

D:\>javac Demo.java
Demo.java:4: 错误: 不兼容的类型: int无法转换为boolean
                if(a){
                   ^
1 个错误

将判断条件换为 int 型,代码不能通过编译,通过代码执行结果来看,判断条件则为boolean型。

注:在Java中没有 else if 语句,所谓的 else if 语句是两个if语句进行嵌套所得来的。

(2)switch 语句

switch 语句的结构为:

switch (判断条件) {
			case 条件语句1 :
				语句1;
				break;
			case 条件语句2 :
				语句2;
				break;
			case 条件语句3 :
				语句3;
				break;
			default :
				语句0;
		}

switch 语句适用于多选一的情况下,是程序简洁易懂。在switch语句中,当判断条件符合条件语句中的任何一个时,就执行该条件语句下的语句。当判断条件没有任何一个条件语句符合时,会执行 default 中的语句。
break 语句是跳出的意思,在switch语句中,break 的作用是跳出 switch 语句。如果有break语句,在执行完条件语句中的语句后就会跳出 switch 语句,执行下一条语句,如没有则会执行满足条件语句之后的所有语句,包括 default 中的语句(称之为击穿)。
在 switch 语句的判断条件中,判断条件可以为byte,short,int,char这四种类型。
(1)switch语句:有对应的条件语句

public class Demo {
	public static void main(String args[]) {
		int a = 2;
		switch (a) {
			case 1 :
				System.out.println("语句1执行!");
				break;
			case 2 :
				System.out.println("语句2执行!");
				break;
			case 3 :
				System.out.println("语句3执行!");
				break;
			default :
				System.out.println("判断条件不符合任何一个条件!");
		}
		
	}
}

执行结果为:

D:\>javac Demo.java

D:\>java Demo
语句2执行!

上述代码中判断条件为2,应与 case 后数字相同的条件语句对应。对应的应是 case 2 语句,所以执行结果为语句2执行!。
我们将判断条件更改为不符合任何一个条件语句,我们再对switch 进行理。
(2)switch语句:无对应的条件语句

public class Demo {
	public static void main(String args[]) {
		int a = 7;
		switch (a) {
			case 1 :
				System.out.println("语句1执行!");
				break;
			case 2 :
				System.out.println("语句2执行!");
				break;
			case 3 :
				System.out.println("语句3执行!");
				break;
			default :
				System.out.println("判断条件不符合任何一个条件!");
		}
	}
}

代码执行结果为:

D:\>javac Demo.java

D:\>java Demo
判断条件不符合任何一个条件!

判断条件不符合任何一个条件语句,应执行default 中的语句。
(2)击穿问题:无break

public class Demo {
	public static void main(String args[]) {
		int a = 2;
		switch (a) {
			case 1 :
				System.out.println("语句1执行!");
			case 2 :
				System.out.println("语句2执行!");
			case 3 :
				System.out.println("语句3执行!");
			default :
				System.out.println("判断条件不符合任何一个条件!");
		}
		
	}
}

代码执行结果为:

D:\>javac Demo.java

D:\>java Demo
语句2执行!
语句3执行!
判断条件不符合任何一个条件!

在代码中满足条件语句2,可在此条件语句之后的语句都进行了输出,其原因是因为没有 break 语句进行跳出switch语句,所以将之后的语句都执行。我们称此类问题为击穿问题。

(3)三目运算符 ?:

三目运算符的结构为:

判断条件 ? 语句1 : 语句2

三目运算符相当于一个简写的if else 语句,当判断条件为真时,执行语句1,否则执行语句2。
代码如下:

public class Demo {
	public static void main(String args[]) {
		int a = 7;
		int b = 3;
		System.out.println(a>b ? "判断条件为真" : "判断条件为假");
	}
}

执行结果为:

D:\>javac Demo.java

D:\>java Demo
判断条件为真

在代码中判断条件 a>b 显然为真,应该执行语句1。

选择结构的简单例题