Java 条件表达式结果的隐式转换

public class IN0102 {
    public static void main(String[] args) {
        int a = ‘a‘;
        System.out.println(a);//97
        float f = (float) 3.2;

        float sum =1.5f;
        int num=2;
        System.out.println((sum<2?1:num/sum));//1.0
        System.out.println("------------------------------------------");

        int x = 6;
        double d = 7.7;
        System.out.println((x>d) ? 8.0:9);//9.0
        System.out.println("------------------------------------------");

        System.out.println(false ? 3.0 : 1);//1.0
        System.out.println( false ? 1 : ‘a‘);//a
        System.out.println( false ? 1.0 : ‘a‘);//97.0
        System.out.println( true ? 98 : ‘a‘);//b
        System.out.println( true ? 98.0 : ‘a‘);//98.0
    }
}

JAVA条件表达式,注意以下几点:

1、如果冒号两边,是同一种类型,那么该条件表达式的值也是同一种类型。

2、如果其中一边的类型是byte、short或者char(暂且统称为X类型),而且另外一边是int常量(注意是常量),而且这个常量可以用X类型表示(也就是不溢出),那么,结果就是X类型。比如:

System.out.println( true ? 98 : ‘a‘);     输出: b

3、如果不符合上述情况的,则自动隐式转换,即小范围的转换成大范围的,低精度的转换成高精度的类型,最后的结果就是转换后的类型。比如:

System.out.println( false ? 1.0 : ‘a‘);   输出: 97.0

最好还是不要这样哈 一直在旁边提示dead code【无用代码】

原文地址:https://www.cnblogs.com/yundong333/p/12108678.html

时间: 2024-07-29 19:49:51

Java 条件表达式结果的隐式转换的相关文章

无法确定条件表达式的类型,因为Datetime和&lt;null&gt;之间没有隐式转换

Q: var a=isFilter ? ta.EndDate : null; Error:无法确定条件表达式的类型,因为Datetime和<null>之间没有隐式转换 ta.EndDate是DateTime类型,不能与null选择: A: var a=isFilter ? ta.EndDate : (DateTime?)null;//加在ta.EndDate也是可以的.

js--运算符与或非 及 if判断条件、隐式转换 介绍

逻辑运算符: 返回值是Boolean类型,一般连接多个比较表达式: 与(&&):当所有表达式都返回true时,结果才为true,即是遇false则false: 或(||):当所有表达式都返回false时,结果才为false,即是遇true则true: 与(&&)也称短路与,意思是当遇到第一个为false的表达式时,该后面的表达式不再执行,结果直接返回false: 或(||)也称短路或,意思是当遇到第一个为true的表达式时,该后面的表达式不再执行,结果直接返回true: i

JAVA 类型转换:隐式转换与强制转换

  这篇随笔是对java类型转换的回顾,方便忘记的时候查询,同时希望帮助有这方面需要的朋友 一. 数据类型分类: 简单数据类型:整型.实型.字符型((byte-short-char)-int-long-float-double) 二.简单类型转换 (1)低级向高级转换---自动转换:隐式转换 byte i = 0;        int a =i;        long b = i;        float c =b;        double d =c;        short j =

【转】SQL SERVER标量表达式的隐式转换

在SQL Server中的数据类型中,存在着优先级的问题.标量表达示的返回结果类型也会根据操作数的类型而定,如1 +'1'=2.而不是'11',因些Int型的优先级比VARCHAR型的优先级要高.所以在表达示的结果隐式转换成Int型. 同样对于标量函数,如一个表的一列是Int型,表中有两行值为2和3如果对这一列使用AVG函数,则结果是2,而不是2.5.但是如果这一列是Decimal类型的话,那么结果就是2.5.因为结果类型依据操作数据类型. 如下的一个Case语名 CASE WHEN <logi

Qt C++中的关键字explicit——防止隐式转换(也就是Java里的装箱),必须写清楚

最近在复习QT,准备做项目了,QT Creator 默认生成的代码 explicit Dialog(QWidget *parent = 0)中,有这么一个关键字explicit,用来修饰构造函数.以前在Windows下写程序的时候,基本上没有碰到这个关键字,那么这个关键字是做什么用的呢? 关键字 explicit 可以禁止“单参数构造函数”被用于自动类型转换,主要用于 "修饰 "构造函数. 指明构造函数只能显示使用,目的是为了防止不必要的隐式转化. 光看这一句似乎不太容易明白,下面,举

Java基础——隐式转换vs强制转换

在定义变量时,有许多要注意的问题,一不小心就会出现损失精度或者不兼容类型等问题. 例如: 1.定义长整型数据时,必须加后缀l或L long l =123456789012345L 2.定义单精度类型时(7-8位有效数字),必须加后缀 f 或 F float f = 12.5F 3. boolean类型不可以转换为其它的数据类型. 这其中,我们常常会遇到数据类型的转换问题,最为常见的要属隐式转换和强制转换了,我们来分析一下. 隐式转换 特征: 从小到大,可以隐式转换,数据类型将自动提升. byte

【类型转换】 隐式转换 自动提升 强制转换

基本数据类型的类型转换 Java中基本数据类型共有8种,分别是:布尔型boolean,字符型char和数值型byte/short/int/long/float/double.由于字符型char所表示的单个字符与Ascii码中相应整形对应,因此,有时也将其划分到数值型中. 基本数据类型中,布尔类型boolean占有一个字节,由于其本身所代表的特殊含义,boolean类型与其他基本类型不能进行类型的转换(既不能进行自动类型的提升,也不能强制类型转换), 否则,将编译出错. 数值类型在内存中直接存储其

Scala 学习笔记之隐式参数和隐式转换并用

隐式转换条件: 1. 当表达式类型与预期的类型不同时 2.当对象访问一个不存在的成员时 3.当对象调用某个方法,而该方法的参数声明与传入参数不相匹时. 隐式转换搜索范围: 1. 位于源火目标类型伴生对象中的隐式函数. 2. 位于当前作用域可以以单个标识符指代的隐式函数. 隐式参数条件: 函数中参数带有implicit 隐式参数搜索范围: 在当前作用域所有可以用单个标识符指代的满足类型要求的val和def. 与所要求类型相关联的类型的伴生对象. 隐式参数和隐式转换并用例子: class A { d

深入理解Scala中的隐式转换系统

博客核心内容: 1.Scala中的两种隐式转换机制以及隐式视图的定义方式 2.Scala中的隐式绑定可能所处的位置以及如何更好的使用隐式转换 3.Scala中的隐式转换相关操作规则 4.Scala中的隐式参数 5.Scala中的隐式类 6.Scala中的隐式对象 7.Scala中的两种隐式类型约束(结合Scala中的类型系统) 8.Predef类中的implicitly方法的用法介绍以及Ordering类型转化为Oredered类型的方式 1.Scala中的两种隐式转换机制以及隐式视图的定义方式