三目运算符----类型自动提升

Java 三目运算符类型转换:从 3 个 NPE 案例解析自动拆箱与类型对齐 本文深入解析Java三目运算符在类型转换中的自动拆箱与类型对齐机制,通过三个典型NPE案例揭示常见陷阱。从JLS规范到字节码层面,详细讲解如何避免NullPointerException,并提供防御性编程实践建议,帮助开发者安全使用三目运算符。 阅读详情

今天偶然发现一问题,代码如下:

public static void main(String[] args) {
		int i=99;
		System.out.println("99999判断结果:"+(true?'a':99999));
		System.out.println("-1判断结果   :"+(true?'a':-1));
		System.out.println("0判断结果    :"+(true?'a':0));
		System.out.println("65535判断结果:"+(true?'a':65535));
		System.out.println("65536判断结果:"+(true?'a':65536));
		System.out.println("i判断结果    :"+(true?'a':i));
	}

涉及到了三目运算中类型自动提升的一些问题,运算结果如下:

99999判断结果:97
-1判断结果   :97
0判断结果    :a
65535判断结果:a
65536判断结果:97
i判断结果    :97

总结出了以下的结论:

(1)假如表达式1和表达式2具有相同的类型,那么整个条件运算符结果的类型就是这个类型。
(2)假如一个表达式的类型是T,T是byte或short或char,另一个表达式的类型是int类型的常量表达式,而且这个常量表达式的值是可以用类型T表示的(也就是说,常量表达式的值是在类型T的取值范围之内),那么整个条件运算符结果的类型就是T。 
(3)除以上情况外,假如表达式1和表达式2的类型不同,那么将进行类型提升,整个条件运算符结果的类型就是提升后的类型

根据上述结论可以看出,参考结论(2)char类型的取值范围为0-65535,在char取值范围中均会返回char类型的值,所以输出a。-1和65536超出了char的取值范围,所以类型提升为int型,输出a对应的ascii码。最后一条判断,已经明确了i为int类型,所以根据结论三,类型提升,输出结果97。

数据库迁移策略实战:MySQL到PostgreSQL 数据库迁移是一项复杂且细致的任务,需要充分的准备工作、合适的迁移策略和严格的验证与优化步骤。通过选择合适的迁移工具、进行手动迁移和应用程序适配、以及迁移后的验证与优化,可以确保数据迁移的成功和业务的连续性。希望本文的分享能够为大家在MySQL到PostgreSQL的数据库迁移实战中提供一些有用的参考和启示。 阅读详情

相关推荐

FreeRTOS系统CPU使用率统计

操作系统中CPU使用率是在软件架构设计中必须要考虑的一个重要性能指标。它直接影响到程序的执行时间以及优先级更高的任务能否实时响应的问题。而CPU使用率也不能过低,避免资源浪费。

灵哎惹,凌沃敏的博客 1378

三元运算符精度问题

虽然obj是指向了Integer类的数据,可是由于三元运算符是一个整体,所以Double会导致数据精度都会提高。

weixin_62466605的博客 361

模糊综合评价模型

一.引子 1.数学归纳法:同高中知识 2.秃子悖论:秃子悖论 这俩个例子都是类似于“量变引起质变”的道理,而在数学中我们把这类问题的性质叫做“模糊性”,在生活中我们也经常能遇到一些模糊的概念,比如年轻、帅、很少很多… 二.概述 模糊综合评价法是一种基于模糊数学的综合评价方法。该综合评价法根据模糊数学的隶属度理论把定性评价转化为定量评价,即用模糊数学对受到多种因素制约的事物或对象做出一个总体的评价。它具有结果清晰,系统性强的特点,能较好地解决模糊的、难以量化的问题,适合各种非确定性问题的解决。——来自百度百

The__Tyche的博客 2万+

Java中你所轻视的三目运算符

【1】一个小坑 三目运算符是我们经常在代码中使用的,a= (b==null?0:1); 这样一行代码可以代替一个 if-else,可以使代码变得清爽易读。但是,三目运算符也是有一定的语言规范的。在运用不恰当的时候会导致意想不到的问题。 对于条件表达式b?x:y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。 一个条件表达式...

小小默:进无止境 9831

Colmap参数调优实战:如何通过5个关键设置提升3D重建精度

本文深入探讨Colmap参数调优实战,通过5个关键设置显著提升3D重建精度。重点解析特征匹配参数、BA优化配置、初始化策略、资源分配及动态调整方法,结合量化数据和实际案例,帮助开发者精准优化重建流程,适用于古建筑扫描、无人机航拍等多种场景。

weixin_30872157的博客 432

eNSP安装教程

