详解JAVA运算符与表达式

简介: 详解JAVA运算符与表达式

目录

一、运算符

(1)算术运算符

(2)赋值运算符

(3)关系运算符

(4)逻辑运算符

(5)运算符的优先级

二、表达式

三、知识总结

1、表达式

2、运算符


一、运算符

运算符用于连接表达式的操作数,并对操作数执行运算。例如,表达式num1+num2,其操作数是num1和num2,运算符是”+”。在java语言中,运算符可分为5种类型:算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符。

根据操作数的不同,运算符又分为单目运算符双目运算符三目运算符。单目运算符只有一个操作数,双目运算符有两个操作数,三目运算符则有三个操作数。位运算符涉及到二进制位的运算,在java 程序中运用不是很多,因此下面主要介绍算术运算符、赋值运算符、关系运算符和逻辑运算符。

(1)算术运算符

算术运算符用在算术表达式中,其作用和数学中的运算符相同。

下表列出了Java语言支持的算术运算符。

算术运算符一般用于数值运算,可对操作数进行加减乘除、取余、自增和自减操作。

加减乘除、取余运算符比较容易理解。下面重点说说自增和自减运算符。

自增自减是单目运算符,只需要一个操作数参加运算。例如:a++、++a、a--、--a等。其中,a是操作数,++是自增运算符,--是自减运算符,自增和自减运算符即可以放在变量的前面,也可以放在变量的后面,例如++a、 a++。

自增(++):将变量的值加1,分前缀式(如++a)和后缀式(如a++)。前缀式是先加1再使用;后缀式是先使用再加1。

自减(--):将变量的值减1,分前缀式(如--a)和后缀式(如a--)。前缀式是先减1再使用;后缀式是先使用再减1。

(2)赋值运算符

赋值运算符是双目运算符,用在赋值表达式中。它的作用是将运算符右边操作数的值赋给运算符左边的变量。

下表列出了Java语言支持的赋值运算符。

赋值运算符分为两类,一类是简单赋值,一类是复合赋值。简单赋值是直接把运算符右边操作数的值赋给运算符左边的变量,运算符有“=”;复合赋值运算符复合赋值是先执行运算符指定的运算,然后再将运算结果赋值给运算符左边的变量,复合赋值运算符有“+=、-=、*=、/=、%=”。

简单赋值运算符非常容易明白和理解。下面重点说说复合赋值运算符“+=”操作,其它复合赋值运算符操作原理同“+=”运算符操作原理相同,这里就不再一一讲述了。

复合赋值运算符“+=”操作执行过程如下:

1) 将运算符右侧的操作数,与运算符左侧的操作数(变量值)执行相加操作;

2) 相加的结果赋值给运算符左侧的变量。

例如下面语句:

int num = 10;

num+= 20;

声明的变量num初始值为10,然后执行num+= 20赋值操作,其操作过程是变量num先与数值20相加,相加的结果是30,然后再将30赋值给变量num,此时变量num的值为30。

(3)关系运算符

关系运算符也是双目运算符,用于关系表达式。关系运算符对两个操作数进行比较,并返回比较结果,比较结果的值为一个布尔值(true或false)。下表列出了Java语言支持的关系运算符,表中例子假设A和B不相等,并且其A小于B。

关系运算符用于比较两个操作数的大小,两个操作数共有六种比较方式:

第一种比较方式是判断两个操作数是否相等,用运算符“==”进行运算,如果两个操作数相等,比较结果返回true,否则返回false。

第二种比较方式是判断两个操作数是否不相等,用运算符“!=”进行运算,如果两个操作数不相等,比较结果返回true,否则返回false。

第三种比较方式是判断运算符左边的操作数是否大于运算符右边的操作数,用运算符“〉”进行运算,如果左边的操作数比右边的操作数大,比较结果返回true,否则返回false。

第四种比较方式是判断运算符左边的操作数是否小于运算符右边的操作数,用运算符“<”进行运算,如果左边的操作数比右边的操作数小,比较结果返回true,否则返回false。

