我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java三目运算符的实战案例

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java三目运算符的实战案例

1.什么是条件分支语句?条件分支语句共有几种写法?

条件分支语句就是根据条件不同,选择执行不同代码的结构,Java中共有三种声明条件分支语句的语法,分别为:

  • if 语句
  • 三目运算符
  • switch语句

案例:判断输入的数值是奇数还是偶数,if 语句非常简单:

        System.out.println("请输入一个数字:");
        int num = sc.nextInt();
        //输出用户输入的数据是奇数还是偶数?
        //分析:通过条件分支语句进行判断!
        if (num % 2 == 0) {//证明:数值除以二等于0,是偶数
            System.out.println("偶数");
        } else {//证明:除以2不等于0,是奇数
            System.out.println("奇数");
        }

2. 三目元算符又称为三元运算符也称为条件运算符,目的就是根据条件得到数据结果,语法结构:

判断条件 ?条件成立结果 :条件不成立结果

需要注意的是,三目运算符得到的是数据结果,不是代码表达式 。

  • 优势:判断两种分支的代码非常简单
  • 劣势:不太适用于判断多中分支(可以用来判断,需要通过三目元算符嵌套完成!)
public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int num = sc.nextInt();
        //输出用户输入的数据是奇数还是偶数?
        //分析:num对2取余是否等于0 ? (如果条件成立)输出偶数 :(如果不成立)输出奇数
        System.out.println(num % 2 == 0 ? "偶数" : "奇数");
    }

如果遇到判断三个数值大小,或者4个数值大小时候,就会非常麻烦

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第1个整数:");
        int a = sc.nextInt();
        System.out.println("请输入第2个整数:");
        int b = sc.nextInt();
        System.out.println("请输入第3个整数:");
        int c = sc.nextInt();
        System.out.println("请输入第4个整数:");
        int d = sc.nextInt();
        //输出三个变量的最大值!(三目运算符)
        //a > b ? a : b等价于求得了a和b中的最大值!
        System.out.println((a > b ? a : b) > c ? (a > b ? a : b) : c);
        System.out.println(a > b ? (a > c ? a : c) : (b > c ? b : c));
 
        //输出四个变量的最大值!
        System.out.println(a > b ? (a > c ? (a > d ? a : d) : (c > d ? c : d)) : (b > c ? (b > d ? b : d) : (c > d ? c : d)));

3. switch语句的语法结构如下:

switch (变量) {
        case 值1: 
            满足变量等于值1运行的代码;
            break;
        case 值2: 
            满足变量等于值2运行的代码;
            break;
        case 值3: 
            满足变量等于值3运行的代码;
            break;
        default:
            不满足以上任何情况运行的代码;
            break;
    }

break用在switch语句中表示结束当前switch语句的执行,如果省略break,那么switch语句会跳过后续所有判断继续执行,直到遇到break或者switch运行结束为止!

  • 优势:适用于判断一个数的多种分支的情况
  • 劣势:switch只能判断相等的情况
        
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入今天周几?");
        int week = sc.nextInt();
        //根据周几输出不同的内容(switch语句)
        switch (week) {
            case 1:
            case 2://当前一个判断句没有break时,运行不会终止,(case=1245都会输出上班)
            case 4:
            case 5:
                System.out.println("上班");
                break;
            case 3:
                System.out.println("出差");
                break;
            case 6:
                System.out.println("睡觉");
                break;
            case 7:
                System.out.println("打球");
                break;
            default:
                System.out.println("日期有误");
                break;
        }

补充:Java 三目运算符细节详解

短路问题

首先我们都知道Java中 && 和 || 的运算是具有短路效果的,如果逻辑运算符的第一部分能确定运算的结果,就不会再去计算逻辑运算符的第二部分,比如下面的代码,输出的 i 仍然是1,因为后面的运算短路了,没有计算。

int i = 1;
if (true || (i++) > 5) {
   System.out.println("test");
}
System.out.println(i);   // 1

回到三目运算符,三目运算符也会有短路效果吗?看下面的代码。

int i = 5;
int j = true ? 1 : ++i;
System.out.println(i);  // 5

结果输出是 5 ,说明三目运算符也有类似逻辑运算符的短路问题,直接去 true 和 false 对应的地方取结果,不会计算另一部分,即使把代码写成下面这样结果一样,输出结果还是 5 ,不会因为顺序而改变。

int i = 5;
int j = false ? ++i : 1;
System.out.println(i);  // 5

运算顺序问题

先看下面的代码。

int[] array = new int[5];
int i = 4;
boolean flag = i++ > 4 ?  true : false;
System.out.println(flag);          // false
i = 4;
int b = i++ > 3 ?  array[i] : array[i];

我们知道 i++ 是先赋值再进行自加,所以 flag 的结果是 false 很好理解,但是下面 b 的结果会是多少呢?直接看运行结果。

false
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
        at A.main(A.java:16)

