Java 运算符

1 Java的运算符

运算符是Java语言中一种用于执行操作的符号。例如:+,-,*,/等。

Java中有许多类型的运算符,如下所示:

  • 赋值运算符
  • 算术运算符
  • 字符串连接运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 三元运算符

2 赋值运算符

  • 赋值运算符(=)用于为变量赋值。
  • 它是一个二进制运算符。它需要两个操作数。
  • 右侧操作数的值已分配给左侧操作数。
  • 左侧操作数必须是变量。
//26 是变量值
//counter是变量名,类型为int
 
int counter = 26;

注意:必须要确保赋值运算符的右侧操作数的值与左侧操作数的数据类型兼容。否则,将发生编译时错误

3 算术运算符

  • 像(+(加号),-(减号),*(乘数),/(除数))之类的运算符在Java中称为算术运算符
  • 它只能与数字类型的操作数一起使用。这意味着,这两个操作数的算术运算符必须是一个类型byte,short,char,int,long,float,和double。
  • 这些运算符不能是boolean基本类型和引用类型的操作数。
int sum = 10 + 20; 
 
int difference = 50 - 20; 
 
long area = 20l * 30l;    
 
int percentage = 20 / 100;

3.1 一元算术运算符

运算符 名称 说明 例子
- 取反符合 取反运算 b=-a
++ 自加一 先取值再加一,或先加一再取值 a++ 或 ++a
-- 自减一 先取值再减一,或先减一再取值 a-- 或 --a

3.2 二元算术运算符

运算符 名称 说明 例子
+ 求 a 加 b 的和,还可用于 String 类型,进行字符串连接操作 a + b
- 求 a 减 b 的差 a - b
* 求 a 乘以 b 的积 a * b
求 a 除以 b 的商 a / b
% 取余 求 a 除以 b 的余数  a % b

4 字符串拼接运算符

使用+号运算符可以完成字符串与其他数据的拼接功能。

4.1 拼接两个字符串

使用+号可以把两个字符串拼接在一起,如下:

String str1 = "Hello";
String str2 = " World";
 
String str3 = str1 + str2;

System.out.println(str3);

输出结果为:

Hello World

4.2 基本类型拼接字符串

使用+号可以把字符串与基本类型进行拼接,如下:

int num = 26;
 
String str1 = "eric";
 
String str2 = num + str1;

System.out.println(str2);

输出结果为:

26eric

4.3 拼接null

使用+号还可以把字符串和null引用进行运算。如下:

String str1 = "I am ";

String str2 = null;

String str3 = str1 + str2;

System.out.println(str3);

输出结果为:

I am null

5 关系运算符

  • 所有关系运算符都是二进制运算符。
  • 他们采用两个操作数。
  • 关系运算符产生的结果始终是true或false。
  • 它们主要用于Java流程控制语句中,例如if语句,while语句等。

下面让我们看看Java中所有的关系运算符。

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

关系运算符的简单示例:

int result = 20; 
         
if( result > 10) {                  //true
    //some operation
}
 
boolean isEqual = ( 10 == 20 );     //false

6 逻辑运算符

  • 所有逻辑运算符只能与boolean操作数一起使用。
  • 它们通常用于控制语句中的比较两个(或多个)条件。
运算符 名称 用法 说明 例子 结果
&& 短路与 a&&b ab 全为 true 时,计算结果为 true,否则为 false。 2>1&&3<4 true
|| 短路或 a||b ab 全为 false 时,计算结果为 false,否则为 true。 2<1||3>4 false
! 逻辑非 !a a 为 true 时,值为 false,a 为 false 时,值为 true !(2>4) true
| 逻辑或 a|b ab 全为 false 时,计算结果为 false,否则为 true 1>2|3>5 false
& 逻辑与 a&b ab 全为 false 时,计算结果为 false,否则为 true  1<2&3<5 true
  • && 与 & 区别:如果 a 为 false,则不计算 b(因为不论 b 为何值,结果都为 false)
  • || 与 | 区别:如果 a 为 true,则不计算 b(因为不论 b 为何值,结果都为 true)

注意:短路与(&&)和短路或(||)能够采用最优化的计算方式,从而提高效率。在实际编程时,应该优先考虑使用短路与和短路或

逻辑运算符的简单示例:

int result = 20; 
         
if( result > 10 && result < 30) {      
    //some operation
}
 
if( result > 10 || result < 30) {      
    //some operation
}

7 位运算符

位运算符可操纵其操作数的各个位。Java定义了几个位运算符,它们可以应用于整数类型long,int,short,char和byte。

运算符 名称 说明 例子
& 按位进行与运算(AND) 4 & 5 4
| 按位进行或运算(OR) 4 & 5 5
^ 按位进行异或运算(XOR 4 ^ 5 1
~ 按位进行取反运算(NOT) ~ 4 -5

8 三元运算符

Java 提供了一个特别的三元运算符(也叫三目运算符)经常用于取代某个类型的 if-then-else 语句。条件运算符的符号表示为“?:”,使用该运算符时需要有三个操作数,因此称其为三目运算符。使用条件运算符的一般语法结构为:

result = <expression> ? <statement1> : <statement3>;

其中,expression 是一个布尔表达式。当 expression 为真时,执行 statement1, 否则就执行 statement3。此三元运算符要求返回一个结果,因此要实现简单的二分支程序,即可使用该条件运算符。

三元运算符的简单示例:

int number1 = 40;
int number2 = 20;

int biggerNumber = (number1 > number2) ? number1 : number2;

System.out.println(biggerNumber);

输出结果为:

40

9 Java运算符优先级

运算符 结合性
()、[]、{} 从左向右
!、+、-、~、++、-- 从右向左
*、/、% 从左向右
+、- 从左向右
«、»、>>> 从左向右
<、<=、>、>=、instanceof 从左向右
==、!= 从左向右
& 从左向右
^ 从左向右
| 从左向右
|| 从左向右
?: 从右向左
=、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>= 从右向左

推荐好课