java基础07:运算符

算术运算符

​ 在数学运算中最常见的加减乘除,这4种运算称为四则运算

​ Java算术运算符就是用来处理四则运算的符号。

​ 算术运算符是最简单、最常用的运算符号。

一元运算符

算术一元运算一共有 3 个,分别是 -、++ 和 --。

运 算 符 名 称 说 明 例 子 结果
- 取反符号 取反运算 a=2;-a; a=-2;
++ 自增(前) 先自增再运算 a=2;b=++a; a=3;b=3;
++ 自增(后) 先运算在自增 a=2;b=a++; a=3;b=2;
-- 自减(前) 先自减再运算 a=2;b=--a; a=1;b=1;
-- 自减(后) 先运算再自减 a=2;b=a--; a=1;b=2;

在使用自增/自减运算时应注意下面几个问题。

  • 自增/自减只能作用于变量,不允许对常量、表达式或其他类型的变量进行操作。常见的错误是试图将自增或自减运算符用于非简单变量表达式中;
  • 自增/自减运算可以用于除了引用类型的其余七个数据类型;
  • 自增/自减运算结果的类型与被运算的变量类型相同。

二元运算符

​ Java 语言中算术运算符的功能是进行算术运算,除了经常使用的加(+)、减(-)、乘()和除(\)外,还有取模运算(%)。

​ 加(+)、减(-)、乘(*)、除(\)和我们平常接触的数学运算具有相同的含义。

运 算 符 名 称 说 明 例 子 结果
+ 让两个数值相加,还可以拼接字符串 a=2;b=3;c=a+b; c=5;
- 让两个数值相减 a=2;b=3;c=a-b; c=-1;
* 让两个数值相乘 a=2;b=3;c=a*b; c=6;
/ 让两个数值相除 a=3;b=3;c=a/b; c=1
% 取模 取余数 a=5;b=3;c=a%b; c=2;

​ 算术运算符都是双目运算符,即连接两个操作数的运算符。优先级上,*、/、% 具有相同运算级别,并高于 +、-(+、- 具有相同级别)。

​ 整数类型的结果最容易理解,浮点型和双精度型返回的结果都带有小数,字符型将会把字符转换为 ASCII 码再运算。

​ 整数之间的运算结果只保留整数部分,浮点型运算时保留 6 位小数部分,双精度运算时则保留 16 位小数部分。

​ 如果在一个表达式中的多个算术运算符的优先级别相同,例如“a-b+c”,此时将按照运算符的结合方向决定顺序。算术运算符的结合方向都是“从左至右”,即先左后右。因此 b 先与减号结合,执行“a-b”的运算,再执行加 c 的运算。

赋值运算符

​ 算术赋值运算符只是一种简写,一般用于变量自身的变化。

​ 赋值运算符是指为变量或常量指定数值的符号。赋值运算符的符号为“ = ”,它是双目运算符,左边的操作数必须是变量,不能是常量或表达式。

​ 其语法格式如下所示:

变量名称=数据类型

​ 在 Java 语言中,“变量名称”和数据类型必须匹配,如果类型不匹配则需要自动转化为对应的类型。

赋值运算符的优先级低于算术运算符,结合方向是自右向左;不是数学中的等号,它表示一个动作,即将其右侧的值送到左侧的变量中(左侧只允许是变量,不能是表达式或其他形式);不要将赋值运算符与相等运算符“==”混淆。

​ 赋值运算符与其他运算符一起使用,可以表达多种赋值运算的变异效果。例如,在基本的赋值运算符的基础之上,可以结合算术运算符,以及下面的位运算符,组合成复合的赋值运算符。

运 算 符 名 称 说 明 例 子 结果
+= 加赋值 变量本身加数值再把结果返回给变量本身 a=3;a+=1; a=3;
-= 减赋值 变量本身减数值再把结果返回给变量本身 a=3;a-=1; a=2;
*= 乘赋值 变量本身乘数值再把结果返回给变量本身 a=3;a*=1; a=3;
/= 除赋值 变量本身除数值再把结果返回给变量本身 a=3;a/=1; a=3;
%= 取余赋值 变量本身取余数值再把余数返回给变量本身 a=3;a%=2; a=2;

​ 在大型程序中,灵活运用这些赋值运算符可以提高程序的易读性,并且使程序更加容易保护。

注:

  • 运算符+=、-=、*=、/=、%=是两个字符构成的一个运算符,用空格从中分开写就会产生语法错误。例如 x+ =y; 是错误的,但是可以写成x += y; 在运算符的两侧增加空格会提高可读性。同样将运算符写反,例如 =+、=-、=/ 等形式会产生语法错误。
  • 凡是两个字符构成的一个运算符同上原理。

关系运算符

​ 关系运算符(relational operators)也可以称为“比较运算符”,用于用来比较判断两个变量或常量的大小。关系运算符是二元运算符,运算结果是 boolean 型。当运算符对应的关系成立时,运算结果是 true,否则是 false。

​ 关系表达式是由关系运算符连接起来的表达式。关系运算符中“关系”二字的含义是指一个数据与另一个数据之间的关系,这种关系只有成立与不成立两种可能情况,可以用逻辑值来表示,逻辑上的 true 与 false 用数字 1 与 0 来表示。关系成立时表达式的结果为 true(或 1),否则表达式的结果为 false(或 0)。

