Java 关键字 – for, while

for, while都是循环结构关键字,作用为支持重复执行相同代码,掌握了这两个关键字的使用,基本各种数据循环都可以实现。

示例: 按序输出26个字母

for(char c='a'; a<='z'; a++){
     System.out.println(a);
}
char c='a';
while (a<='z'){
   System.out.println(a);
}

for

for 语法结构有两种:条件for 及for-each 结构

//for 结构
for (初始化表达式; 条件表达式; 步进表达式) {
    // 循环体:当条件表达式为true时执行
}。

初始化表达式 一般为循环控制变量的初始化,只在循环开始时执行一次, 可为空。
条件表达式 循环控制表达式,可以为空,如果有则必须为布尔表达式,每次循环前都会执行,且只有表达为true 时,循环才会执行
步进表达式 循环体执行完后执行的表达式, 一般用户循环控制变量的修改。 可为空。

for (int i = 1; i <= 5; i++) {
    System.out.println(i);
}
for (;;) {
    System.out.println("-");
    break;
}

注意: 这个三个表达式可以部分为空,也可以都为空的,都为空时,则循环的结束需在循环体中控制, 如使用break 或return 进行退出循环,等效while(true){//循环}

for-each 结构, 这是Java 5 引入了一种特殊类型的for循环,称为”增强for循环”或”for-each循环”,它简化了对数组或集合的遍历。增强for循环的语法如下:

for (数据类型 变量名 : 数组或实现了 Iterable 接口的任何集合类) {
    // 使用变量名进行操作
}

for-each 循环可以被视为Java语法糖。语法糖(Syntactic Sugar)是指在编程语言中添加的某种语法,这种语法让人们写代码时更加方便,但它并不提供新的功能,而是提供了一种更简洁易读的方法来表达已有的操作。也就是所有for-each 实现的代码都可以转换为for 循环结构实现,只是代码会复杂点。实际底层实现也是这么做的,如果遍历对象是实现了 Iterable 接口的任何集合类, 则使用了 Iterator 进行元素的遍历。如果你使用的是数组,它就会被编译成一个常规的 for 循环,使用索引来访问每个元素。

// 使用 for-each 循环
for (String item : listOfStrings) {
    System.out.println(item);
}
// 等价的使用 Iterator 的代码
for (Iterator<String> i = listOfStrings.iterator(); i.hasNext(); ) {
    String item = i.next();
    System.out.println(item);
}
// 如果是数组,则等价于常规的 for 循环
String[] arrayOfStrings = new String[] {"a", "b", "c"};
for (int i = 0; i < arrayOfStrings.length; i++) {
    System.out.println(arrayOfStrings[i]);
}

while

也有两种语法: while 及 do…while , 不过都是比较简单的。

while (condition) {
    // 循环体
    // 在这里编写需要重复执行的代码
}
do {
    // 循环体
    // 在这里编写需要重复执行的代码
}while(condition);

condition 是一个布尔表达式。在每次循环开始之前,都会评估这个条件。如果条件为 true,循环体内的代码块将被执行。完成循环体内的代码块后,条件将再次被评估,如果仍为 true,循环将继续执行。这个过程会一直重复,直到条件表达式的结果为 false

如果条件从一开始就是 false,那么循环体内的代码块一次也不会执行。

continue, break

这几个关键字出现在循环体,会影响循环体的执行。

continue (label): 执行到continue, 则结束本次循环,直接开始下次(label)循环。 label 为空则退出当前最近的循环。

break (label): 执行到break, 则结束退出(label)指定的循环, label 为空则退出当前最近的循环。

label 是可选的,通常循环嵌套时,用于退出多个循环时。

     first: for(int i =0; i< 10; i++){
          for (int j = 0; j < 10; j++){
              if(j== 5){
                  continue first;
              }
              if(j == 9){
                  break;
              }
              System.out.println("i="+i+",j="+j);
          }
      }

Java 关键字

Java关键字是指在Java编程语言中具有特定含义的保留单词。这些关键字代表了Java语言的基本构建块,它们用于定义数据类型、流程控制语句、访问权限等。由于这些单词被Java语言赋予了特殊的意义,不能用作标识符,例如类名、方法名或变量名等。 随着Java 发展及保证向后兼容性需求,新版本出现了可用于做标识符的局部关键字, 他们只在特定表达式或语法中做为关键字识别, 其他地方仍可作为标识符使用。

Java 总共包含53个关键字,详情如下表:

关键字类型关键字类型
abstract类、方法和变量修饰符native类、方法和变量修饰符
assert错误处理new变量引用
boolean数据类型package包定义
break程序控制结构private访问控制,私有
byte数据类型protected访问控制,保护
case程序控制结构public访问控制,公开
catch错误处理return程序控制结构
char数据类型short数据类型
class类、方法和变量修饰符static类、方法和变量修饰符
continue程序控制结构strictfp类、方法和变量修饰符
default程序控制结构super变量引用
do程序控制结构switch程序控制结构
double数据类型synchronized类、方法和变量修饰符
else程序控制结构this变量引用
enum类、方法和变量修饰符throw错误处理
extends类、方法和变量修饰符throws错误处理
final类、方法和变量修饰符transient类、方法和变量修饰符
finally错误处理try错误处理
float数据类型void变量引用
for程序控制结构volatile类、方法和变量修饰符
if程序控制结构while程序控制结构
implements类、方法和变量修饰符goto保留关键字
import包引入const保留关键字
int数据类型null特殊常量
interface类、方法和变量修饰符false特殊常量
instanceof程序控制结构true特殊常量
long数据类型

局部关键字:

关键字说明引入版本
var用于局部变量类型推断10
record 用于声明记录类12
sealed用于密封类和接口, 定义密封类或接口17
non-sealed用于密封类和接口,定义非密封类或接口17
permits用于密封类和接口,定义密封类或接口的可实现类范围17
yieldswitch 表达式值返回12
whenswitch 增强,case 扩展21

京ICP备12026520号-3