一、while循环和do…while 循环
while循环:经常需要重复执行某些操作,直到满足某个条件为止。
基本语法:
while (条件表达式) {
// 循环体(需要重复执行的代码块)
}
-
条件表达式
:-
这是一个布尔表达式,如果它的值为
true
,则执行循环体; -
如果为
false
,则跳过循环体,继续执行while
循环后面的代码。
-
-
循环体
:-
这是要重复执行的代码块。每次循环开始时,都会重新评估条件表达式的值。
-
do…while 循环:循环体至少会执行一次,因为条件检查是在循环体执行之后才进行的
基本语法:
do{
//循环执行的内容
}while(布尔表达式);
二、for和for-each循环
for循环:用于重复执行一段代码块,直到满足某个条件为止,在已知循环次数的情况下特别有用。
语法:
for (初始化; 条件表达式; 更新表达式) {
// 循环体(需要重复执行的代码块)
}
-
初始化
:在循环开始之前执行一次,通常用于设置循环变量的初始值。 -
条件表达式
:在每次循环迭代之前检查。如果表达式的结果为true
,则执行循环体;如果为false
,则退出循环。 -
更新表达式
:在每次循环迭代之后执行,通常用于修改循环变量的值。 -
循环体
:需要重复执行的代码块
for-each循环(增强的for循环):用于遍历数组或集合中的元素,而无需使用索引。简化了对数组或集合的遍历操作,使代码更加简洁易读, 但是它并不适用于需要修改集合元素或需要知道元素索引的场景
语法:
for (ElementType element : arrayOrCollection) {
// 处理元素
}
三、循环break退出和continue跳过
循环退出:break 关键字,跳出当前层的循环体,执行循环体下面的语句。
循环跳过:continue 关键字,跳过当前循环,执行下一次循环, (忽略当前循环内容,直接执行下一次)
注意:
-
break
和continue
都只能用于循环结构(如for
、while
、do-while
)中。 -
break
用于完全退出循环,而continue
用于跳过当前循环的剩余部分并开始下一次迭代。 -
如果在嵌套的循环中使用
break
,它将只退出最内层的循环。 -
continue
语句只能在循环体中使用,不能用于跳过循环之前的代码或循环之后的代码。
四、If else条件语句
1、If语句:如果条件为真(即值为 true
),则执行 if
语句中的代码块
语法结构:
if (条件) {
// 条件为真时执行的代码块
}
2、if-else 语句:如果条件为真,执行 if
语句块;如果条件为假,执行 else
语句块。
语法结构:
if (条件) {
// 条件为真时执行的代码块
} else {
// 条件为假时执行的代码块
}
3、if-else if-else 语句:用于基于多个条件来执行不同的代码块;会按照条件的顺序进行检查,一旦找到满足的条件,就会执行相应的代码块,并结束整个 if-else
结构。
语法结构:
if (条件1) {
// 条件1为真时执行的代码块
} else if (条件2) {
// 条件1为假且条件2为真时执行的代码块
} else if (条件3) {
// 条件1和条件2都为假且条件3为真时执行的代码块
// ... 可以继续添加 else if 语句
} else {
// 所有条件都为假时执行的代码块
}
五、Switch条件分支语句
Switch和if语句都是Java的选择语句,这两种都是允许在程序运行时控制程序的执行过程。
1、选择问题:如果只是简单的选择语句 if else即可,复杂或者条件超过4个,则用switch语句
2、旧版语法
-
每个
case
代码块的末尾通常使用break
语句来避免执行流继续进入下一个case
。 -
如果没有
break
,即程序会继续执行下一个case
的代码,直到遇到break
或switch
语句结束。switch (expression) {
case value1:
// 当 expression 的值等于 value1 时执行的代码块
break;
case value2:
// 当 expression 的值等于 value2 时执行的代码块
break;
// 可以有多个 case
// ...
default:
// 当 expression 的值不匹配任何 case 时执行的代码块
}
3、新版语法
-
使用case C -> { } 代替break语句
-
使⽤箭头函数,不⽤声明break, 会⾃动终⽌, 如果case语句中只有一条语句,可以省略大括号
-
case 标签-> 与 case 标签:不能混用, 一个 switch 语句块中使用一种语法格式。
-
⽀持多个值匹配,使⽤逗号分隔
六、static静态代码块和方法
1、static关键字
-
用于定义类级别的属性和方法,这些属性和方法属于类本身,而不是类的任何特定实例对象
-
static 修饰的方法或变量,优先于对象执行,所以内存有会现有 static修饰的内容,后有对象的内容
-
static
关键字有两个主要的应用场景-
静态变量(也称为类变量)
-
静态方法(也称为类方法)
-
还有一个重要的概念是静态代码块(也称为静态初始化块)
-
-
修饰变量就是类变量,修饰方法就是类方法
-
类变量或者类方法,可以直接通过类名.方法名或者变量名进行调用,不用经过对象
2、静态变量
-
是类级别的变量,它们在类的所有实例之间共享,在内存中只有一个副本,无论创建多少个类的实例。
-
静态变量通常用于存储那些与类本身相关,而与类的任何特定实例无关的信息。
-
静态变量在类的加载阶段被初始化,并且只能使用类名来访问它们(而不是实例名)。
3、静态方法
-
是类级别的方法,它们不需要类的实例就可以被调用。
-
静态方法不能直接访问类的非静态成员(变量和方法),因为它们属于类的特定实例。
-
静态方法通常用于执行那些与类本身相关,而与类的任何特定实例无关的操作。
-
静态方法可以使用类名来调用,而不是通过类的实例。
4、静态代码块
-
是一段在类加载时自动执行的代码,通常用于初始化静态变量或执行其他只需要执行一次的类级别的操作。
-
静态代码块在类的准备阶段(在类的初始化阶段之前)被执行,并且只执行一次,无论创建多少个类的实例。
-
在类中的位置可以是任意的,但通常放在类的顶部,它们不能包含任何参数,并且没有返回值。
注意:一个类里面 static修饰的不能访问非static修饰的成员或方法,而非static修饰的可以访问static修饰的成员或者方法