java中的三元表达式_逻辑运算符两侧的数据类型

java中的三元表达式_逻辑运算符两侧的数据类型一、分析当你使用三元运算符,两边的操作数的类型不一致的时候,这就涉及到三元操作符的转换规则:1.若果两个操作数不可转换,则不做转换,返回值为Object类型。2.若两个操作数是明确类型的表达式(比如变量),则按照正常的二进制数字来转换。int类型转换为long类型,long类型转换成float类型。3.若两个操作数中有一个是数字S,另外一个是表达式,且其类型为T,那

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

一、分析

当你使用三元运算符,两边的操作数的类型不一致的时候,这就涉及到三元操作符的转换规则:

1.若果两个操作数不可转换,则不做转换,返回值为Object类型。

2.若两个操作数是明确类型的表达式(比如变量),则按照正常的二进制数字来转换。int类型转换为long类型,long类型转换成float类型。

3.若两个操作数中有一个是数字S,另外一个是表达式,且其类型为T,那么,若数字S在T的范围内,则转换为T类型;若S超过了T的范围,则T转换为S类型。

4.若两个操作数字都是直接数字。则返回值类型为范围较大者。

二、场景

java中的三元表达式_逻辑运算符两侧的数据类型

分析,两个三元操运算,条件都为真,返回第一个值,结果“两者是否相等:true”。结果果真如此吗?结果“两者是否相等:false”!

问题出在于100和100.0这两个数字上:

在变量s中,第一个操作数(90)和第二个操作数(100)都是int类型,类型相同,返回的是int型的90;

在变量s1中,第一个操作数类型为(90)int类型,第二个操作数是(100.0)浮点型。 

可是三元操作符必须返回同一个数据,而且类型要确定,不可能条件为真返回int类型,条件为假返回float类型,编译器是不会允许的,所以进行类型转换了。int转换成90.0,也就是所返回值是90.0当然和90不相等了。 

三、建议

保证三元操作符中的两个操作类型一致,即可减少错误的发生。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179538.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 使用mysql中的concat()函数进行字符串拼接_mysql contains

    使用mysql中的concat()函数进行字符串拼接_mysql containsmysql>selectid,avatarfromtf_user;+—-+————–+|id|avatar|+—-+————–+|1|avatar_1.png||2|avatar_6.png||3|avatar_1.png||4|avatar_5.png||5|avatar…

    2022年9月29日
    0
  • javaScript学习笔记(一)js基础

    javaScript学习笔记(一)js基础=================================公众号关注一波(一叶知秋博客)不定期分享视频资料一、简介1、概述:JavaScript是目前web开发中不可缺少的脚本语言,js不需要编译即可运行,运行在客户端,需要通过浏览器来解析执行JavaScript代码。诞生于1995年,当时的主要目的是验证表单的数据是否合法。Java…

    2022年7月25日
    6
  • C#之线程ParameterizedThreadStart[通俗易懂]

    C#之线程ParameterizedThreadStart[通俗易懂]ParameterizedThreadStartclassProgram{staticvoidMain(string[]args){Workwork=newWork();//两种实例化委托的方法;//ParameterizedThreadStartParameterizedThreadStartDelegate=newParam…

    2022年7月15日
    11
  • [Python从零到壹] 十七.可视化分析之Matplotlib、Pandas、Echarts入门万字详解[通俗易懂]

    [Python从零到壹] 十七.可视化分析之Matplotlib、Pandas、Echarts入门万字详解[通俗易懂]前一篇文章讲述了数据预处理、Jieba分词和文本聚类知识,这篇文章主要介绍Matplotlib和Pandas扩展包绘图的基础用法,同时引入Echarts技术,该技术主要应用于网站可视化展示中。本文内容以实例为主,给读者最直观的图形感受。两万字基础文章,希望对您有所帮助。

    2025年6月7日
    1
  • centos7卸载_关闭docker

    centos7卸载_关闭docker一、禁用和停止容器服务systemctldisabledockersystemctlstopdocker二、删除容器服务器yumremovedocker-*三、删除残留文件rm-rf/var/lib/docker/rm-rf/etc/docker/rm-rf/run/dockerrm-rf/var/lib/dockershimrm-rf/usr/libexec/docker/…

    2022年8月30日
    3
  • 如何解决Mac上网速度很慢的问题(多种可能分析)[通俗易懂]

    如何解决Mac上网速度很慢的问题(多种可能分析)[通俗易懂]问题:我发现在我的Mac上上网的速度很慢。第一种分析:问题分析:虽然Mac上的运行速度很慢,但同时在我的两台手机上面的运行速度都比较快。我刚开始怀疑是路由器的问题,如果是路由器的问题,那么手机肯定不会很块,手机也会很慢,可以断定肯定是我的mac设置出了问题,我按个这个步骤寻找,去掉8.8.8.8,问题解决了。将上面的DNS地址8.8.8.8去掉就好了分析8.8.8……

    2022年9月13日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号