Java三目运算符boolean?condition1:condition2的使用及类型转换

011_三元运算符(condition ? true : false) Java三元运算符(条件运算符)是一种简洁的条件判断工具,采用条件 ? 表达式1 : 表达式2的语法结构。它根据条件表达式结果返回对应表达式的值,适用于简单的二选一场景。相比if-else,三元运算符更简洁且能直接返回值,但嵌套层数不宜过多(建议不超过2层)。使用时需注意:表达式类型必须兼容,条件必须是布尔类型,避免包含副作用操作,并注意null值处理。三元运算符适合简单赋值场景,而复杂逻辑应改用if-else。合理使用可提升代码简洁性,但需权衡可读性与维护性。 阅读详情

三目运算符<表达式1>?<表达式2>:<表达式3>; "?"运算符的含义是: 先求表达式1的值, 如果为真, 则执行表达式2,并返回表达式2的结果 ; 如果表达式1的值为假, 则执行表达式3 ,并返回表达式3的结果.

       以上是三目运算符的基本定义与使用。表面上看来,应该是比较简单。在《Java程序员面试宝典》这本书里,我们见到了了两道比较有意思的题目。

题目1:【中国东北著名软件公司D2009年3月笔试题】

int a=5;
System.out.println("a="+((a<5)?10.9:9));

A. 编译错误

B. 10.9

C. 9

D. 以上答案都不对

也许和大多数人一样,刚开始想当然的以为a<5为false,那么结果就是9了,选C嘛!

仔细想想,这就是题目设置的陷阱。在表达式=(a<5)?10.9:9中有一个10.9,这是java就会根据运算符的精度进行自动类型的转换,由于前面是10.9,那么后面的9也就跟着变为9.0了!

 

题目2:【中国东北著名软件公司D2009年3月笔试题】

char x='x';
int i=10;
System.out.println(false?i:x);
System.out.println(false?100:x);

A. 120  x

B. 120 120

C. x 120

D. 以上答案都不对

答案为A

解析:System.out.println(false?i:x)与上个题目1相同,x被提升为int类型,所以输出x的ASCII码
而对于第二行,由于100是一个常量表达式。若三目运算符中的两个表达式有一个是常量表达式,另一个是类型T(本题中为char)的表达式,且常量表达式可以被T表示,则输出结果是T类型。因此输出是字符

 

核心思想:

1.若三目运算符中的两个表达式有一个是常量表达式,另一个是类型T的表达式,且常量表达式可以被T表示,则输出结果是T类型。

2.如果都是常量表达式,用向上类型转换

 

进入习题模式:

(1)

char x='x';
int i=10;、

System.out.println(false?10000:x);

系统输出:x

好的,如果修改一下呢

char x='x';
int i=10;、

System.out.println(false?100000:x);

系统输出是怎样呢?120!

解析:【核心思想1】10000可以被本题的T类型表示,所以输出结果为T类型,输出x;但是换成100000就不行了,因为它超过了ASCII码范围。那么就是就输出x的ASCII码值

 

继续延伸

char x='x';

System.out.println(true?100:x);

这个呢?

解析:同样适用【核心思想1】,true之后进入condition1.100可以被T类型表示,那么输入将是T类型(char 类型),100对应ASCII为d,那么输出d.

 

(2)

char x='x';

System.out.println(true?x:10);

System.out.println(true?x:10.0);

好的,第一行应该输出是x,这个没有问题。那么第二行呢?结果:120.0

解析:适用【核心思想1】,但是10.0不能被T类型,那么输出将不是T类型。120将升级为double类型变为120.0

 

(3)

System.out.println(fasle?9:10.0);

System.out.println(true?9:10.0);

结果:10.0 9.0

解析:适用【核心思想2】,第一行fasle的结果就是最高类型;第二行9将升级为double类型变为9.0

 

转载:http://blog.sina.com.cn/s/blog_6810dfc20101j7op.html

Java += 运算符本质:从字节码、类型转换到并发安全 复合赋值运算符 += 是 Java 中最常用却最易被误解的基础语法。它表面是‘先加后赋’的简写,实则涉及编译器优化、JVM 字节码指令(如 iload/iadd/istore 和 iinc)、隐式类型收缩(如 short += int 自动插入 i2s)以及字符串拼接背后的 StringBuilder 机制。其技术价值在于兼顾代码简洁性与运行效率,但代价是引入多线程非原子性、副作用时序依赖(如 i += i++)、编译期常量折叠等深层行为。典型应用场景包括数值累加、日志拼接和循环计数,而高并发计数、BigD 阅读详情

相关推荐

