条件运算符
基本语法
-
条件运算符格式
(条件表达式)?表达式1:表达式2
-
说明:条件表达式是boolean类型的记过,根据boolean的值选择表达式1或表达式2
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2sAlfvcF-1689483557616)(F:\BaiduNetdiskDownload\image-20220312002841945.png)]
- 如果运算后的结果赋给新的变量,要求表达式1和表达式2为同种或兼容的类型
/*
条件运算符
1.(条件表达式)?表达式1:表达式2
2.说明:
①条件表达式的结果是boolean类型
②如果条件表达式的结果是true,则执行表达式1。否则,执行表达式2.
③表达式1和表达式2为同种或兼容的类型
④开发中,凡是可以使用条件运算符的位置,都可以改写为if-else。
反之,能使用if-else结构,不一定能改写为条件运算符。
建议,在二者都能使用的情况下,推荐使用条件运算符。因为执行效率稍高
*/
class ConditionTest{
public static void main(String[] args){
String info = (2>1)?"表达式1":"表达式2";
System.out.println(info); //表达式1
String info = (2>10)?"表达式1":"表达式2";
System.out.println(info); //表达式2
double d1 = (2 > 1)?1:2.0;
System.out.println(d1); //1.0
}
}
练习1:获取两个整数的较大值
public class MaxTest{
public static void main(String[] args){
int m = 10;
int n = 20;
int max = m > n ? m,n;
System.out.println("较大的值为:"+max);
}
}
练习2:获取三个数的最大值
public class threeMax{
public static void main(String[] args){
int m = 10;
int n = 8;
int x = 12;
int tempMax = (m > n)? m : n;
int finMax = (tempMax >x)?tempMax:x;
System.out.println("最大的值为:"+finMAX);
//int finMax = ((m > n)? m : n ) > x ? (m > n)? m : n : x;
}
}
练习3:
/*
今天是周2,10天以后是周几?
要求:控制台输出"今天是周2,10天以后是周x"。
*/
public class dayTest{
public static void main(String[] args){
int week = 7;
int day = 2;
int x = 10 % week;
x += 2;
System.out.println("今天是周2,10天以后是周"+x);
}
}
//方式2
/*
public class dayTest{
public static void main(String[] args){
int week = 2;
week += 10;
week %= 7;
System.out.println("今天是周2,10天以后是周"+((week == 0)?"日":week));
}
}
*/
运算符的优先级
运算符有不同的优先级,所谓优先级就是在表达式运算中的运算符顺序。
上一行中的运算符总是优先于下一行的。
优先级 | 运算符说明 | Java运算符 |
---|---|---|
1 | 括号 | () 、[] 、{} |
2 | 正负号 | + 、- |
3 | 单元运算符 | ++ 、-- 、~ 、! |
4 | 乘法、除法、求余 | * 、/ 、% |
5 | 加法、减法 | + 、- |
6 | 移位运算符 | << 、>> 、>>> |
7 | 关系运算符 | < 、<= 、>= 、> 、instanceof |
8 | 等价运算符 | == 、!= |
9 | 按位与 | & |
10 | 按位异或 | ^ |
11 | 按位或 | ` |
12 | 条件与 | && |
13 | 条件或 | ` |
14 | 三元运算符 | ? : |
15 | 赋值运算符 | = 、+= 、-= 、*= 、/= 、%= |
16 | 位赋值运算符 | &= 、` |
开发建议:
- 不要过多的依赖运算的优先级来控制表达式的执行顺序,这样可读性太差,尽量
使用()来控制
表达式的执行顺序。- 不要把一个表达式写得过于复杂,如果一个表达式过于复杂,则把它
分成几步
来完成。例如:
(num1 + num2) * 2 > num3 && num2 > num3 ? num3 : num1 + num2;
()来控制`表达式的执行顺序。
- 不要把一个表达式写得过于复杂,如果一个表达式过于复杂,则把它
分成几步
来完成。例如:
(num1 + num2) * 2 > num3 && num2 > num3 ? num3 : num1 + num2;