Java运算符篇之三目运算符

举报
bug菌 发表于 2024/05/29 23:08:38 2024/05/29
【摘要】 咦咦咦,各位小可爱,我是你们的好伙伴 bug菌,今天又来给大家手把手教学Java SE系列知识点啦,赶紧出来哇,别躲起来啊,听我讲干货记得点点赞,赞多了我就更有动力讲得更欢哦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~

  咦咦咦,各位小可爱,我是你们的好伙伴 bug菌,今天又来给大家手把手教学Java SE系列知识点啦,赶紧出来哇,别躲起来啊,听我讲干货记得点点赞,赞多了我就更有动力讲得更欢哦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~


🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8

前言

  在Java编程语言中,运算符是构建程序逻辑的重要工具。三目运算符,亦称条件运算符,是一种简洁且强大的工具,能够在一行代码中实现条件判断和赋值操作。本文将详细介绍Java中的三目运算符,包括其用法、优势、局限性以及实际应用场景。

摘要

  本文探讨了Java中的三目运算符,通过概述其用法、源代码解析、实际应用场景、优缺点分析等,帮助读者全面理解和有效运用三目运算符。并通过测试用例展示如何在实际开发中使用该运算符。

概述

  三目运算符(?:)是Java中的一种条件运算符,用于简化条件语句的书写。其基本语法格式为:

condition ? expression1 : expression2;

  其中,condition是一个布尔表达式。如果conditiontrue,则返回expression1的值,否则返回expression2的值。

源代码解析

示例代码

package com.example.javase.bugTest.operator.ternaryOperator;

/**
 * @Author bug菌
 * @Source 公众号:猿圈奇妙屋
 * @Date 2024-05-27 23:32
 */
public class TernaryOperatorExample {

    public static void main(String[] args) {
        int a = 5, b = 10;
        int max = (a > b) ? a : b;
        System.out.println("最大值是: " + max);
    }
}

代码解读:

  根据如上代码作出如下解析,以便于同学们更好的理解与掌握它:

  这段代码演示了Java中的三元运算符的使用。首先,定义了两个整型变量a和b,并初始化为5和10。接下来,利用三元运算符判断a是否大于b,如果是,则将a的值赋给max,否则将b的值赋给max。最后,打印输出max的值作为最大值。运行结果为"最大值是: 10"。

  本地实际运行结果展示如下,有条件的同学们也可以自己本地实践一下。

解析

  • ab 分别赋值为5和10。
  • 三目运算符判断 a > b,结果为 false,因此返回 b 的值,即10。
  • 输出结果为:最大值是: 10

应用场景案例

场景一:简化条件赋值

int age = 18;
String eligibility = (age >= 18) ? "可以投票" : "不可以投票";
System.out.println(eligibility);

代码解读:

  根据如上代码作出如下解析,以便于同学们更好的理解与掌握它:

  这段代码首先定义了一个整数变量age,并将其赋值为18。然后使用条件运算符(即三目运算符)来判断age是否大于等于18。如果是,则将字符串变量eligibility赋值为"可以投票";如果不是,则将其赋值为"不可以投票"。最后,使用System.out.println打印eligibility的值。结果会输出"可以投票",因为age的值为18,符合条件。

场景二:嵌套三目运算符

int num = 7;
String type = (num % 2 == 0) ? "偶数" : (num % 3 == 0) ? "是3的倍数" : "其他";
System.out.println(type);

代码解读:

  根据如上代码作出如下解析,以便于同学们更好的理解与掌握它:

  这段代码使用了条件运算符(三元运算符)来判断一个整数num的属性。首先,判断num是否是偶数,如果是偶数,type被赋值为"偶数"。如果num不是偶数,则判断num是否是3的倍数,如果是3的倍数,type被赋值为"是3的倍数"。如果num既不是偶数也不是3的倍数,则type被赋值为"其他"。最后,使用System.out.println方法输出type的值。

  总结:根据num的值,type可能被赋值为"偶数"、“是3的倍数"或"其他”。

优缺点分析

优点

  • 简洁性:可以用一行代码实现简单的条件判断和赋值,代码更加简洁。
  • 可读性:在适当的情况下,三目运算符可以提高代码的可读性。

缺点

  • 复杂性:过度使用或嵌套使用三目运算符可能导致代码难以阅读和理解。
  • 调试困难:调试嵌套的三目运算符时,可能不如使用if-else语句直观。

类代码方法介绍

