从入门到精通:Java三目运算符详细教程!

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

前言

  Java作为一门面向对象的编程语言,其特点体现在复杂对象的抽象、继承、多态、封装等方面。而作为一个程序员需要
灵活运用Java语言的各种特性。本文将介绍Java语言中的三目运算符。

摘要

  本文将介绍Java语言中的三目运算符,包括其概念、语法、源代码解析、应用场景案例、优缺点分析、类代码方法介绍、测试用例(以main函数写法为准)、全文小结、总结。

Java之三目运算符

简介

  Java语言中的三目运算符是一种特殊的运算符,常用于Java程序的条件判断部分。它的语法结构如下:

条件 ? 表达式1 : 表达式2

等价于下面的

(condition)?expr1:expr2

  其中,如果condition表达式的返回值为true,则返回expr1的值;否则,返回expr2的值。它是一个非常灵活、简单易懂的运算符,经常被用在需要进行条件判断的场合中,比如if语句、循环语句等。

源代码解析

下面是三目运算符的源代码解析:

public class ThreeOperatorsDemo {

    public static void main(String[] args) {
        int a, b;
        a = 10;
        b = (a == 1) ? 20: 30;
        System.out.println( "Value of b is : " + b );

        b = (a == 10) ? 20: 30;
        System.out.println( "Value of b is : " + b );
    }
}

  上述代码定义了两个整型变量a和b,在第一个三目运算符中,判断a是否等于1,如果是,则将b的值赋为20,否则赋为30;在第二个三目运算符中,判断a是否等于10,如果是,则将b的值赋为20,否则赋为30。最终输出b的值,结果为:

Value of b is : 30
Value of b is : 20

具体执行结果如下:

在这里插入图片描述

应用场景案例

  三目运算符常用于Java程序的条件判断部分,例如:

int max = (a > b) ? a : b;

  上述代码中,如果a大于b,则将a的值赋给max,否则将b的值赋给max。

  例如再给大家演示一下其常用场景:

  1. 判断输入的数字是否为奇数或偶数
String result = (num % 2 == 0) ? "偶数" : "奇数";

拓展:

  这段代码是一个三目运算符,用于判断变量num是否为偶数,如果是,将字符串"偶数"赋值给变量result,否则将字符串"奇数"赋值给变量result。

  三目运算符的语法格式为:condition ? expr1 : expr2,其中condition是一个布尔表达式,如果为true,则返回expr1,否则返回expr2。在这段代码中,condition为(num % 2 == 0),表示判断变量num是否能够被2整除,如果能够被整除,则返回true,否则返回false。expr1为"偶数",expr2为"奇数"。

  1. 判断两个数字哪个更大
int max = (a > b) ? a : b;

拓展:

  这是一个三目运算符,格式为:(condition) ? value1 : value2,其作用是根据条件的真假来选择value1或value2的值。

  在此代码中,意思是如果a大于b,则将max的值设为a,否则将max的值设为b。等价于以下普通if语句:

int max;
if (a > b) {
    max = a;
} else {
    max = b;
}
  1. 判断一个字符串是否为空
String str = "";
boolean isEmpty = (str == null || str.trim().isEmpty()) ? true : false;

拓展:

  这段代码定义了一个字符串变量 str,初始值为空字符串。接着,使用三目运算符判断字符串是否为空,如果为空或只包含空格,则将布尔变量 isEmpty 赋值为 true,否则将其赋值为 false

具体解释如下:

  • str == null 部分判断字符串是否为 null。
  • str.trim().isEmpty() 部分判断字符串去除空格后是否为空。

  如果上述两个条件有一个满足,则 isEmpty 变量被赋值为 true,否则被赋值为 false

  该段代码的作用是检查字符串是否为空或只包含空格,并将结果返回给布尔变量 isEmpty,方便后续的操作。

优缺点分析

优点

  • 三目运算符简单易懂,能够有效提高程序的可读性和简洁性。
  • 三目运算符可以避免代码中大量的嵌套if语句,降低代码的复杂度。

缺点

  • 三目运算符只适用于简单的条件判断,对于较为复杂的判断条件,使用三目运算符会使代码更加难以理解。
  • 三目运算符的使用需要慎重,过多的使用会降低代码的可读性和可维护性。

类代码方法介绍

  以下是三目运算符的方法介绍:

方法名方法描述
?:三目运算符

  如下为使用三目运算符判断两个数中较大值的代码实现:示例如下:

代码演示

public class ThreeOperatorsDemo {

    public static void main(String[] args) {
        int a = 5;
        int b = 10;
        int max = (a > b) ? a : b;
        System.out.println("两个数中较大的是:" + max);
    }
}

测试结果

  根据如上测试用例,本地测试结果如下,仅供参考,你们也可以自行修改测试用例或者添加更多的测试数据或测试方法,进行熟练学习以此加深理解。

在这里插入图片描述