Scala运算符原理与实战:从基础到高阶应用

运算符是编程语言中实现数据操作的核心机制,其本质是编译器提供的语法糖。在JVM生态中,Scala通过将运算符统一为方法调用的设计,既保持了与Java的互操作性,又支持灵活的函数式扩展。从技术实现看,诸如`a + b`的表达式实际转换为`a.+(b)`的方法调用,这种统一对象模型使得开发者能通过重载运算符构建领域特定语言(DSL)。在工程实践中,合理运用运算符优先级规则和短路特性可显著提升代码性能,特别是在集合操作场景下,`++`、`::`等运算符与高阶函数结合能高效处理数据流。对于需要类型安全的场景,可通过

weixin_30437847的博客 574

浅谈三目运算符

百度对于三目运算符的定义如下: 三目运算符,又称条件运算符,是计算机语言(c,c++,java等)的重要组成部分。它是唯一有3个操作数的运算符,有时又称为三元运算符。一般来说,三目运算符的结合性是右结合的。 三目运算符的应用格式如下<表达式1> ? <表达式2> : <表达式3>,意思就是假如表达式1是真,那么就去执行表达式2,否则就执行表达式3. 举个例子吧 #include<stdio.h> int main() { int a = 0; ..

weixin_64448174的博客 3120

Java逻辑运算符深度解析:从短路求值到字节码实现与实战避坑

