运维.售后
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
博客
Blog
ToB门户
了解全球最新的ToB事件
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
入门篇-其之七-Java运算符(下)
入门篇-其之七-Java运算符(下)
吴旭华
金牌会员
|
2023-11-22 08:57:34
|
来自手机
|
显示全部楼层
|
阅读模式
楼主
主题
909
|
帖子
909
|
积分
2727
一、三元运算符的使用
三元运算符(也称作三目运算符),使用:和?表示,其格式为:
布尔表达式 ? 表达式1 : 表达式2
如果布尔表达式的计算结果是true,那么执行表达式1;否则,如果布尔表达式的计算结果是false,则执行表达式2。
表达式1和表达式2计算结果的数据类型必须要和左侧变量定义的数据类型保持一致
。例如:表达式1和表达式2的计算结果都是double类型,那么左侧定义的变量类型也是double。
以下是三元运算符作用原理图:
以下是三元运算符在代码中的使用:
/**
* 三元运算符的使用
*
* @author ZhaoCong
* @date 2023-10-25 11:57:21
*/
public class Ternary {
public static void main(String[] args) {
byte byteValue1 = 20;
byte byteValue2 = 30;
byte result1 = byteValue1 > byteValue2 ? byteValue1 : byteValue2;
System.out.println("result1 = " + result1);
double doubleValue1 = 40.13;
double doubleValue2 = 30.28;
double result2 = doubleValue1 == doubleValue2 ? doubleValue1 : doubleValue2;
System.out.println("result2 = " + result2);
String strValue1 = "";
String result3 = strValue1.length() == 0 ? "strValue1的长度是0" : "strValue1的长度不是0";
System.out.println("result3 = " + result3);
}
}
复制代码
运行结果:
三元运算符可以嵌套使用,但不推荐,原因是可读性变差。
String strValue = "iCode504";
int length = strValue.length();
// 不推荐嵌套的写法
String result = length > 0 ? length < 10 ? "strValue的长度在0~10之间" : "strValue的长度超过10" : "strValue的长度为0";
System.out.println("result = " + result);
复制代码
嵌套式写法做进一步简化处理:
String strValue = "iCode504";
int length = strValue.length();
String result = length > 0 && length < 10 ? "strValue的长度在0~10之间" : "strValue的长度不在0~10之间";
System.out.println(result);
复制代码
二、三元运算符和if语句的区别
共同点:三元运算符和if语句的作用都是用作条件判断。但二者也存在一些差别:
1. 语法层面:在大多数情况下,三元运算符语法是一行语句,if语句可能是多行。例如:判断一个字符串的长度是否为0,以下分别是三元运算符和if语句的写法:
// 三元运算符写法
String strValue = "iCode504";
String result = strValue.length() == 0 ? "strValue的长度为0" : "strValue的长度不为0";
复制代码
// if写法
String strValue = "iCode504";
String result;
if (strValue.length() == 0) {
result = "strValue的长度为0";
} else {
result = "strValue的长度不为0";
}
复制代码
2. 代码可读性:对于简单的条件判断,使用三元运算符确实可以简化代码,但是如果是复杂条件或者嵌套,那么三元运算符会让代码变得更加复杂难以理解。
3. 灵活性:if语句中可以在代码块中放入更多的表达式,但是三目运算符的表达式只能存在一个。
总体来说,三目运算符和if语句都有各自的优点和使用场景。在简单的情况下,使用三目运算符比较方便;在复杂情况下,使用if语句更合适。
三、运算符的优先级
前面学过和很多的运算符:例如算术运算符、比较运算符、逻辑运算符等等,如果这些运算符进行混合运算时,存在着一个优先级,即谁先计算,谁后计算的问题。数学中存在这样一条规定:先乘除,后加减。也就是说,乘和除是同一级别,二者的计算级别要比加和减的级别高。这条规定在Java中也完全适用。
以下是运算符的优先级顺序表(由高到低,这张表了解即可,不需要额外记忆):
运算符关联性() []从左向右! ~ ++ -- 正负号从右向左* / %从左向右+ -从左向右> >>>从左向右< >= instanceof从左向右== !=从左向右&从左向右^从左向右|从左向右&&从左向右||从左向右?:从右向左= += -= *= /= %= &= |= ^= = >>>=从右向左
使用括号()可以提升运算符的优先级
。例如:
int value1 = 30;
int value2 = 28;
int value3 = 17;
int result1 = value1 * value2 + value3; // 先乘除,后加减
int result2 = value1 * (value2 + value3); // 有括号的优先计算
复制代码
原本加号的运算等级要比乘号的等级要低,但是给加法表达式加上括号以后,加法表达式优先计算,然后再计算乘除法。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
吴旭华
金牌会员
这个人很懒什么都没写!
楼主热帖
【云原生】第二篇--容器管理工具 Docke ...
mamba-ssm安装building wheel卡着不动 ...
数据库系统课程设计(高校成绩管理数据 ...
JVM虚拟机性能监控与故障处理工具(3) ...
《原CSharp》第二回 巧习得元素分类 子 ...
java中==和equals区别
【图论】—— 有向图的强连通分量 ...
Spark 总复习
使用TrueNas(FreeNas)进行华为手机备 ...
AWVS漏洞扫描器的使用
标签云
存储
服务器
快速回复
返回顶部
返回列表