三元运算符 比较三个数大小 三元操作符的类型务必一致
来源:互联网 发布:端口只亮黄灯正常吗 编辑:程序博客网 时间:2024/05/16 18:24
class JavaApplication1
{
public static void main(String[] args)
{
int x = 10,y;
int a=10,b=20,c=30,z;
y=(a>b?a:b)>(b>c?b:c)?(a>b?a:b):(b>c?b:c);
System.out.println("y="+y);
}
}
一、分析
当你使用三元运算符,两边的操作数的类型不一致的时候,这就涉及到三元操作符的转换规则:
1.若果两个操作数不可转换,则不做转换,返回值为Object类型。
2.若两个操作数是明确类型的表达式(比如变量),则按照正常的二进制数字来转换。int类型转换为long类型,long类型转换成float类型。
3.若两个操作数中有一个是数字S,另外一个是表达式,且其类型为T,那么,若数字S在T的范围内,则转换为T类型;若S超过了T的范围,则T转换为S类型。
4.若两个操作数字都是直接数字。则返回值类型为范围较大者。
二、场景
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Client{
public static void main(String[] args){
int i = 80;
String s = String.valueOf(i < 100? 90 : 100);
String s1 = String.valueOf(i < 100? 90 : 100.0);
System.out.println("两者是否相等:" + s.equals(s1)):
}
}
public class Client{
public static void main(String[] args){
int i = 80;
String s = String.valueOf(i < 100? 90 : 100);
String s1 = String.valueOf(i < 100? 90 : 100.0);
System.out.println("两者是否相等:" + s.equals(s1)):
}
}
分析,两个三元操运算,条件都为真,返回第一个值,结果“两者相等:true”。结果果真如此吗?结果“两者相等:false”!
问题出在于100和100.0这两个数字上:
在变量s中,第一个操作数(90)和第二个操作数(100)都是int类型,类型相同,返回的是int型的90;
在变量s1中,第一个操作数类型为(90)int类型,第二个操作数是(100.0)浮点型。
可是三元操作符必须返回同一个数据,而且类型要确定,不可能条件为真返回int类型,条件为假返回float类型,编译器是不会允许的,所以进行类型转换了。int转换成90.0,也就是所返回值是90.0当然和90不相等了。
0 0
- 三元运算符 比较三个数大小 三元操作符的类型务必一致
- 三元操作符的类型务必一致
- 三元操作符的类型务必一致
- 建议3:三元操作符的类型务必一致
- JAVA开发陷阱第三篇(三元操作符类型务必一致)
- Java三元运算符——类型必须一致
- 三元运算符的类型转换
- 三元操作符的类型误区
- 比较运算符和三元运算符
- 关于三元操作符操作数类型转换问题解析
- 三元运算符的优先级
- 三元运算符的妙用
- Java的三元运算符
- python的三元运算符
- java的三元运算符
- python的三元运算符
- 三元运算符的应用
- 三元运算符的使用方法
- 全身心的努力
- linux修改ip
- 设计模式前篇面向对象设计原则
- SpringMVC源码剖析(五) - 消息转换器HttpMessageConverter
- 《Linux4.0设备驱动开发详解》笔记--第十章:Linux设备驱动中的中断与时钟
- 三元运算符 比较三个数大小 三元操作符的类型务必一致
- bloomFilter
- 移动端rem布局的理解
- 装系统后无网卡驱动、USB驱动,如何处理
- 《Linux4.0设备驱动开发详解》笔记--第十一章:内存与I/O访问
- Android新人报道
- nio FileChannel中文乱码问题
- SVN无法提交.a文件的解决办法
- VB编程的必备技巧