在编程语言中,逻辑运算符是构建程序决策流程的基础组件,用于组合布尔表达式以控制程序执行路径。其核心原理在于求值策略,主要分为短路求值与非短路求值。短路求值(如&&和||)在确定整个表达式结果后,会跳过后续不必要的计算,这一特性带来了显著的技术价值:它能提升性能,避免执行高开销操作;更重要的是,它能保障程序的正确性与健壮性,例如通过`if (obj != null && obj.isValid())`这样的模式有效防止空指针异常。在应用场景上,短路运算符广泛应用于条件判断、循环控制以及函数式编程(如Strea

weixin_30700977的博客 408

Java之三目运算符

 某日,同事给我展示了一块代码,问我有没有什么问题。(代码如下 代码块1): int i = 1; Boolean a = null; boolean b = false; System.out.println(i == 1 ? a : b); 集智慧与美貌于一身的我一眼就发现了其中的端倪:当然会报 NPE 了! 但是如果代码变成这样的呢(如下 代码块2)? int i = 1; bo...

Rebecca_Zhong的博客 5101

PostgreSQL高可用之主备复制

多个PostgreSQL可协同工作,如果主库发生宕机备库将迅速进行接管并对外提供服务以实现高可用。本文将从主备复制、主备切换、故障转移等角度进行实际测试演练。第一章主备复制是基础,通过主备复制可以得到一个或多个相同的实例。在主备复制的基础上通过第二章主备切换介绍了如何手工将主库与备库互换角色。在第三章中,采用了Keepalived进行实时监测,在主库宕机后,使用主备切换中提到的命令使备库升级为主库并对外提供服务,以达到PostgreSQL高可用的目标。

asdasdsaff的博客 1348

Halcon实战:5种边缘检测算子对比(Sobel、Roberts、Prewitt、Kirsch、Canny)

本文深入对比了Halcon中Sobel、Roberts、Prewitt、Kirsch和Canny五大边缘检测算子的实战表现与核心差异。通过工业图像实例与代码解析,提供了基于噪声水平、边缘连续性及实时性要求的场景化选型指南,帮助工程师精准选择最适合的算子以优化视觉检测流程。

weixin_29266007的博客 393

java boolean的|=或&=或^=写法

package jack.test;/** * 有时候看一看开源框架可以学到很多有用的东西,在看Simple Log的时候发现了一种写法 * 在对boolean操作时可以使用|=或者&=或者^=进行运算。 * 逻辑操作符 * 逻辑操作符的操作对象和结果均为boolean型,共六个: * !(逻辑非) && (逻辑与) ||(逻辑或) * ^(逻辑并或) & (

重剑无锋,大巧不工。。。 9786

无人机机场自动化巡检钢铁厂管廊技术方案

摘要:针对钢厂管廊人工巡检效率低、成本高等问题,提出5G+无人机自主巡检解决方案。该系统由智能机库、5G无人机、AI分析平台等组成,可实现自动起降、实时数据传输、缺陷智能识别等功能。无人机配备四合一云台相机,支持42分钟续航和复杂环境飞行,通过深度学习算法自动生成巡检报告。方案实施后可提升巡检效率3倍以上,降低人工成本和安全风险,实现全天候自动化巡检,为钢厂管廊安全管理提供智能化技术支持。(149字)

gxdhlg的专栏 1685

003-Java的运算符

###03.01_Java语言基础(逻辑运算符的基本用法)(掌握)* A:逻辑运算符有哪些 * &amp;,|,^,! * &amp;&amp;,|| * B:案例演示* 逻辑运算符的基本用法 * 注意事项: * a:逻辑运算符一般用于连接boolean类型的表达式或者值。 * b:表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子。 * 算术表达式:a + b * 比较表达式...

lianghao的博客 280

【AutoSAR】【以太网】TCP/IP 栈详述与配置

目录 一、TCP/IP栈架构 二、TCP\IP栈的可扩展性 三、以太网协议V4 四、以太网协议 V6 五、基于IP的协议 六、函数调用序列图 一、TCP/IP栈架构 根据以上架构图,该栈主要包括:UPD\TCP\DHCP\ICMP\IPV4\IPV6\ARP; 二、TCP\IP栈的可扩展性 TCP\IP栈为适应不同的应用场景需求,将分为三类: 配置工程里的配置项: 三、以太网协议V4 1 IPV4 Internet Protocol (IP)是T.

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 5696

如何计算 R 中的基尼系数(附示例)

以意大利统计学家Corrado Gini命名,基尼系数是衡量人口收入分配的一种方法。基尼系数的值在 0 到 1 之间,值越高代表收入不平等越大,其中:0代表完全的收入平等(每个人的收入都一样) 1代表完全的收入不平等(一个人拥有所有收入) 您可以在此处找到按国家/地区列出的基尼系数列表。以下示例显示了使用DescTools包中的Gini()函数计算 R 中的基尼系数的两种方法。示例 1:使用个人收入计算基尼系数假设我们有以下 10 个人的年收入列表:收入:5 万美元、5 万美元、7 万美元、7 万美元、7

Mrrunsen的博客 2991

java基础之运算符

在Java中,运算符是用于操作变量和值的符号,借助运算符能够对数据进行各类运算和操作。

m0_74847533的博客 1724

修复漏洞Windows 2012 Server R2(CVE-2016-2183)、(CVE-2015-2808)、(CVE-2013-2566)

【代码】修复漏洞Windows 2012 Server R2(CVE-2016-2183)、(CVE-2015-2808)、(CVE-2013-2566)

路~可以走过 2773

7.Java运算符

数学运算符 说明 举例 加法 1 + 2 减法 4 - 3.4 乘法 7 * 1.5 / 除法 3.5 / 7 % 取余 7 % 2 ++ 自增 3++ – 自减 3

Justinbili的博客 171

rk3588调试imx415记录

分享适配imx415的软件配置以及一些关键的调试命令

m0_60805802的博客 2889

【漏洞复现】爱数云盘 Usrm_GetAllUsers 未授权访问漏洞

爱数 AnyShare存在未授权漏洞,未授权的攻击者可以通过该漏洞获取用户名信息。

qq_67810151的博客 3121

3. Java 运算符

本文系统介绍了Java运算符的使用规则和注意事项。主要内容包括:1)算术运算符的整数除法、取余运算特性;2)字符串拼接的优先级规则和性能优化建议;3)赋值运算符的自动类型转换特性;4)关系运算符在基本类型和引用类型的区别;5)逻辑运算符的短路特性;6)三元运算符的语法规则;7)运算符优先级表;8)类型转换的隐式和显式规则。重点强调了浮点数比较的精度问题、字符串比较的正确方法、复合赋值的类型自动转换等常见易错点,并提供了典型问题解答。

Jingxi6687的博客 467

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

3.5.6 关系和boolean运算符

Java包含丰富的关系运算符。要检测相等性,可以使用两个等号 == 。例如, 3 == 7 的值为 false。 另外可以使用 !=检测不相等。例如, 3 ! = 7的值为true。 最后,还经常使用的 < 、 >、<=、>=运算符。 Java使用 &&表示逻辑“与”运算,使用 ||表...

weixin_30763397的博客 72

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java运算符深度解析:从基础运算到实战避坑指南

运算符是编程语言中用于执行计算和逻辑操作的基础符号,其核心原理在于定义操作数之间的运算规则。理解运算符的优先级、结合性和类型转换机制,对于编写高效、健壮的代码至关重要。在Java开发中,算术运算符的整数除法截断特性、逻辑运算符的短路求值机制,以及位运算符在权限控制等场景中的应用,都体现了运算符的技术价值。本文聚焦于Java运算符的常见陷阱与高频面试考点,通过分析赋值运算符与比较运算符的混淆、自增自减运算符的前后置差异等典型问题,帮助开发者规避线上Bug,提升代码质量。

weixin_30323631的博客 356

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【u5zq】 Integer在三目运算符中的NullPointerException

(至于如何反编译代码、请下载jd-gui.jar 然后把编译完成的class文件拖进去 打开即可)因为变量 cc aa 和方法 getInt 的类型不一致,这里就是存在拆箱的问题。再次运行 就会抛异常NullPointerException。但是如果这里将aa改成 int aa =1;可以发现编译以后的代码变成如下这个样子。即是 对getInt()进行拆箱。获取源码, 请参考作者置顶的文章。

SouGit 每一篇文章都有源码 122

Java逻辑运算符深度解析:从短路特性到位运算实战应用

逻辑运算符是编程语言中构建条件判断与流程控制的基础构件,其核心原理在于对布尔值进行与、或、非等逻辑运算。在Java中,逻辑运算符根据求值策略可分为短路与非短路两类,短路运算符(&&、||)在左侧操作数已能确定表达式结果时,会跳过右侧计算,这一特性不仅是性能优化的关键,更是实现防御性编程、避免空指针等运行时异常的核心技术手段。而非短路运算符(&、|)则保证了操作数两侧的表达式都会被完整执行,这在需要依赖方法副作用的业务场景或进行位标志处理、状态掩码运算时不可或缺。理解短路与非短路的差异,能帮助开发者在日常业务

weixin_34216107的博客 396

Java逻辑运算符全解析:短路与非短路的区别与应用场景

逻辑运算符是编程语言中实现条件判断和流程控制的基础工具,其核心原理在于对布尔表达式的求值与组合。在Java中,逻辑运算符分为短路(&&、||)与非短路(&、|、^)两类,其根本区别在于求值策略:短路运算符在能够确定整个表达式结果时即停止后续计算,而非短路运算符则始终对所有操作数进行求值。这一特性直接影响了代码的性能与安全性。从技术价值看,短路运算符通过避免不必要的计算(如昂贵的数据库查询或可能抛出异常的方法调用)来提升效率,并常用于构建安全的空指针防御链;而非短路运算符则确保了必要的副作用(如状态更新、日志

weixin_30336061的博客 561

Java运算符实战指南:从基础算术到位运算的避坑与性能优化

运算符是编程语言中执行计算和逻辑判断的基础构件,其核心原理在于对操作数进行特定规则的运算并返回结果。理解运算符的优先级、结合性及类型转换规则,对于编写健壮、高效的代码具有重要技术价值。在Java开发中,算术运算符的整数除法截断特性、自增自减的前后缀差异、逻辑运算符的短路求值以及位运算的高效位操作,都是实际工程中必须掌握的关键点。这些知识广泛应用于状态管理、性能优化、条件判断和底层数据处理等场景。本文聚焦于Java运算符的实战应用,深入解析了整数除法的截断特性、自增自减的表达式求值差异等常见陷阱,并探讨了如何

weixin_30776545的博客 412

Java表达式、语句与代码块核心解析

在Java编程中,表达式、语句和代码块是构建程序逻辑的基础单元。表达式作为最小运算单元,由操作数和运算符组成并产生确定值,如算术表达式和Lambda表达式。语句则是完整执行单元,包括控制语句和跳转语句等。代码块通过花括号组织语句并定义作用域,遵循词法作用域规则。理解这些概念的区别与层级关系,对编写优雅代码和避免常见错误至关重要。特别是在处理复杂业务逻辑时,清晰的代码块划分和正确的表达式求值顺序能显著提升代码可维护性。掌握这些基础概念也是理解Java 8函数式编程和Spring表达式语言(SpEL)等高级特性

weixin_34245749的博客 500

Java条件运算符嵌套:从基础语法到成绩分级实战

条件运算符(三元运算符)是编程中实现简洁条件判断的核心语法结构,其`条件 ? 表达式1 : 表达式2`的范式通过单行代码替代传统if-else分支。从技术原理看,Java条件运算符具有右结合特性,嵌套时会从右向左求值,这种特性在成绩分级、权限控制等业务场景中能显著提升代码紧凑性。以成绩分级为例,通过`score>=90?'A':(score>=60?'B':'C')`的嵌套结构,开发者既能实现多级条件判断,又避免了if-else的代码冗余。在实际工程中,需注意控制嵌套层级(建议≤3层)并合理使用括号保证可读

weixin_30443075的博客 387
上一篇: IDEA Unable to import maven project: See logs for details (maven的坑)
下一篇: JDK8之初探索
Certain_
博客等级 码龄8年 10粉丝 18原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值