代码分析

  根据如上测试用例,在此我给大家进行深入详细的解读一下测试代码,以便于更多的同学能够理解并加深印象。
  如上用例代码演示了Java中的三目运算符。在该代码中,定义了两个整型变量a和b,并使用三目运算符求出a和b中的较大值,将其赋值给变量max,最后输出max的值。运行该代码,输出结果为"两个数中较大的是:10"。

测试用例

以下是三目运算符的测试用例:

测试代码演示

package com.example.javase.se.operators;

/**
 * Java之三目运算符演示
 *
 * @Author ms
 * @Date 2023-11-08 11:00
 */
public class ThreeOperatorsDemo {

    public static void main(String[] args) {
        int a, b;
        a = 10;
        b = (a == 1) ? 20 : 30;
        System.out.println("Value of b is : " + b);

        b = (a == 10) ? 20 : 30;
        System.out.println("Value of b is : " + b);
    }
}

测试结果

  根据如上测试用例,本地测试结果如下,仅供参考,你们也可以自行修改测试用例或者添加更多的测试数据或测试方法,进行熟练学习以此加深理解。

在这里插入图片描述

测试代码分析

  根据如上测试用例,在此我给大家进行深入详细的解读一下测试代码,以便于更多的同学能够理解并加深印象。

  这段代码演示了 Java 的三目运算符。

  在代码中,首先定义了两个整型变量 a 和 b,并将 a 赋值为 10。然后使用三目运算符语法,将 (a == 1) 作为条件表达式,如果条件成立则将 b 赋值为 20,否则赋值为 30。此时因为 a 不等于 1,所以 b 的值将为 30,并输出 “Value of b is : 30”。

  接着,将条件表达式改为 (a == 10),由于 a 等于 10,所以条件成立,将 b 赋值为 20,因此输出 “Value of b is : 20”。

全文小结

  本文介绍了Java语言中的三目运算符的概念、语法、源代码解析、应用场景案例、优缺点分析、类代码方法介绍、测试用例。通过本文的介绍,相信大家已经对三目运算符有了更深入的了解。

总结

  三目运算符是Java语言中的一种特殊的运算符,常用于Java程序的条件判断部分。它的优点是可以简化代码,提高代码的可读性,缺点是如果过多使用三目运算符,会导致代码可读性降低,不易维护。在实际的Java开发中,需要根据具体的情况选择适合的条件判断方式,灵活运用Java语言的各种特性。

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!


⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/683071.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

操作系统教材第6版——个人笔记3

2.1 处理器 2.1.1 处理器与寄存器 处理器部件的简单示意 用户程序可见寄存器 可以使程序员减少访问主存储器的次数,提高指令执行的效率所有程序可使用,包括应用程序和系统程序数据寄存器:又称通用寄存器地址寄存器:索引、栈指针…

表达式求值中的“整型提升”概念

一.基本原理和概念 如:代码 char a,b,c ; a b c ; 该代码在计算的时候就会先将 b 和 c 提升为 int 类型进行加法后,再将数据进行截断存放在内存存放变量 a 的空间中。 (1)提升和截…

【quarkus系列】实战自定义注解实现策略模式分发

目录 序言自定义注解业务接口渠道消息实现策略分发测试知识扩展AnyAnnotationLiteral 应用场景和语法 序言 策略模式大家都应该了解或者使用过,此篇文章中就不再阐述,之前springboot项目中小编也真正的实战应用过。现在换Quarkus框架开发项目&#xff0…

Java面试题:Redis双写一致性问题

Redis双写一致性 缓存和数据库数据同步 正常流程: 读操作: 查询缓存,查询命中直接返回,没命中查询数据库将查询到的数据写入缓存,并设定超时时间 写操作: 删除缓存,修改数据库,在延时一段时间后再删除缓存 (延迟双删)延迟:等待数据库的主节点同步到从节点 因为如果先删…

C++实现,简单的命令行交互框架

目录 背景背景 在实际开发中,经常需要有对端测试程序,配合自己的程序,验证功能、逻辑等。面对繁杂、多变的需求,如果对端程序设计得不够灵活,则无法提升工作效率,如果能够与对端程序交互,通过命令行输入命令的方式完成测试验证,将大大提升工作效率,下面的示例程序是一…

【C语言】一节课拿捏---动态内存分配

谢谢观看!希望以下内容帮助到了你,对你起到作用的话,可以一键三连加关注!你们的支持是我更新地动力。 因作者水平有限,有错误还请指出,多多包涵,谢谢! 目录 一、 为什么要有动态内存…

winscp无法上传,删除,修改文件并提示权限不够的分析

使用winscp删除文件,报了个错如下 根据这个错就去百度,网上大部分都是通过下面这种方法解决: 在winscp端进行设置 输入主机名(即IP地址)、用户名和密码,然后点击高级 在箭头所指位置输入sudo + sftp应用程序的路径 先查询 sudo find / -name sftp-server -print点击Sh…