第五和第六种比较方式是判断运算符左边的操作数是否大于等于或小于等于右边的操作数,用运算符“〉=和<=”进行运算,如果比较结果满足要求,则返回true,否则返回false。

(4)逻辑运算符

逻辑运算符连接两个关系表达式或布尔变量,用于解决多个关系表达式的组合判断问题,返回的运算结果为布尔值。

例如,在数学中,表示一个数值的范围时,经常用不等式来表述,假设一个数值取值范围为0到100,设该数值为x,不等式0<x<100给出了x的取值范围。在java程序语言中,这个不等式只能分解为x<0和x>100两个关系表达式,然后用逻辑运算符进行连接。

下表列出了Java语言支持的逻辑运算符,表中假设布尔变量A为真,变量B为假。

逻辑运算符“&&”是双目运算符,用于判断两个关系表达式或布尔变量是否都为真,只有两个表达式的返回结果都为真时,运算结果为真,否则运算结果为假。

逻辑运算符“||”是双目运算符,用于判断两个关系表达式或布尔变量是否有一个为真,如果有一个为真,返回结果为true,否则返回false。

逻辑运算符“!”是单目运算符,用于取反关系表达式返回的值。例如:对于关系表达式a>b,如果a> b为真,取反后为false,如果a> b为假,取反后为true。

(5)运算符的优先级

和数学中的运算符一样,Java运算符也存在优先级关系。在Java表达式中,优先级高的运算符先参与运算,优先级低的运算符后参与运算。

下表给出了运算符的优先级,表中优先级栏,数字越小优先级越高,每个运算符用中文顿号分割。

表中结合性指运算符结合的顺序,通常都是从左到右。从右到左的运算符最典型的就是数值前面的正负号,例如3+-4,则意义为3加-4,符号首先和运算符右侧的内容结合。

二、表达式

求圆面积的公式就是一个表达式,其中S、π、r为变量或常量,省略的乘号为运算符,r的2次方可以描述为r*r。求圆面积的表达式为:

S =π* r *r;

image.gif

表达式是由变量、常量和运算符的组合,它执行计算并返回计算结果。在表达式中运算符作用的变量或常量称为操作数。在求圆面积的表达式中,乘号(*)为运算符,π和r为操作数。

在一些复杂的运算中,简单的表达式可以组合为复杂的表达式,其操作数本身可能就是一个表达式。例如:

(num1+num2)*(x+y)

image.gif

上面的表达式中,运算符乘号(*)两边的操作数(num1+num2)和(x+y)本身就是一个表达式。表达式的计算结果一般为数值,如果表达式是一个关系表达式或逻辑表达式,表达式会返回一个布尔值,即真或假。

根据运算符的不同,可以把表达式分为赋值表达式、算术表达式、关系表达式和逻辑表达式。赋值表达式用于把等号右边的操作数赋值给等号左边的变量;算术表达式用于数值运算;关系表达式用于条件判断;逻辑表达式用于逻辑操作。


三、知识总结

1、表达式

表达式同数学中的算式相同,是由变量、常量和运算符组合而成的。最简单的表达式仅由一个运算符和一个操作数构成,较复杂的表达式则由多个运算符以及多个操作数构成。表达式必须返回计算结果,计算结果或为值或为布尔值。

2、运算符

运算符对参与的操作数进行运算,根据参与运算的操作数的个数可把运算符分为单目运算符、双目运算符和三目运算符。当一个表达式包含多个运算符时,就需要考虑运算符的优先级,优先级高的运算符先参与运算,优先级低的运算符后参与运算。

在实际的开发中,不需要特别去记忆运算符的优先级别,也不要刻意的使用运算符的优先级别,对于不清楚优先级的地方使用小括号辅助进行优先级管理。

