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
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
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
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
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
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
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
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
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
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
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
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
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