eNSP安装教程一、安装eNSP1、先安装依赖组件2、安装eNSP主程序eNSP+V100R003C00SPC100+Setup ---不要安装在中文路径下3、安装完成后注册设备 一、安装eNSP 程序包位置:https://drive.weixin.qq.com/s?k=AOgAQQfOAAsw1wAKEgAAcAbgbSAKQ 1、先安装依赖组件 依赖组件: WinPcap_4_1_3 —直接下一步,但不要安装在中文路径下 Wireshark_v3.4.6 或者wireshark-win3

qimowei的博客 8667

Java运算符、自动类型提升及控制台的输入

一、运算符 1.算术运算符 算术运算符:+,-,*,/,%,++,– /:两个数相除,取商 %:两个数相除,取余数 ++:给变量自增1 ​ i++:都是给i加1。i++的值还是当i来算。 ​ i++:先计算,再加1 ​ ++i:也是给i加1。++i的值相当于加1之后 ​ ++i:先加1,再运算 –:给变量自减1 ​ 都是给i进行减1。 ​ i–,值相当于i本身。最终执行之后给i减1。 ​ ...

paidaxing15的博客 231

FreeRTOS-Plus-CLI使用笔记

FreeRTOS-Plus-CLI使用笔记 一、简介 详细介绍可参考FreeRTOS-Plus-CLI官网地址入口 FreeRTOS+CLI(Command Line Interface, 命令行接口)提供了一种简单、小型、可扩展且RAM高效的方法,使FreeRTOS应用程序能够处理命令行输入。添加一条指令的步骤如下: 提供一个实现命令功能的函数 将命令映射到该功能函数 注册命令 运行命令解释器 命令行调试接口对于排查分析出现的问题提供了很好的接口,可以通过查看传感器信息判断传感器是否正常,可以查看内置

ApexYuan 6962

Python编程技巧:掌握三元运算符,简化代码逻辑与提高编程效率的关键

在这篇文章中,我们深入探讨了Python中的三元运算符,这是一种能够简化条件判断语句的强大工具。通过简介和示例,我们了解到三元运算符的基本用法,即x if condition else y形式,它根据条件的真假返回不同的值。我们还比较了三元运算符与传统的if-else语句在代码简洁性和效率上的优势。此外,文章展示了三元运算符在不同编程场景下的应用,包括在函数返回值和列表推导式中的使用,提高了代码的可读性和简洁性。

lph159的博客 1043

OpenClaw实战系列06:持久记忆与RAG知识库构建——让AI真正“记住”你

本文介绍了OpenClaw AI助理的持久记忆与RAG知识库构建功能。OpenClaw采用"文件即真理"的独特设计,所有记忆都以Markdown文件形式存储,支持直接编辑和Git版本管理。记忆系统分为三层:长期精炼记忆(MEMORY.md)、日常日志(按日期存储)和归档记忆。文章详细说明了环境配置步骤,包括安装必要组件、创建目录结构、设置API密钥,并提供了OpenClaw主配置文件的完整参数说明。该系统实现了跨会话、跨平台的持久化记忆,使AI助理能真正理解用户需求。

PeterPan的博客 1171

FAST-LIVO2 源码精读(五):IMU 运动模型、离散传播与去畸变原理

本文是「FAST-LIVO2 激光-惯性-视觉里程计源码精读」专栏第五篇,数学基础篇章(第 4–7 篇)的第二篇。上一篇在 SO(3) 流形上建立了姿态表示与右扰动模型;本篇聚焦 IMU 预积分的核心问题:一帧激光扫描横跨约 100 ms,帧内每一个点的采集时刻各不相同,如何利用 200 Hz 的 IMU 量测将全帧点云统一对齐到帧末时刻?答案完整封装在(587 行)的函数中,本篇逐段拆解其四阶段逻辑,并推导协方差矩阵随误差状态转移矩阵F_x逐帧演化的物理含义。

PX4-SLAM-PNC 156

探索JavaScript中强大的三元运算符:简洁、灵活、提升代码效率

它可以简化代码并提高可读性,但在使用时要避免过度复杂的嵌套,以保持代码的清晰性。可读性和可维护性优先:如果代码的可读性和可维护性更为重要,尤其是在团队合作或长期维护的项目中,使用 if-else 语句可以使代码更清晰和易于理解。复杂的条件逻辑:如果条件逻辑非常复杂,包含多个条件分支和多个操作语句,使用 if-else 语句可以更清晰地表达代码逻辑,并使代码易于理解和维护。需要执行多个操作:如果根据条件需要执行多个操作语句,if-else 语句提供了更灵活的结构,可以在不同的条件分支中执行不同的代码块。

代码炼金术 5470

linux 内核OOM问题定位-SLAB_DEBUG

