三元运算符和if-else语句:不同之处。

  a) 三元运算符是必须要有返回值,而if-else语句并不一定有返回值,其执行结果可能是赋值语句或者打印输出语句。

  b) java三元表达式有字符强转(双目数值提升)的功能,返回值类型为两个返回值中类型精度更高的的那个类型

    1) 在java中常见数据类型其范围从小到大(精度由低到高):byte<short<char<int<float<double。

    2) jvm在给数值分配数据类型的时候会选取刚好能装下该数据大小精度的数据类型进行分配(如99.0为float,99为byte/short)

  c) 三元表达式的性能更好。

  d) 举例:

    下面用一段代码来解释三元表达式的字符强转功能,以下测试代码也涵盖了很多面试题目,希望各位可以从中理解上述三条规则。

    char a=‘a‘;

    int i=96;

    //规则1,定义了数据类型的变量与未定义变量的数值

    System.out.println(2==2?i:9.0); //返回96.0

    //jvm给9.0分配数据类型为float,所以返回值类型为float

    System.out.println(2==2?98:a); //返回b

    //jvm给98分配数据类型为byte/short,所以返回值类型为byte/short,故结果会变为ASCII码98对应的字符

    //规则2,两个已经定义数据类型的变量

    System.out.println(2==2?a:i);//返回97

    //返回值类型为int,返回值为a,返回结果为a的控制字符‘a’对应的ASCII码97

    //规则3,两个未定义的数值

    System.out.println(2==2?99:9.0);//返回99.0

    System.out.println(2==2?99:‘b‘);//返回C

说说三元运算和if...else的相同之处的更多相关文章

  1. 三元运算与lambda表达式

    #三元运算,就是对if else的简写 if 1 == 1: print("jasper") else: print("sb") 三元运算写法 name=&qu ...

  2. python实用笔记,加快编程速度,lamdba,三元运算,open.

    lamdba   表达式.    #   f1=lamdba x:x+1 三元运算                 #    b=True if 1 < 2 else False with op ...

  3. python基础(三元运算+深浅拷贝+函数参数)

    三元运算 三元运算,又称三目运算,主要作用是减少代码量,是对简单的条件语句的缩写. 书写格式: result = 值1 if 条件 else 值2 即如果条件成立,则将值1赋给result变量,如果不 ...

  4. Python全栈之路3--set集合--三元运算--深浅拷贝--初识函数

    一.上节课的重点回顾: 1.类名加括号其实就是执行类的__init__方法: 2.int a.创建方式 n1 = 123 #根据int类创建了一个对象 n2 = int(123) #根据int类创建一 ...

  5. python_way,day3 集合、函数、三元运算、lambda、python的内置函数、字符转换、文件处理

    python_way,day3 一.集合 二.函数 三.三元运算 四.lambda 五.python的内置函数 六.字符转换 七.文件处理 一.集合: 1.集合的特性: 特性:无序,不重复的序列 如果 ...

  6. 三元运算+lambda表达式

    #三元运算,三目运算,if else简写 if 1 == 1: name = "liangml" else: name = "NB" #如果 1==1 成立,n ...

  7. jq中的三元运算结构

    三元运算的结构为:Boolean?值1:值2.它的第一个参数必须为布尔值.

  8. python基础:三元运算

    学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: 1 2 3 4 5 6 7 8 # 普通条件语句 if 1 == 1:     name = 'wupeiqi' els ...

  9. 三元运算和lambda表达式

      19.三目运算,三元运算:     if else 的简写: name = 'alex' if 1 == 1 else 'SB'   ==> 等价于      if 1 == 1:     ...

随机推荐

  1. flask 中使用蓝图将路由分开写在不同文件

    flask 若想将不同的路由写在不同的文件中(如将 user 对象的相关接口写在一个文件中,将 customer 对象的相关接口写在另一个文件中),可以使用蓝图来实现. 有关蓝图的定义:A Bluep ...

  2. 3款著名BI工具功能盘点,哪款更实用?

    随着信息技术的发展和应用, 人类进入了一个大数据时代.5G的到来也在不断影响我们的生活,很明显,5G将在世界上留下持久的印记和影响力.每秒10千兆比特的传输速度,它比4G网络的连接速度提高了100倍左 ...

  3. 在 Linux 下确认 NTP 是否同步的方法

    NTP 意即网络时间协议Network Time Protocol,它通过网络同步计算机系统之间的时钟.NTP 服务器可以使组织中的所有服务器保持同步,以准确时间执行基于时间的作业.NTP 客户端会将 ...

  4. 【C#反射】BindingFlags 枚举

    BindingFlags 枚举用途:Type的类方法中,用于筛选成员. type.InvokeMember方法中 type.GetConstructor 方法中 type.GetFiles方法中 ty ...

  5. linux常用命令与实例小全

    转至:https://www.cnblogs.com/xieguohui/p/8296864.html  linux常用命令与实例小全 阅读目录(Content) 引言 一.安装和登录 (一)    ...

  6. WPS备份的位置

    C:\Users\Administrator\AppData\Roaming\kingsoft\office6\backup 也可以从左上图标->工具->备份管理->查看其它备份,直 ...

  7. Goland sync.Map大白话解析

    Goland sync.Map大白话解析 代码解析链接:https://mp.weixin.qq.com/s/H5HDrwhxZ_4v6Vf5xXUsIg 建议对照参考链接代码食用 结构体 可以简单理 ...

  8. WebGL 与 WebGPU比对[6] - 纹理

    目录 1. WebGL 中的纹理 1.1. 创建二维纹理与设置采样参数 1.2. 纹理数据写入与拷贝 1.3. 着色器中的纹理 1.4. 纹理对象 vs 渲染缓冲对象 1.5. 立方体六面纹理 1.6 ...

  9. 华为HCIA认证零基础入门-网络工程师必备之什么是静态路由?如何配置静态路由?

    一.静态路由功能介绍:静态路由就是手工配置的路由,使得数据包能够按照预定的路径传送到指定的目标网络. 当不能通过动态路由协议学到一些目标网络的路由时,配置静态路由就会显得十分重要. 二.静态路由应用场 ...

  10. Python:pyglet学习(1):想弄点3D,还发现了pyglet

    某一天,我突然喜欢上了3D,在一些scratch教程中见过一些3D引擎,找了一个简单的,结果z轴太大了,于是网上一搜,就发现了pyglet 还是先讲如何启动一个窗口 先看看官网: Creating a ...