springboot项目中第三方jar包打包进jar包

springboot项目中,如果手动引入了jar包,打包时不会将手动引入的第三方jar包打包进价包里,如何处理? 若第三方的jar包的lib和src同级,则maven打包时默认不会将lib下的jar包打包进jar包,处理方式有两种&#…

neo4j入门并使用案例说明

1、neo4j是什么 Neo4j是一个高性能的NoSQL图形数据库,它将结构化数据存储在网络(在数学角度称为图)上,而不是传统的表中。Neo4j是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎。它因其高性能、轻量级、易嵌入和…

c++(内存分配,构造,析构)

#include <iostream>using namespace std; class Per { private:string name;int age;double *height;double *weigh; public://无参构造Per(){cout << "Per::无参构造" << endl;}//有参构造Per(string name,int age,double height,double weigh):…

私募状告基金经理,七千月薪被索赔上百万

一个私募机构的基金经理&#xff0c;月薪七千元&#xff0c;但是却被公司诉讼追索100多万元赔偿。 这样“奇葩”的事情&#xff0c;不仅发生在视频网剧里&#xff0c;也发生在现实生活中。 根据日前相披露的一则案件文书&#xff0c;一家江浙一带的私募机构日前把自己的“基金…

docker create rm export exec命令详解

容器生命周期管理命令教程-3 1. 创建容器 docker create&#xff1a;创建一个新的容器但不启动它。 docker create -it --name mycontainer ubuntu bash通常使用 docker run(详细可看上一篇关于run命令的详细介绍) 2. 删除容器 docker rm&#xff1a;删除一个或多个容器。 d…

计算机网络9——无线网络和移动网络1 无线局域网 WLAN2

文章目录 一、802.11局域网的 MAC 层协议1、CSMA/CA协议2、时间间隔 DIFS 的重要性3、争用信道的过程4、对信道进行预约 二、802.11局域网的 MAC 帧1&#xff09;关于 802.11 数据帧的地址2&#xff09;序号控制字段、持续期字段和帧控制字段 一、802.11局域网的 MAC 层协议 1…

Spring boot+vue前后端分离

目录 1、前端vue的搭建 2、后端项目的构建 pom文件中引入的jar包 yml文件用来配置连接数据库和端口的设置 application.property进行一些整合 service层 imp层 mapper 实体类 额外写一个类、解决跨域问题 3、测试 1、前端vue的搭建 建立项目的过程略 开启一个建立好…

探索营销系统业务架构的设计与应用

随着市场竞争的日益激烈和消费者需求的不断变化&#xff0c;营销系统作为企业营销管理的重要组成部分&#xff0c;扮演着至关重要的角色。本文将深入探讨营销系统业务架构的设计与应用&#xff0c;从客户关系管理、营销活动管理、数据分析和智能化服务等方面进行全面解析&#…

Leetcode3168. 候诊室中的最少椅子数

Every day a Leetcode 题目来源&#xff1a;3168. 候诊室中的最少椅子数 解法1&#xff1a;模拟 代码&#xff1a; /** lc appleetcode.cn id3168 langcpp** [3168] 候诊室中的最少椅子数*/// lc codestart class Solution { public:int minimumChairs(string s){int chair…

学习笔记——路由网络基础——浮动静态路由(路由备份和冗余)

2、浮动静态路由(路由备份和冗余) (1)基本概念 浮动静态路由是两条或多条链路组成浮动路由。当到达某一网络有多条路径&#xff0c;通过为静态路由设置不同的优先级&#xff0c;你可以指定主用路径和备用路径。当主用路径不可用时&#xff0c;走备用路径的静态路由进入路由表…

LeakSearch:针对网络公开凭证的安全扫描与检测工具

关于LeakSearch 在红队演戏过程中&#xff0c;往往需要获取到针对目标域的访问权限。在这个过程中&#xff0c;很多红队人员会选择使用暴露在互联网上的代理服务器来实现目标域的访问&#xff0c;那么此时就需要在互联网上收集公开暴露的凭证信息。 对于蓝队来说&#xff0c;…

使用HTML、CSS和Javascript编写一个注册界面(二)

倘若代码中有任何问题或疑惑&#xff0c;欢迎提出交流哦~ 在上一篇文章我们实现了页面的建设&#xff0c;接下来我们实现JavaScript交互逻辑。 交互功能&#xff1a; 密码显示当用户输入的内容不符合规范时报错在提交注册界面是若有报错则提交失败 密码显示 要实现密码显示的…

【kubernetes】k8s集群中的ingress(对外服务)规则详解

目录 一、Ingress 简介 1.1service的作用 1.2外部访问方案 (四种&#xff09;&#x1f339;&#x1f339;&#x1f339; 部署externalIPs 1.3Ingress 是什么 二、Ingress 组成&#x1f339;&#x1f339;&#x1f339; 三、Ingress 工作原理&#x1f431;&#x1f…