运 算 符 名 称 说 明 例 子 结果
== 相等 如果进行比较的两个操作数都是数值类型,无论它们的数据类型是否相同,只要它们的值相等,也都将返回 true。
如果两个操作数都是引用类型,只有当两个引用变量的类型具有父子关系时才可以比较,只要两个引用指向的不是同一个对象就会返回 true。
Java也支持两个 boolean 类型的值进行比较。
3==3
97 =='a'
6.0 ==6
true ==false
treu
true
true
fasle
!= 不等 如果进行比较的两个操作数都是数值类型,无论它们的数据类型是否相同,只要它们的值不相等,也都将返回 true。
如果两个操作数都是引用类型,只有当两个引用变量的类型具有父子关系时才可以比较,只要两个引用指向的不是同一个对象就会返回 true。
3!=3
98!='a'
6.6!=6
true!=false
false
true
true
true
> 大于 两边的操作数只支持数值类型,以下皆同。如果左边的数值大于右边的便会返回true。 2>1; true
>= 大于等于 如果左边的数值大于或等于右边的便会返回true。 2>=3; false
< 小于 如果左边的数值小于于右边的便会返回true。 2<1; false
<= 小于等于 如果左边的数值小于或等于右边的便会返回true。 2<=21; true

注:

  • 基本类型的变量、值和引用类型的变量、值不能使用 == 进行比较;boolean 类型的变量、值与其他任意类型的变量、值不能使用 == 进行比较;如果两个引用类型之间没有父子继承关系,那么它们的变量也不能使用 == 进行比较。

  • == 和 != 可以应用于基本数据类型和引用类型。当用于引用类型比较时,比较的是两个引用是否指向同一个对象,但当时实际开发过程多数情况下,只是比较对象的内容是否相当,不需要比较是否为同一个对象。

  • 由于计算机内存放的实数与实际的实数存在着一定的误差,如果对浮点数进行 ==(相等)或 !=(不相等)的比较,容易产生错误结果,应该尽量避免。

  • 不要将“==”写成“=”。

关系运算符的优先级为:>、<、>=、<= 具有相同的优先级,并且高于具有相同优先级的 !=、==。关系运算符的优先级高于赋值运算符低于算术运算符,结合方向是自左向右

位运算符

​ java定义的为运算直接对整数类型的位进行操作,这些包括配四个整数类型和字符类型。

​ 位运算符主要用来对操作数二进制的为进行计算,其操作数和运算结果都是整型值。

​ java中的位运算符分为位逻辑运算符和位移运算符两类。

位逻辑运算符

​ 位逻辑运算符包含四个:&(与)、|(或)、~(非)和^(异或)。除了 ~(即位取反)为单目运算符外,取余都为双目运算符。

运 算 符 名 称 说 明 例 子 结果
& 与(and) 按位进行与运算
有假为假
1.true&false
2.true&true
3.false&false
1.false
2.true
3.false
| 或(or) 按位进行或运算
有真为真
1.true&false
2.true&true
3.false&false
1.true
2.true
3.false
! 非(xor) 按位进行取反运算
真为假,假为真
1.!true
2. !false
1.false
true
^ 异或(not) 按位进行异或运算
同号为假,异号为真
1.true&false
2.true&true
3.false&false
1.true
2.false
3.true

​ 位于运算符为&时,运算规则是:参与运算的数值。低位对其。高位不足的补零,如果对应的二进制为同是为1,那么计算结果才为1,否则为0,。因此,任何数与0进行位运算,其结果都为零。

​ 假如1为真,0为假,这就很好理解了,上表已写,剩下的运算符都可以这么理解。

位移运算符

​ 位移运算符用来将操作数想某个方向(向左或向右)移动指定的二进制位数。

运算符 名称 说明 例子 结果
>> 右移位运算符 按二进制形式把数字向右移动对应的位数,低位移出(舍弃),高位的空位补零 8>>1; 4
<< 左移位运算符 按二进制形式把数字向左移动对应的位数,高位移出(舍弃),低位的空位补零 9<<2; 36

符合位赋值运算符

​ 所有的二进制运算符都有一种将赋值与运算组合在一起的简写形式。复合位运算符由赋值运算符与位逻辑运算符和位移运算符组合而成。

运 算 符 名 称 说 明 例 子 结果
&= 与运算赋值
|= 或运算赋值
^= 异或运算赋值
-= 取反运算赋值
>> 右移赋值
<< 左移赋值

条件运算符

​ java提供了一个特别的三元运算符(也称三目运算符)经常用于取代某个类型的if-then-else语句。

​ 条件运算符的符号为“ ? : ”,使用该运算符是需要有三个操作数,因此称其为三目运算符。

语法结构为:

布尔表达式?变量2:变量3;

​ 其中,布尔表达式主要用于两个变量的比较,当布尔表达式为true时,输出变量2的值,反之则输出变量3 的值。
​ 此三元运算符要求返回一个结果,因此要实现简单的二分支程序,即可使用该条件运算符。

技巧:

​ 可以将条件运算符理解为if-else语句的简化形式,在使用较为简单的表达式是,使用该运算符能够简化程序代码,提高程序的易读性。

在使用该条件运算符时,还应该注意优先级问题。

posted @ 2022-10-18 14:27  大脑修理工  阅读(35)  评论(0)    收藏  举报