首先看slabinfo按的size排序查看 slub object,可以查看 space 总占用大小,及objects个数判断泄漏点 为kmalloc-128。那个泄露多看/sys/kernel/debug的slab/kmalloc*-的alloc-traces和free-traces。SLAB或者SLUB有一个用就可以,改menuconfig没有clean会覆盖之前的更改,现在看一下编译的过程。或者配置defconfig,配置完之后需要clean后再编译。1,配置menuconfig。

陌上花开缓缓归以的博客 899

三目运算符---类型自动提升

今天偶然发现一问题,代码如下: [html] view plaincopy public static void main(String[] args) {           int i=99;           System.out.println("99999判断结果:"+(true?'a':99999));           System.out.

火炬手 944

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

java--三目运算符 类型自动提升

public static void main(String[] args) { int i=99; System.out.println("99999判断结果:"+(true?'a':99999)); System.out.println("-1判断结果 :"+(true?'a':-1)); System.out.println(

GDL's BLOG 1470

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

一道三目运算符的题目

请说出以下程序的运行结果: publicstaticvoidmain(String[]args){ intn1=1,n2=2; System.out.println(n1==n2?100.0:200); System.out.println(n1==n2?'A':66); System.out.println(n1...

yanqun007的博客 1535

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Java数值类型提升机制(三目条件运算符与空指针问题)

Java语法特性隐藏在了代码中的每个角落,最常见的就是自动拆装箱和类型提升了。这些特性在带来编码便利性的同时也在代码中藏下了些不易察觉定时炸弹,比如对null拆箱时引发的空指针异常NPE。本文就将JLS中关于数值提升的机制译述出来,便于更深刻地理解代码后面的东西。 问题 以下几段代码为什么是这样的运行结果: Object k = true ? null : 1; System...

Stay Foolish 2811

java运算符

一.算数运算符:+、-、*、/、%、++、-- 1.知识点:基本使用 1.++a:先自增1,再使用,a++:先使用,再自增1 2.——,减1,原理与++一致 2.知识点:深入算数运算符 //案例一:byte做运算,会自动向上转型成int类型再做运算 //案例2:short做运算,会自动向上转型成int类型再做运算 ​ //案例3:除了byte和short类型,其余的数值型做运算会向上转型成取值范围大的类型再做运算 ​ //案例4:浮点型做运算有可能会失去精度,在工作用浮点数做运算都用BigDec

昨日犹有青空的博客 237

Java面试(1)-- Java逻辑运算符

1 class Demo04{ 2 public static void main(String[] args){ 3 //逻辑运算符 4 5 //例1 6 System.out.println(true | false & false); 7 //结果 tru...

weixin_30335575的博客 129

JavaSE

JAVA SE关键字标识符数据类型自动提升与强制转换=与+=的区别逻辑运算符& | !常量与变量三目运算符 关键字 关键字的特点: 被java语言赋予特殊含义的单词 关键字的所有字母都为小写,并在集成开发环境中与其他字体有明显的区别 标识符 在程序中自定义的一些名称,并只能由26个英文字母、0-9、下划线、$组成,同时Java严格区分大小写 在起名字时,为了提高可读性,要尽量有意义 Jav...

qq_43672677的博客 135

java基础03

基础

qq_62373779的博客 342

Java - 运算符 - 数学工具包java.lang.Math类

算数运算符 [plain] view plain copy 需要注意的问题,类型自动提升,其实类型提升是在运算之前完成的   加法运算       byte a = 1;       byte b = 2;       byte c = a+b;       报错,因为a+b之前会将a,b自动提升为int       正确为: byte 

天边的鱼肚白 4285

Java基础三

java基础三学习

qq_63523782的博客 410

Java三目运算符的一些冷知识

1、如题,试写出输出结果: int a = 1, b = 10; int temp1 = 0 < 1 ? a++ : b++; System.out.println("a = " + a + ", b = " + b); System.out.println("temp1 = " + temp1); 2、如题,试写出输出结果: int c = 1, d = 10; int temp2 = 0 < 1

Ink设计 2365

Study2 数据类型与运算符

1.1Java注释 a.单行注释// b.多行注释/* */(不建议使用) c.文档注释/**   */ 1.2 Java标识符(变量、常量、类、函数等的名称) 标识符要求 标识符由字母、数字、_ 、$(忘掉)组成,其中不能以数字开头,不能使用java中的关键字。 命名规范:驼峰命名法 大驼峰:对于类名,类名是以大写字母开头,如果类名由多个单词组成,则每个单词首字母大写。 eg: clas...

image_button的博客 163

【25节JavaSE知识点·3】变量 数据类型 数据自动类型提升 表达式 Java运算符

变量 数据类型 数据自动类型提升 表达式 Java运算符

qq_42195589的博客 370
上一篇: JSP学习之----JSP声明/JSP输出表达式/JSP脚本
下一篇: 去除Chrome浏览器文本框边缘的黄线
LowKeySk
博客等级 码龄15年 21粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值