相关文章
|
9天前
|
存储 Java
java中的常见运算符的计算方式
本文介绍了计算机中二进制数的原码、反码和补码的概念及其转换方式。原码是符号位加真值的绝对值;反码中正数不变,负数其余位取反;补码在反码基础上加1。文章还详细解释了Java中的常见运算符(如按位与、或、异或、移位等)如何基于二进制进行计算,并探讨了使用补码的原因,包括统一符号位处理和扩展表示范围。通过具体代码示例帮助理解这些概念。
java中的常见运算符的计算方式
|
1月前
|
Java API 开发者
Java中的Lambda表达式与Stream API的协同作用
在本文中,我们将探讨Java 8引入的Lambda表达式和Stream API如何改变我们处理集合和数组的方式。Lambda表达式提供了一种简洁的方法来表达代码块,而Stream API则允许我们对数据流进行高级操作,如过滤、映射和归约。通过结合使用这两种技术,我们可以以声明式的方式编写更简洁、更易于理解和维护的代码。本文将介绍Lambda表达式和Stream API的基本概念,并通过示例展示它们在实际项目中的应用。
|
2月前
|
Java API 开发者
Java中的Lambda表达式:简洁代码的利器####
本文探讨了Java中Lambda表达式的概念、用途及其在简化代码和提高开发效率方面的显著作用。通过具体实例,展示了Lambda表达式如何在Java 8及更高版本中替代传统的匿名内部类,使代码更加简洁易读。文章还简要介绍了Lambda表达式的语法和常见用法,帮助开发者更好地理解和应用这一强大的工具。 ####
|
2月前
|
并行计算 Java 编译器
深入理解Java中的Lambda表达式
在Java 8中引入的Lambda表达式,不仅简化了代码编写,还提升了代码可读性。本文将带你探索Lambda表达式背后的逻辑与原理,通过实例展示如何高效利用这一特性优化你的程序。
|
2月前
|
搜索推荐 Java API
探索Java中的Lambda表达式
本文将深入探讨Java 8引入的Lambda表达式,这一特性极大地简化了代码编写,提高了程序的可读性。通过实例分析,我们将了解Lambda表达式的基本概念、使用场景以及如何优雅地重构传统代码。文章不仅适合初学者,也能帮助有经验的开发者加深对Lambda表达式的理解。
|
2月前
|
Java
探索Java中的Lambda表达式
【10月更文挑战第37天】本文将带你深入理解Java的Lambda表达式,从基础语法到高级特性,通过实例讲解其在函数式编程中的应用。我们还将探讨Lambda表达式如何简化代码、提高开发效率,并讨论其在实际项目中的应用。
|
2月前
|
Java API
Java中的Lambda表达式与函数式编程####
【10月更文挑战第29天】 本文将深入探讨Java中Lambda表达式的实现及其在函数式编程中的应用。通过对比传统方法,我们将揭示Lambda如何简化代码、提高可读性和维护性。文章还将展示一些实际案例,帮助读者更好地理解和应用Lambda表达式。 ####
|
2月前
|
JSON 自然语言处理 Java
这款轻量级 Java 表达式引擎,真不错!
AviatorScript 是一个高性能、轻量级的脚本语言,基于 JVM(包括 Android 平台)。它支持数字、字符串、正则表达式、布尔值等基本类型,以及所有 Java 运算符。主要特性包括函数式编程、大整数和高精度运算、完整的脚本语法、丰富的内置函数和自定义函数支持。适用于规则判断、公式计算、动态脚本控制等场景。
|
1月前
|
安全 Java API
Java中的Lambda表达式:简化代码的现代魔法
在Java 8的发布中,Lambda表达式的引入无疑是一场编程范式的革命。它不仅让代码变得更加简洁,还使得函数式编程在Java中成为可能。本文将深入探讨Lambda表达式如何改变我们编写和维护Java代码的方式,以及它是如何提升我们编码效率的。
|
2月前
|
安全 Java API
Java中的Lambda表达式与Stream API的高效结合####
探索Java编程中Lambda表达式与Stream API如何携手并进,提升数据处理效率,实现代码简洁性与功能性的双重飞跃。 ####
33 0
下一篇
开通oss服务