结果是抛出数组越界异常,结果说明在比较结束的时候,i 的值已经加了,即此时 i = 5 ,再去取数组的值的时候就会抛出数组越界异常,所以千万不要认为 i 值在整个表达式结束后才会增加。

包装类问题

在使用三目运算符处理包装类时,要注意 NPE 问题,看下面的代码。

int a = 5;
Integer b = null;

int c = true ? a : b;
System.out.println(c);    // 5

在这个例子中,会输出 5 ,没有什么问题,但是把代码稍微变一点,看下面的代码。

int a = 5;
Integer b = null;

int c = true ? b : a;
System.out.println(c);

仅仅是将 a 和 b 交换了一下位置,运行就会报 NullPointerException ,这是为什么的。这也很好理解,当为 true 时,会选 b ,因为前面 c 是基本数据类型,所以这时包装类会自动拆箱,变成下面这样的代码,而 b 是 null ,所以会抛出 NullPointerException 异常。

int a = 5;
Integer b = null;

int c = true ? b.intValue() : a;
System.out.println(c);

但是,将代码变成下面这样,按理说应该不会有什么问题,因为 c 是包装类型,可以接收 null ,但是运行时还是会发生 NullPointerException 异常。其实,当三目运算符的第二、第三个操作数分别为基本类型的包装类和基本数据类型时,并且选择了包装类那一项,则包装类会自动进行拆箱操作。即代码还是会进行拆箱操作,所以会发生 NullPointerException 异常,这点非常容易使人弄错。

int a = 5;
Integer b = null;

Integer c = true ? b : a;
// 还是会变成Integer c = true ? b.intValue() : a;
System.out.println(c);

总结

到此这篇关于Java三目运算符的文章就介绍到这了,更多相关Java三目运算符内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java三目运算符的实战案例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python三目运算符(三元运算符)用法详解(含实例代码)

三元运算符在Python里被称为条件表达式,这些表达式基于真(true)/假(false)的条件判断,在Python2.4以上才有了三元操作,下面这篇文章主要给大家介绍了关于Python三目运算符(三元运算符)用法的相关资料,需要的朋友可以参考下
2023-02-03

java中三目元算符的运算原理

格式:数据类型 变量名 = 布尔类型表达式?结果1:结果2运算原理:布尔类型表达式结果是true,三元运算符整体结果为结果1,赋值给变量。布尔类型表达式结果是false,三元运算符整体结果为结果2,赋值给变量。相关视频教程推荐:java学习示例如下:packa
java中三目元算符的运算原理
2021-03-10

java三目运算符的用法是什么

Java中的三目运算符(也称为条件运算符)是一种简洁的条件表达式,用于根据条件的结果选择不同的值。三目运算符的语法如下:```条件 ? 表达式1 : 表达式2```- 条件是一个布尔表达式,如果为true,则选择表达式1的值;如果为fals
2023-10-10

Java如何实现三目运算

小编给大家分享一下Java如何实现三目运算,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!public class Operation6 {public static void main(String[] args) {//
2023-06-02

Python中的三目运算符(三元表达式)

一般支持三目运算符的语言(如C语言)的语法格式一般是这样的:判断条件(返回布尔值)?为真时的结果:为假时的结果比如:x = x%2==1 ? x+1:x;python并不支持? :这种符号所表达的先判断再选择的含义,但仍然有相应的语法支持:
2023-01-31

javascript中的三目运算符有哪些

javascript中的三目运算符有哪些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。javascript 三目运算符javascript中的三目运算符用作判断时,基本语法为:
2023-06-14

Java三目运算符判断非空的方法是什么

Java中判断非空的方法有多种,以下是其中的一种方法:使用三目运算符对对象进行判空操作,语法如下:```object != null ? "非空" : "空"```其中,object是要判断的对象,如果object不为空,则返回"非空",否
2023-10-11

python三元运算符的示例分析

小编给大家分享一下python三元运算符的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!三元运算符:我们经常会根据条件,将变量设置成不同的值:if sco
2023-06-27

Java各种运算符应用实例分析

这篇“Java各种运算符应用实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java各种运算符应用实例分析”文章吧。一
2023-06-30

什么是c语言中唯一的三目运算符

c 语言中唯一的三目运算符是条件表达式,用于简化 if-else 语句。语法:条件 ? 值1 : 值2,其中条件为布尔表达式,值1 和值2 分别为真和假的情况下的返回值。C 语言中唯一的三目运算符C 语言中唯一的三目运算符为条件表达式,它
什么是c语言中唯一的三目运算符
2024-04-13

python not运算符的实例用法

说明 1、not逻辑非,可以对符号右侧的值进行非运算。 2、对于布尔值,非运算会对其进行取反操作,True变False,False变True。 对于非布尔值,非运算会先将其转换为布尔值,然后再取反。 空性值为False,其他为True。 实
2022-06-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录