一、整数类型变量
注意:每个字符型常量占两个字节
二、自动类型转换和强制类型转换
三、算术运算符
四、赋值运算符
五、比较运算符
六、逻辑运算符
七、运算符的优先级
运算符的优先级可以通过以下口诀来记忆:
括号优先,单目次之,乘除先于加减,移位关系逻辑,三目赋值最后。
详细解释:
括号优先:括号内的运算总是最先执行。
单目次之:单目运算符(如
+
、-
、!
、~
、++
、--
)优先级较高。乘除先于加减:
*
、/
、%
的优先级高于+
和-
。移位运算符:
<<
、>>
、>>>
的优先级高于关系运算符。关系运算符:
<
、>
、<=
、>=
、==
、!=
的优先级高于逻辑运算符。逻辑运算符:
&
、|
、^
的优先级高于三目运算符。三目运算符:
? :
的优先级高于赋值运算符。赋值最后:
=
、+=
、-=
等赋值运算符优先级最低。
逻辑运算符的优先级划分
以下是逻辑运算符的优先级顺序,从高到低排列:
逻辑非 (
!
)
优先级最高,用于对布尔值取反。按位与 (
&
)
优先级次之,用于按位与操作。按位异或 (
^
)
优先级低于&
,用于按位异或操作。按位或 (
|
)
优先级低于^
,用于按位或操作。短路与 (
&&
)
优先级低于|
,用于短路与操作(仅当第一个操作数为true
时,才会计算第二个操作数)。短路或 (
||
)
优先级最低,用于短路或操作(仅当第一个操作数为false
时,才会计算第二个操作数)。总结优先级顺序:
! > & > ^ > | > && > ||
注意事项:
短路运算符(
&&
和||
) 的特点是,它们会根据第一个操作数的值决定是否计算第二个操作数。例如:
a && b
:如果a
为false
,则不会计算b
,直接返回false
。
a || b
:如果a
为true
,则不会计算b
,直接返回true
。按位运算符(
&
、|
、^
) 会计算两个操作数的所有位,而不会短路。
八、if……else……条件语句
在 Java 中,if...else
是一种条件选择语句,用于根据条件的真假来执行不同的代码块。以下是 if...else
语句的详细介绍和用法:
1、if...else
语句的基本结构如下:
if (条件) {// 条件为 true 时执行的代码块
} else {// 条件为 false 时执行的代码块
}
条件 是一个布尔表达式(返回
true
或false
)。如果条件为
true
,则执行if
后的代码块。如果条件为
false
,则执行else
后的代码块。
2、if...else if...else
多分支结构
当需要根据多个条件进行判断时,可以使用 if...else if...else
结构:
if (条件1) {// 条件1 为 true 时执行的代码块
} else if (条件2) {// 条件2 为 true 时执行的代码块
} else if (条件3) {// 条件3 为 true 时执行的代码块
} else {// 所有条件都不满足时执行的代码块
}
程序会从上到下依次检查每个条件,一旦某个条件为
true
,就执行对应的代码块,并跳过后续的条件检查。如果所有条件都不满足,则执行
else
后的代码块。
3、 嵌套的 if...else
if...else
语句可以嵌套使用,即在一个 if...else
块中再包含另一个 if...else
语句。
4、 注意事项
条件必须是布尔表达式
if
后的括号中必须是一个返回true
或false
的表达式,不能是其他类型(如整数)。大括号
{}
的使用
如果
if
或else
后的代码块只有一行,可以省略大括号。但为了代码的可读性和避免潜在错误,建议始终使用大括号。
缩进和代码格式
为了提高代码的可读性,建议使用适当的缩进。
5、 总结
if...else
语句是 Java 中最基本的条件判断语句,用于根据条件的真假执行不同的代码块。它支持单分支(if
)、双分支(if...else
)和多分支(if...else if...else
)结构,还可以嵌套使用以处理更复杂的逻辑。
九、三元运算符
在 Java 中,三元运算符(也称为条件运算符)是一种简洁的条件表达式,用于根据条件的真假返回不同的值。它的语法结构非常紧凑,适合在简单的条件判断中使用。
三元运算符的语法
条件表达式 ? 表达式1 : 表达式2
条件表达式:一个返回
true
或false
的布尔表达式。表达式1:当条件表达式为
true
时,返回的值。表达式2:当条件表达式为
false
时,返回的值。
三元运算符的返回值
三元运算符会根据条件表达式的值返回 表达式1
或 表达式2
的值。返回值的类型由 表达式1
和 表达式2
的类型决定。
三元运算符的优缺点
优点:
代码简洁,适合简单的条件判断。
可以在一行代码中完成条件判断和赋值。
缺点:
当嵌套使用时,代码可读性会降低。
对于复杂的逻辑,建议使用
if...else
结构以提高可读性。
十、switch条件语句
在 Java 中,
switch
是一种条件语句,用于根据变量的值执行不同的代码块。它提供了一种比if...else
更清晰的方式来处理多个条件分支。以下是switch
语句的详细介绍和用法。
1. 基本语法
switch
语句的基本结构如下:
switch (表达式) {case 值1:// 当表达式等于值1时执行的代码块break;case 值2:// 当表达式等于值2时执行的代码块break;...default:// 当表达式不匹配任何case时执行的代码块
}
表达式:
switch
后的括号中是一个表达式,其值用于匹配case
后的值。case:每个
case
后跟一个值,表示一个分支条件。break:用于终止当前分支,避免代码继续向下执行(即避免“贯穿”到下一个
case
)。default:可选分支,当表达式的值不匹配任何
case
时执行。
2. 支持的数据类型
switch
语句支持以下数据类型:
int
和char
(基本数据类型)
String
(从 Java 7 开始支持)枚举类型(
enum
)
注意:C语言中switch不支持字符串
3、示例:
String
类型的 switch
(Java 7 及以上)
String fruit = "apple";
switch (fruit) {case "apple":System.out.println("这是一个苹果");break;case "banana":System.out.println("这是一个香蕉");break;case "orange":System.out.println("这是一个橙子");break;default:System.out.println("未知水果");
}
// 输出:这是一个苹果
嵌套的 switch
switch
语句可以嵌套使用,即在一个 switch
块中再包含另一个 switch
语句。
int day = 3;
String time = "morning";switch (day) {case 1:switch (time) {case "morning":System.out.println("周一早上");break;case "afternoon":System.out.println("周一下午");break;case "evening":System.out.println("周日晚上");break;}break;case 2:System.out.println("周二");break;default:System.out.println("其他时间");
}
4、注意事项
break
的重要性
- 如果没有
break
,程序会继续执行下一个case
的代码,直到遇到break
或switch
结束。- 这种行为称为 贯穿(fall-through),通常需要避免,除非是故意设计的逻辑。
default
是可选的
- 如果没有
default
分支,当表达式的值不匹配任何case
时,switch
语句不会执行任何代码。
case
的顺序
case
的顺序会影响程序的执行结果,因为switch
会从上到下依次检查每个case
。
switch
的性能
switch
语句的执行效率通常高于多个if...else
语句,尤其是在分支较多的情况下。