文章目录
循环
顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,就需要使用循环结构。Java
中有三种主要的循环结构:while
、do while
和for
。Java 5
引入了一种主要用于数组的增强型for
循环。
while循环
while
是最基本的循环,它的结构为:
while ( 布尔表达式 ) {
/* 循环内容 */
}
只要布尔表达式为true
,循环就会一直执行下去:
public class Test {
public static void main(String args[]) {
int x = 10;
while (x < 20) {
System.out.print("value of x:" + x);
x++;
System.out.print("\n");
}
}
}
执行结果:
value of x:10
value of x:11
value of x:12
value of x:13
value of x:14
value of x:15
value of x:16
value of x:17
value of x:18
value of x:19
“do while”循环
对于while
语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。do while
循环和while
循环相似,不同的是,do while
循环至少会执行一次:
do {
/* 代码语句 */
} while ( 布尔表达式 );
注意,布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了。如果布尔表达式的值为true
,则语句块一直执行,直到布尔表达式的值为false
:
public class Test {
public static void main(String args[]) {
int x = 10;
do {
System.out.print("value of x:" + x);
x++;
System.out.print("\n");
} while (x < 15);
}
}
执行结果:
value of x:10
value of x:11
value of x:12
value of x:13
value of x:14
for循环
虽然所有循环结构都可以用while
或者do while
表示,但Java
提供了for
循环,使一些循环结构变得更加简单:
for ( 初始化; 布尔表达式; 更新 ) {
/* 代码语句 */
}
关于for
循环,有以下几点说明:
- 最先执行初始化步骤。可以声明一种类型,也可以初始化一个或多个循环控制变量,也可以是空语句。
- 然后检测布尔表达式的值。如果为
true
,循环体被执行;如果为false
,循环终止,开始执行循环体后面的语句。 - 执行一次循环后,更新循环控制变量。
- 再次检测布尔表达式,循环执行上面的过程。
public class Test {
public static void main(String args[]) {
for (int x = 10; x < 15; x = x + 1) {
System.out.print("value of x:" + x);
System.out.print("\n");
}
}
}
执行结果:
value of x:10
value of x:11
value of x:12
value of x:13
value of x:14
Java增强for循环
Java 5
引入了一种主要用于数组的增强型for
循环,语法格式如下:
for ( 声明语句 : 表达式 ) {
/* 代码句子 */
}
声明语句用于声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。表达式是要访问的数组名,或者是返回值为数组的方法:
public class Test {
public static void main(String args[]) {
int[] numbers = {10, 20, 30, 40, 50};
for (int x : numbers) {
System.out.print(x);
System.out.print(",");
}
System.out.print("\n");
String[] names = {"James", "Larry", "Tom", "Lacy"};
for (String name : names) {
System.out.print(name);
System.out.print(",");
}
}
}
执行结果:
10,20,30,40,50,
James,Larry,Tom,Lacy,
break关键字
break
主要用在循环语句或者switch
语句中,用来跳出整个语句块。break
跳出最里层的循环,并且继续执行该循环下面的语句:
public class Test {
public static void main(String args[]) {
int[] numbers = {10, 20, 30, 40, 50};
for (int x : numbers) {
if (x == 30) { /* x等于30时跳出循环 */
break;
}
System.out.print(x);
System.out.print("\n");
}
}
}
执行结果:
10
20
continue关键字
continue
适用于任何循环控制结构中,作用是让程序立刻跳转到下一次循环的迭代:
public class Test {
public static void main(String args[]) {
int[] numbers = {10, 20, 30, 40, 50};
for (int x : numbers) {
if (x == 30) {
continue;
}
System.out.print(x);
System.out.print("\n");
}
}
}
执行结果:
10
20
40
50
分支
顺序结构只能顺序执行,不能进行判断和选择,因此需要分支结构。Java
有两种分支结构:if
和switch
。
if语句
一个if
语句包含一个布尔表达式和一条或多条语句。if
语句的用语法如下:
if ( 布尔表达式 ) {
/* code */
}
如果布尔表达式的值为true
,则执行if
语句中的代码块,否则执行if
语句块后面的代码:
public class Test {
public static void main(String args[]) {
int x = 10;
if (x < 20) {
System.out.print("这是if语句");
}
}
}
执行结果:
这是if语句
“if else”语句
if
语句后面可以跟else
语句,当if
语句的布尔表达式值为false
时,else
语句块会被执行。if else
的用法如下:
if ( 布尔表达式 ) {
/* 如果布尔表达式的值为true */
} else {
/* 如果布尔表达式的值为false */
}
代码如下:
public class Test {
public static void main(String args[]) {
int x = 30;
if (x < 20) {
System.out.print("这是if语句");
} else {
System.out.print("这是else语句");
}
}
}
执行结果:
这是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时执行的代码 */
}
代码如下:
public class Test {
public static void main(String args[]) {
int x = 30;
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 语句");
}
}
}
执行结果:
Value of X is 30
嵌套的“if else”语句
使用嵌套的if else
语句是合法的,也就是说你可以在另一个if
或者else if
语句中使用if
或者else if
语句。语法格式如下:
if ( 布尔表达式1 ) {
/* 如果布尔表达式1的值为true时执行的代码 */
if ( 布尔表达式2 ) {
/* 如果布尔表达式2的值为true时执行的代码 */
}
}
代码如下:
public class Test {
public static void main(String args[]) {
int x = 30;
int y = 10;
if (x == 30) {
if (y == 10) {
System.out.print("X = 30 and Y = 10");
}
}
}
}
执行结果:
X = 30 and Y = 10
switch语句
switch
语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支,语法格式如下:
switch ( expression ) {
case value :
/* 语句 */
break; /* 可选 */
case value :
/* 语句 */
break; /* 可选 */
/* 你可以有任意数量的case语句 */
default : /* 可选 */
/* 语句 */
}
switch
语句有如下规则:
switch
语句中的变量类型可以是byte
、short
、int
或者char
。从Java SE 7
开始,switch
支持字符串类型了,同时case
标签必须为字符串常量或字面常量。switch
语句可以拥有多个case
语句,每个case
后面跟一个要比较的值和冒号。case
语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。- 当变量的值与
case
语句的值相等时,那么case
语句之后的语句开始执行,直到break
语句出现才会跳出switch
语句。 - 当遇到
break
语句时,switch
语句终止,程序跳转到switch
语句后面的语句执行。case
语句不必须要包含break
语句,如果没有break
语句出现,程序会继续执行下一条case
语句。 switch
语句可以包含一个default
分支,该分支必须是switch
语句的最后一个分支。default
在没有case
语句的值和变量值相等的时候执行,不需要break
语句。
public class Test {
public static void main(String args[]) {
char grade = 'C';
switch (grade) {
case 'A':
System.out.println("优秀");
break;
case 'B':
case 'C':
System.out.println("良好");
break;
case 'D':
System.out.println("及格");
case 'F':
System.out.println("你需要再努力努力");
break;
default:
System.out.println("未知等级");
}
System.out.println("你的等级是" + grade);
}
}
执行结果:
良好
你的等级是C