Java 操作符:Java 中操作符优先级、一二三元操作符及逻辑操作符的中德模佛定理

简介: Java 操作符:Java 中操作符优先级、一二三元操作符及逻辑操作符的中德模佛定理

文章目录


前言

在 Java 中我们常见的操作符分为三种,分别是逻辑操作符、关系操作符、算术操作符,其优先级和结合规则确定了操作符计算的顺序,那么你会具体运用它们吗?又有哪些注意事项呢?它们各自的优先级又该如何区分呢?德模佛定理又该如何应用呢?本文来带你详细了解。

image.png


一、操作符介绍与优先级

我们常见的操作符分为三种,其优先级为:逻辑操作符 < 关系操作符 < 算术操作符

  • 逻辑操作符(也称布尔操作符),是对布尔值进行的运算,它会创建新的布尔值。包括:非(!)、与(&&)、或(||)、异或(^)。
  • 关系操作符(<、<=、==、!=、>、>=)产生一个布尔值。

优先级规则定义了操作符的先后次序,下表按照从上到下按优先级递减的方式排列

优先级 操作符
最高级 var++和var- -(后置操作符)
+、-(一元加号和一元减号)、++var、- -var(前置操作符)
(type)类型转换
!(非)
*、/、%(乘法、除法和求余运算)
+、-(二元加法和减法)
<、<=、>、>=(比较操作符)
==、!=(相等操作符)
^(亦或)
&&(条件与)
(条件或)
最低级 =、+=、-=、*=、/=、%=(赋值操作符)

注意:所有的二元操作符都是左结合(left-associative),赋值操作符是右结合(right-associative)。

二、一元运算符与二元运算符的区别?

一元运算符有且只有一个运算参数,二元运算符有且只有两个运算参数。

例如

  • 一元运算符,如负号 - 1 : 它只能运算一个数据。
  • 二元运算符,如加号 1 + 2 :参加运算的只能是两个数据,多或者少都出错,它是二元运算符。

三、Java 中唯一的三元操作符

符号?在条件表达式中同时出现。它们构成一种条件操作符,因为操作数有三个,所以称为三元操作符(ternary operator),它是 Java 中唯一的三元操作符

在 Java 中的条件表达式基本形式如下:

boolean-expression ? expression1 : expression2;(布尔表达式? 表达式1: 表达式2)

如果布尔表达式的值为 true,则条件表达式的结果为表达式 expression1,否则结果为 expression2。我们通常使用三元操作符来改写 if else 条件语句。

如我们现在实现一个判断票价的条件语句:年龄 age 小于 16 岁半价门票 ticketPrice 为 10 元,否则为全票 20 元。

首先用常规的 if else 条件语句实现,代码如下:

if (age >= 16) {
      ticketPrice = 20;
    } else {
      ticketPrice = 10;
    }

接着我们使用三元操作符来改写,代码如下:

ticketPrice = (age >= 16) ? 20 : 10;

如示例所示,三元操作符的条件表达式可以编写更精简的代码

四、逻辑操作符中的德模佛定理

德模佛定理是以印度出生的英国数学家和逻辑学家奥古斯都▪德▪模佛来命名的(1806——1871),这个定理可以用来简化表达式

定义描述如下:

!(condition1 && condition2)和!condition1 || !condition2是等价的,
!(condition1 || condition2)和!condition1 && !condition2是等价的。

即:

!(number % 2 == 0 && number % 3 == 0)等价于!number % 2 == 0 || !number % 3 == 0
!(number % 2 == 0 || number % 3 == 0)等价于!number % 2 == 0 && !number % 3 == 0

总结

本文给大家介绍了 Java 中操作符优先级、一二三元操作符以及逻辑操作符中德模佛定理。这些都是 Java 的基础,基础扎实,后期才可以稳步提升。其中的三元操作符有时候运用起来远比使用条件语句快得多,时间复杂度会大大降低。

image.png


我是白鹿,一个不懈奋斗的程序猿。望本文能对你有所裨益,欢迎大家的一键三连!若有其他问题、建议或者补充可以留言在文章下方,感谢大家的支持!




相关文章
|
7月前
|
Java 调度
Java线程的优先级
Java线程的优先级
54 0
|
7月前
|
Java
JAVA运算优先级
JAVA运算优先级
46 0
|
7月前
|
安全 Java PHP
PHP/JAVA交易所系统开发(成熟案例)丨需求步骤丨指南详细丨方案逻辑丨逻辑教程丨源码功能
An exchange refers to an institution or platform that provides a centralized market for buying and selling transactions, where participants can trade various assets, such as securities, commodities, cryptocurrencies, etc. Exchanges provide market infrastructure and rules to facilitate compliant, saf
|
1月前
|
Java
【Java】— —实现人物对象的增、删、改、查(注:对象的删除以逻辑删除为主,在person类中设置“删除状态字段”,字删除该字段时,将状态改为有效。)
【Java】— —实现人物对象的增、删、改、查(注:对象的删除以逻辑删除为主,在person类中设置“删除状态字段”,字删除该字段时,将状态改为有效。)
34 0
|
13天前
|
存储 Java 编译器
Java基础教程(4)-Java中的操作符
【4月更文挑战第4天】Java中的String是常用类,字符串是不可变对象,用双引号表示。String对象在编译期长度受限于65535,运行期不超过Int范围。字符串方法如length()、substring()、replace()、equals()等提供了多种操作。可变字符串可使用StringBuffer或StringBuilder。String对象通过字符串池优化内存,池中已有相同内容字符串则返回其引用。
|
27天前
|
存储 算法 JavaScript
Java入门高频考查算法逻辑基础知识3-编程篇(超详细18题1.8万字参考编程实现)
解决这类问题时,建议采取下面的步骤: 理解数学原理:确保你懂得基本的数学公式和法则,这对于制定解决方案至关重要。 优化算法:了解时间复杂度和空间复杂度,并寻找优化的机会。特别注意避免不必要的重复计算。 代码实践:多编写实践代码,并确保你的代码是高效、清晰且稳健的。 错误检查和测试:要为你的代码编写测试案例,测试标准的、边缘情况以及异常输入。 进行复杂问题简化:面对复杂的问题时,先尝试简化问题,然后逐步分析和解决。 沟通和解释:在编写代码的时候清晰地沟通你的思路,不仅要写出正确的代码,还要能向面试官解释你的
33 0
|
2月前
|
Java
POI上传excel的java后台逻辑
POI上传excel的java后台逻辑
|
2月前
|
存储 设计模式 缓存
Java instanceof操作符:类型检查的必备工具
Java instanceof操作符:类型检查的必备工具
37 0
|
7月前
|
存储 Java
Java运算符及运算符的优先级【超详细】
Java运算符及运算符的优先级【超详细】
680 0
|
8月前
|
存储 Java 程序员
重温经典《Thinking in java》第四版之第三章 操作符(二十一)
重温经典《Thinking in java》第四版之第三章 操作符(二十一)
34 0