前情提要:
我如风,任去留,休将鸿鹄比伏囚。
作者主页: 追光者♂
个人简介:
[1] 计算机专业硕士研究生
[2] 2022年度博客之星人工智能领域TOP4
[3] 阿里云社区特邀专家博主
[4] CSDN-人工智能领域优质创作者
[5] 预期2023年10月份 · 准CSDN博客专家
- 无限进步,一起追光!!!
感谢大家 点赞 收藏⭐ 留言!!!
本篇主要讲解条件运算符。从其基本语法格式开始介绍,给出简明的示例以及通俗易懂的练习题,并指出条件运算符与if-else的关系。随后给出了测试位运算符的基础代码以及对运算符的优先级做了简要的说明。
(条件表达式)? 表达式1:表达式2
boolean
类型的结果,根据boolean的值选择表达式1或表达式2public class ConditionalOperatorExample {
public static void main(String[] args) {
int i = (1 == 2 ? 100 : 200);
System.out.println(i); // 输出 200
boolean marry = false;
System.out.println(marry ? "已婚" : "未婚");
int m1 = 10;
int m2 = 20;
double d1 = (m1 > m2) ? 1 : 2.0;
System.out.println(d1);
int num = 12;
System.out.println(num > 0 ? true : "num非正数");
}
}
结果输出:
示例代码:
/**
* @author CSDN@追光者♂
* @create 2023年7月18日12:11:05
*/
public class ConditionExer1 {
public static void main(String[] args) {
//获取两个数的较大值
int m1 = 10;
int m2 = 20;
int max1 = (m1 > m2)? m1 : m2;
System.out.println("m1和m2中的较大值为" + max1);
}
}
测试输出:
/**
* @author CSDN@追光者♂
* @create 2023年7月18日
*/
public class ConditionExer2 {
public static void main(String[] args) {
int n1 = 23;
int n2 = 13;
int n3 = 33;
//写法1:
int tempMax = (n1 > n2)? n1:n2;
int finalMax = (tempMax > n3)? tempMax : n3;
System.out.println("三个数中最大值为:" + finalMax);
//写法2:不推荐,可读性差
int finalMax1 = (((n1 > n2)? n1:n2) > n3)? ((n1 > n2)? n1:n2) : n3;
System.out.println("三个数中最大值为:" + finalMax1);
}
}
结果输出:
要求:控制台输出"今天是周2,10天以后是周x"。
实现:
/**
* @author CSDN@追光者♂
* @create 2023年7月18日
*/
public class ConditionExer3 {
public static void main(String[] args) {
int week = 2;
week += 10;
week %= 7;
System.out.println("今天是周2,10天以后是周" + (week == 0 ? "日" : week));
}
}
结果输出:
凡是可以使用条件运算符的地方,都可以改写为if-else
结构。反之,不成立。
开发中,如果既可以 使用条件运算符,又可以使用 if-else,推荐使用 条件运算符。因为执行效率稍高。
//if-else实现获取两个数的较大值
int i1 = 10;
int i2 = 20;
int max;//声明变量max,用于记录i1和i2的较大值
if(i1 > i2){
max = i1;
}else{
max = i2;
}
System.out.println(max);//20
/*
测试运算符的使用5:位运算符
1. << >> >>> & | ^ ~
2. 说明:
① << >> >>> & | ^ ~ :针对数值类型的变量或常量进行运算,运算的结果也是数值
②
<< : 在一定范围内,每向左移动一位,结果就在原有的基础上 * 2。(对于正数、负数都适用)
>> : 在一定范围内,每向右移动一位,结果就在原有的基础上 / 2。(对于正数、负数都适用)
3. 面试题:高效的方式计算2 * 8 ?
2 << 3 或 8 << 1
*/
class BitTest {
public static void main(String[] args) {
int num1 = 7;
System.out.println("num1 << 1 : " + (num1 << 1));
System.out.println("num1 << 2 : " + (num1 << 2));
System.out.println("num1 << 3 : " + (num1 << 3));
System.out.println("num1 << 28 : " + (num1 << 28));
System.out.println("num1 << 29 : " + (num1 << 29));//过犹不及
int num2 = -7;
System.out.println("num2 << 1 : " + (num2 << 1));
System.out.println("num2 << 2 : " + (num2 << 2));
System.out.println("num2 << 3 : " + (num2 << 3));
System.out.println(~9);
System.out.println(~-10);
}
}
运算符有不同的优先级,所谓优先级:就是在表达式运算中的运算符顺序。
上一行中的运算符 总是优先于下一行的。
开发建议:
使用()来控制
表达式的执行顺序。分成几步
来完成。例如: (num1 + num2) * 2 > num3 && num2 > num3 ? num3 : num1 + num2;
优先级 | 运算符说明 | Java运算符 |
---|---|---|
1 | 括号 | () 、[] 、{} |
2 | 正负号 | + 、- |
3 | 单元运算符 | ++ 、-- 、~ 、! |
4 | 乘法、除法、求余 | * 、/ 、% |
5 | 加法、减法 | + 、- |
6 | 移位运算符 | << 、>> 、>>> |
7 | 关系运算符 | < 、<= 、>= 、> 、instanceof |
8 | 等价运算符 | == 、!= |
9 | 按位与 | & |
10 | 按位异或 | ^ |
11 | 按位或 | ` |
12 | 条件与 | && |
13 | 条件或 | ` |
14 | 三元运算符 | ? : |
15 | 赋值运算符 | = 、+= 、-= 、*= 、/= 、%= |
16 | 位赋值运算符 | &= 、` |
热门专栏推荐:
持续创作优质好文ing…✍✍✍
记得一键三连哦!!!
求关注!求点赞!求个收藏啦!