三目运算符主要用于简化if-else条件判断,可以在赋值操作、返回值、输出语句等场景中使用。

测试用例

package com.example.javase.bugTest.operator.ternaryOperator;

/**
 * @Author bug菌
 * @Source 公众号:猿圈奇妙屋
 * @Date 2024-05-27 23:26
 */
public class TernaryOperatorTest {
    public static void main(String[] args) {
        // Test max function
        int a = 5, b = 10;
        int expectedMax = 10;
        int resultMax = (a > b) ? a : b;
        System.out.println("最大值测试 " + (resultMax == expectedMax ? "通过" : "失败"));

        // Test eligibility function
        int age = 18;
        String expectedEligibility = "可以投票";
        String resultEligibility = (age >= 18) ? "可以投票" : "不可以投票";
        System.out.println("投票资格测试 " + (resultEligibility.equals(expectedEligibility) ? "通过" : "失败"));

        // Test number type function
        int num = 7;
        String expectedType = "其他";
        String resultType = (num % 2 == 0) ? "偶数" : (num % 3 == 0) ? "是3的倍数" : "其他";
        System.out.println("数字类型测试 " + (resultType.equals(expectedType) ? "通过" : "失败"));
    }
}

测试结果

  针对如上测试代码,这里我本地进行实际测试一波,结果仅供参考,有条件的同学们也可以自己本地实践一下。

测试代码解析

  针对如上测试代码,这里我再具体给大家讲解下,希望能够更透彻的帮助大家理解。

  这段代码演示了三元操作符的使用。首先,定义了两个整数变量a和b,然后使用三元操作符判断a和b的大小关系,将较大的值赋给resultMax变量。接下来,定义了一个年龄变量age,使用三元操作符判断年龄是否满足投票资格的条件,将结果赋给resultEligibility变量。最后,定义了一个数字变量num,使用三元操作符判断num的类型,并将结果赋给resultType变量。每个测试都会打印出结果,并与预期结果进行比较,如果相等则通过,否则失败。

  总的来说,这段代码展示了如何使用三元操作符进行条件判断和赋值操作,希望能够给初学者带来更有实践性的学习例子。

全文小结

  本文详细介绍了Java中的三目运算符,通过源代码解析和应用场景案例,展示了其用法及优势,同时也指出了其局限性。通过测试用例,读者可以实际验证三目运算符的功能和效果。

总结

  三目运算符在Java编程中提供了一种简洁高效的条件判断方法,但需要注意避免过度使用,尤其是嵌套使用,以免影响代码的可读性和维护性。在合适的场景下使用三目运算符,可以提升代码质量和开发效率。

结尾

  希望本文能帮助读者更好地理解和运用Java中的三目运算符。如果有任何疑问或建议,欢迎讨论和交流。祝大家编程愉快!

  … …

  好啦,这期的内容就基本接近尾声啦,若你想学习更多,你可以看看专栏的导读篇《「滚雪球学Java」教程导航帖》,本专栏致力打造最硬核 Java 零基础系列学习内容,🚀打造全网精品硬核专栏,带你直线超车;欢迎大家订阅持续学习。功不唐捐,久久为功!

「赠人玫瑰,手留余香」,咱们下期拜拜~~

附录源码

  如上涉及所有源码均已上传同步在「Gitee」,提供给同学们一对一参考学习,辅助你更迅速的掌握。

☀️建议/推荐你

  无论你是计算机专业的学生,还是对编程感兴趣的跨专业小白,都建议直接入手「滚雪球学Java」专栏;该专栏不仅免费,bug菌还郑重承诺,只要你学习此专栏,均能入门并理解Java SE,以全网最快速掌握Java语言,每章节源码均同步「Gitee」,你真值得拥有;学习就像滚雪球一样,越滚越大,带你指数级提升。

  码字不易,如果这篇文章对你有所帮助,帮忙给bug菌来个一键三连(关注、点赞、收藏) ,您的支持就是我坚持写作分享知识点传播技术的最大动力。

  同时也推荐大家关注我的硬核公众号:「猿圈奇妙屋」 ;以第一手学习bug菌的首发干货,不仅能学习更多技术硬货,还可白嫖最新BAT大厂面试真题、4000G Pdf技术书籍、万份简历/PPT模板、技术文章Markdown文档等海量资料,你想要的我都有!

📣关于我

我是bug菌,CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云2023年度十佳博主,掘金多年度人气作者Top40,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 20w+;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。