Java 中的决策(if、if-else、switch、break、continue、jump)
编程中的决策与现实生活中的决策类似。在编程中也会遇到一些情况,我们希望在满足某些条件时执行特定的代码块。
编程语言使用控制语句根据某些条件控制程序的执行流程。它们用于使执行流程根据程序状态的变化前进和分支。
Java的选择语句:
if
if-else
nested-if
if-else-if
switch-case
jump – break, continue, return
1. if:
if语句是最简单的决策语句。它用于决定是否执行某个语句或语句块,即如果某个条件为真,则执行语句块,否则不执行。
语法:
代码语言:javascript复制if(condition)
{
//条件为 true时执行的语句
}
这里,评估后的条件要么为真,要么为假。if 语句接受布尔值——如果该值为 true,那么它将执行其下的语句块。 如果我们在if(condition)
之后不提供大括号“{”和“}”,则默认情况下 if 语句将认为直接的一条语句位于其块内。例如,
代码语言:javascript复制if(condition) //假设条件为真
statement1; //if块的一部分
statement2; // 与if块分离
//如果条件为真if块将语句1视为其一部分,并仅在true条件下执行
//语句2将与if块分离,因此无论条件为true还是false,它都将始终执行。
例子:
代码语言:javascript复制//用Java程序说明没有花块的If语句
import java.util.*;
class IfDemo {
public static void main(String args[])
{
int i = 10;
if (i < 15)
System.out.println("Inside If block"); // if块的一部分(在if条件后立即执行一个语句)
System.out.println("10 is less than 15"); //总是在if块之外执行
//将执行此语句
//好像在默认情况下再次考虑一个语句下面的语句在if块之外
System.out.println("I am Not in if");
}
}
时间复杂度: O(1)
辅助空间: O(1)
2. if-else:
if 语句本身告诉我们,如果条件为真,它将执行语句块,如果条件为假,则不会执行。但是如果条件为假我们想做点别的事情怎么办?这里是 else 语句。我们可以使用 else 语句和 if 语句来在条件为 false 时执行一段代码。
语法:
代码语言:javascript复制if (condition)
{
// 如果条件为 true则执行此块
}
else
{
// 如果条件为 false则执行此块
}
例子:
代码语言:javascript复制// 用于说明if-else语句的Java程序
import java.util.*;
class IfElseDemo {
public static void main(String args[])
{
int i = 10;
if (i < 15)
System.out.println("i is smaller than 15");
else
System.out.println("i is greater than 15");
}
}
输出
代码语言:javascript复制i is smaller than 15
时间复杂度: O(1) 辅助空间: O(1)
3、嵌套if:
语法:
代码语言:javascript复制if (条件1)
{
// 当条件1为真时执行
if (条件2)
{
// 当条件2为真时执行
}
}
例子:
代码语言:javascript复制// 说明 if 条件控制的执行程序
import java.util.*;
class NestedIfDemo {
public static void main(String args[])
{
int i = 10;
if (i == 10 || i<15) {
if (i < 15)
System.out.println("i is smaller than 15");
//嵌套-if语句只有在上述语句时才会执行
if (i < 12)
System.out.println(
"i is smaller than 12 too");
} else{
System.out.println("i is greater than 15");
}
}
}
输出:
代码语言:javascript复制i is smaller than 15
i is smaller than 12 too
时间复杂度: O(1)
辅助空间: O(1)
4、if-else-if 梯形图:
代码语言:javascript复制if(条件)
语句;
else if(条件)
语句;
else
语句;
例子:
代码语言:javascript复制//说明if-else-if梯形图的Java程序
import java.util.*;
class ifelseifDemo {
public static void main(String args[])
{
int i = 20;
if (i == 10)
System.out.println("i is 10");
else if (i == 15)
System.out.println("i is 15");
else if (i == 20)
System.out.println("i is 20");
else
System.out.println("i is not present");
}
}
输出
代码语言:javascript复制i is 20
时间复杂度: O(1) 辅助空间: O(1)
5. switch-case:
switch语句是多路分支语句。它提供了一种根据表达式的值将执行分派到代码的不同部分的简单方法。
语法:
代码语言:javascript复制switch (表达式)
{
case value1:
语句1;
休息;
case value2:
语句2;
休息;
case value3:
语句N;
休息;
default:
声明默认值;
}
代码语言:javascript复制/*package anything不要在此处写程序包名称*/
import java.io.*;
class GFG {
public static void main (String[] args) {
int num=20;
switch(num){
case 5 : System.out.println("It is 5");
break;
case 10 : System.out.println("It is 10");
break;
case 15 : System.out.println("It is 15");
break;
case 20 : System.out.println("It is 20");
break;
default: System.out.println("Not present");
}
}
}
输出
代码语言:javascript复制It is 20
时间复杂度:O(1)
空间复杂度:O(1)
- 表达式可以是 byte、short、int char 或枚举类型。从JDK7开始,表达式也可以是String类型。
- 不允许出现重复的大小写值。
- 默认语句是可选的。
- Break 语句在 switch 内部使用来终止语句序列。
- 如果没有break关键字,break语句是必需的,switch块中的语句会失败。
- 如果省略break关键字,则继续执行下一个case。
6.跳转:
Java支持三种跳转语句:break、continue和return。这三个语句将控制权转移到程序的另一部分。
- Break:在Java中,break主要用于:
- 在 switch 语句中终止序列(如上所述)。
- 退出循环。
- 用作 goto 的“文明”形式。
- 继续:有时强制循环的早期迭代很有用。也就是说,您可能希望继续运行循环,但停止处理此特定迭代的循环体中的其余代码。实际上,这是一个刚刚经过循环体、到达循环末尾的 goto。continue 语句执行这样的操作。
例子:
代码语言:javascript复制//Java程序说明使用在if语句中继续
import java.util.*;
class ContinueDemo {
public static void main(String args[])
{
for (int i = 0; i < 10; i ) {
//如果数字是偶数,跳过继续下一步执行
if (i % 2 == 0)
continue;
//如果数字是奇数,打印出来
System.out.print(i " ");
}
}
}
输出
代码语言:javascript复制1 3 5 7 9
时间复杂度: O(1) 辅助空间: O(1)
- Return: return 语句用于显式从方法返回。也就是说,它使程序控制权转移回方法的调用者。
例子:
代码语言:javascript复制//使用return说明的Java程序
import java.util.*;
public class Return {
public static void main(String args[])
{
boolean t = true;
System.out.println("Before the return.");
if (t)
return;
// Compiler will bypass every statement
// after return
System.out.println("This won't execute.");
}
}
输出
代码语言:javascript复制Before the return.
时间复杂度: O(1) 辅助空间: O(1)