Java - 运算符



Java 中的运算符是用于执行操作的符号。例如:+、-、*、/ 等。

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

  • 一元运算符
  • 算术运算符
  • 移位运算符
  • 关系运算符
  • 位运算符
  • 逻辑运算符
  • 三元运算符
  • 赋值运算符

Java 运算符优先级

运算符类型 类别 优先
Unary 后缀 expr++ expr--
前缀 ++expr --expr +expr -expr ~ !
Arithmetic 乘除法 * / %
加减法 + -
Shift 移位 << >> >>>
Relational 比较 < > <= >= instanceof
平等 == !=
Bitwise 按位 AND
按位互斥 OR ^
按位包含 OR |
Logical 逻辑 AND &&
逻辑 OR ||
Ternary 三元 ? :
Assignment 赋值 = += -= *= /= %= &= ^= |= <<= >>= >>>=

Java 一元运算符

Java 一元运算符只需要一个操作数。一元运算符用于执行各种操作,即:

  • 将值递增/递减 1
  • 表达式求反
  • 布尔值反转

Java 一元运算符示例:


public class OperatorExample{ 	
public static void main(String args[]){ 	
int x=10; 	
System.out.println(x++);//10 (11) 	
System.out.println(++x);//12 	
System.out.println(x--);//12 (11) 	
System.out.println(--x);//10 	
}} 	

输出:

10
12
12
10

Java 一元运算符示例 2:++ 和 --


public class OperatorExample{ 	
public static void main(String args[]){ 	
int a=10; 	
int b=10; 	
System.out.println(a++ + ++a);//10+12=22 	
System.out.println(b++ + b++);//10+11=21 	
		
}} 	

输出:

22
21

Java 一元运算符示例:~ 和 !


public class OperatorExample{ 	
public static void main(String args[]){ 	
int a=10; 	
int b=-10; 	
boolean c=true; 	
boolean d=false; 	
System.out.println(~a);//-11 (minus of total positive value which starts from 0) 	
System.out.println(~b);//9 (positive of total minus, positive starts from 0) 	
System.out.println(!c);//false (opposite of boolean value) 	
System.out.println(!d);//true 	
}} 	

输出:

-11
9
false
true

Java 算术运算符

Java 算术运算符用于执行加、减、乘和除。它们充当基本的数学运算。

Java 算术运算符示例


public class OperatorExample{ 	
public static void main(String args[]){ 	
int a=10; 	
int b=5; 	
System.out.println(a+b);//15 	
System.out.println(a-b);//5 	
System.out.println(a*b);//50 	
System.out.println(a/b);//2 	
System.out.println(a%b);//0 	
}} 	

输出:

15
5
50
2
0

Java 算术运算符示例:表达式


public class OperatorExample{ 	
public static void main(String args[]){ 	
System.out.println(10*10/5+3-1*4/2); 	
}} 	

输出:

21

Java 左移运算符

Java 左移运算符 << 用于将值中的所有位向左移动指定次数。

Java 左移运算符示例


public class OperatorExample{ 	
public static void main(String args[]){ 	
System.out.println(10<<2);//10*2^2=10*4=40 	
System.out.println(10<<3);//10*2^3=10*8=80 	
System.out.println(20<<2);//20*2^2=20*4=80 	
System.out.println(15<<4);//15*2^4=15*16=240 	
}}	

输出:

40
80
80
240

Java 右移运算符

Java 右移运算符 >> 用于将左操作数的值向右移动右操作数指定的位数。

Java 右移运算符示例


public OperatorExample{ 	
public static void main(String args[]){ 	
System.out.println(10>>2);//10/2^2=10/4=2 	
System.out.println(20>>2);//20/2^2=20/4=5 	
System.out.println(20>>3);//20/2^3=20/8=2 	
}} 	

输出:

2
5
2

Java 移位运算符示例:>> 与 >>>


public class OperatorExample{ 	
public static void main(String args[]){ 	
	 	 //For positive number, >> and >>> works same 	
	 	 System.out.println(20>>2); 	
	 	 System.out.println(20>>>2); 	
	 	 //For negative number, >>> changes parity bit (MSB) to 0 	
	 	 System.out.println(-20>>2); 	
	 	 System.out.println(-20>>>2); 	
}} 	

