【Java】:程序流程的控制

71 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第19天,点击查看活动详情

1️⃣前言

今天的笔记内容是:

  • 流程控制

2️⃣内容

2.1、块级作用域

C++ 一样,java也是有块级作用域,即由一对花括号括起来的若干条 java 语句,块确定了变量的作用域。块级之间可以相互嵌套。只不过无法在嵌套的两个块中声明同名的变量。这就与 C++ 不同。在 C++ 中,我们可以在两个嵌套的块级中定义同名变量,这样使得内层同名变量可以覆盖外层同名变量。而 java 却不允许这种操作。

举个例子:

public static void main(String[] args){
	int value = 0;
	...
	{
		int value = 0; //错误!无法在嵌套的两个块中声明同名的变量。
	}
}

在上述例子中,java代码无法通过编译。


2.2、条件语句

if

格式如下:

if (条件表达式) {
	若干语句;
	...
}

当然,如果你的 if 语句中只有一条语句,那么你可以省略花括号(不过还是建议花括号不省略要好,这可以提高代码可读性)


if else

格式如下:

if (条件表达式) {
	若干语句;
	...
}else {
	当if语句的条件为false时,执行else语句
}

注意,else子句会根据就近原则,选择离自己最近的if语句进行匹配。

举个例子:

if()
...
if()
...
else
...

在上述例子中,else 语句会匹配第二个 if 语句。


if ... else if ...

我们可以重复交替的使用 if else 语句。

格式如下:

if(条件1){
	...
}else if(条件2){
	...
}else if(条件3){
	...
}...
else {
	当上述条件都不符合时,执行else语句
}

2.3、循环语句

while

格式如下:

while(条件) {
	若干语句
	...
}
  • 当条件为 true 时,执行 while 块中的语句。
  • 如果条件为 false,则 while 循环体一次也不执行。

do ... while

格式如下:

do{
	若干语句
	...
}while(条件) 

可以看到,do ... while语句首先会执行一遍块中的语句,再来检测此时循环条件是否为真,如果为true,则再一次重复执行语句,再检测循环条件,以此类推。当循环条件为假时,退出循环。

for

还有一种循环叫做for循环。

格式如下:

for(初始化计数器; 检测计数器; 更新计数器){
	若干语句
	...
}

从格式中可以看出,for循环语句的参数中:

  • 第一部分通常是计数器的初始化
  • 第二部分是每一轮循环执行之前要检测的循环条件
  • 第三部分是计数器的更新语句
  • 注意:这三大部分之间通过分号;隔开,并且一般都是对同一个计数器变量进行初始化、检测以及更新。

因此,for循环是一种可控制迭代的循环结构,其利用每次迭代之后更新的计数器或者类似的变量来控制迭代次数。

另外需要注意,无论是计数器变量还是for循环内部定义的变量,在循环体外部是无法访问的,也就是说这些变量只能在循环体的内部使用。如果我们希望在for循环体之外使用循环体内部的有关变量参与的运算,就必须在循环语句的外部进行声明。

举个例子,我们利用for循环来计算1+2+3+...+9+10,就需要在外部先声明一个变量来存放参与for循环的计数器变量i

int result = 0;
for(int i = 1; i<=10; i++) {
	result += i;
}
System.out.println(result);  //=> 55

2.4、选择语句

switch

与C++一样,java 也拥有switch语句。可用于多重选择分支结构。

举个例子,我们需要构建一个具有三个选项的菜单模块,可以使用以下代码:

Scanner in = new Scanner(System.in);
System.out.println("请输入选项(1 / 2 / 3)");
int choice = in.nextInt();
switch (choice){
    case 1:
        若干语句...
        break;
    case 2:
        若干语句...
        break;
    case 3:
        若干语句...
        break;
    default:
        若干语句...
        break;
}

可以看到,在上述例子中,switch语句将从与选项值匹配的case值开始执行,直到遇见break语句。如果没有相匹配的case值,则执行default中的语句。


3️⃣写在最后

好了,今天的笔记就记到这里。