输出:

5
5
-5
1073741819

Java AND 运算符示例:逻辑 & & 和按位 &

如果第一个条件是假的,那么逻辑&&运算符不会检查第二个条件。仅当第一个条件为 true 时,它才会检查第二个条件。

按位&运算符总是检查两个条件是第一个条件是真还是假。


public class OperatorExample{ 	
public static void main(String args[]){ 	
int a=10; 	
int b=5; 	
int c=20; 	
System.out.println(a<b&&a<c);//false && true = false 	
System.out.println(a<b&a<c);//false & true = false 	
}} 	

输出:

false
false

Java AND运算符示例:逻辑& & vs 按位&


public class OperatorExample{ 	
public static void main(String args[]){ 	
int a=10; 	
int b=5; 	
int c=20; 	
System.out.println(a<b&&a++<c);//false && true = false 	
System.out.println(a);//10 because second condition is not checked 	
System.out.println(a<b&a++<c);//false && true = false 	
System.out.println(a);//11 because second condition is checked 	
}} 	

输出:

false
10
false
11

Java OR 运算符示例:逻辑 ||、按位 |

逻辑 || 如果第一个条件为 true,则运算符不会检查第二个条件。仅当第一个条件为 false 时,它才会检查第二个条件。

按位 | 运算符始终检查两个条件是 true 还是 false。


public class OperatorExample{ 	
public static void main(String args[]){ 	
int a=10; 	
int b=5; 	
int c=20; 	
System.out.println(a>b||a<c);//true || true = true 	
System.out.println(a>b|a<c);//true | true = true 	
//|| vs | 	
System.out.println(a>b||a++<c);//true || true = true 	
System.out.println(a);//10 because second condition is not checked 	
System.out.println(a>b|a++<c);//true | true = true 	
System.out.println(a);//11 because second condition is checked 	
}} 	

输出:

true
true
true
10
true
11

Java 三元运算符

Java Ternary 运算符用作 if-then-else 语句的单行替换,并在 Java 编程中广泛使用。它是唯一一个需要三个操作数的条件运算符。

Java Ternary 运算符示例


public class OperatorExample{ 	
public static void main(String args[]){ 	
int a=2; 	
int b=5; 	
int min=(a<b)?a:b; 	
System.out.println(min); 	
}} 	

输出:

2

另一个例子:


public class OperatorExample{ 	
public static void main(String args[]){ 	
int a=10; 	
int b=5; 	
int min=(a<b)?a:b; 	
System.out.println(min); 	
}} 	

输出:

5

Java 赋值运算符

Java 赋值运算符是最常见的运算符之一。它用于将右侧的值分配给左侧的操作数。

Java 赋值运算符示例


public class OperatorExample{ 	
public static void main(String args[]){ 	
int a=10; 	
int b=20; 	
a+=4;//a=a+4 (a=10+4) 	
b-=4;//b=b-4 (b=20-4) 	
System.out.println(a); 	
System.out.println(b); 	
}} 	

输出:

14
16

Java 赋值运算符示例


public class OperatorExample{ 	
public static void main(String[] args){ 	
int a=10; 	
a+=3;//10+3 	
System.out.println(a); 	
a-=4;//13-4 	
System.out.println(a); 	
a*=2;//9*2 	
System.out.println(a); 	
a/=2;//18/2 	
System.out.println(a); 	
}} 	

输出:

13
9
18
9

Java 赋值运算符示例:添加 short


public class OperatorExample{ 	
public static void main(String args[]){ 	
short a=10; 	
short b=10; 	
//a+=b;//a=a+b internally so fine 	
a=a+b;//Compile time error because 10+10=20 now int 	
System.out.println(a); 	
}} 	

输出:

Compile time error

类型转换后:


public class OperatorExample{ 	
public static void main(String args[]){ 	
short a=10; 	
short b=10; 	
a=(short)(a+b);//20 which is int now converted to short 	
System.out.println(a); 	
}} 	

输出:

20