Java运算符

算术运算符

  • 加法运算符(+):用于将两个值相加。
  • 减法运算符(-):用于从一个值中减去另一个值。
  • 乘法运算符(*):用于将两个值相乘。
  • 除法运算符(/):用于将一个值除以另一个值。
  • 取模运算符(%):用于计算两个值相除后的余数。
运算符描述示例
+ 相加 2+3=5
- 相减 5-2=3
* 相乘 2*3=6
/ 相除 6/3=2,5/2=2(整数相除)
% 取余 5%2=1
++ 自增运算符,在变量后面表示先使用变量再执行加 1 操作 int i=2; i++; // i = 3
-- 自减运算符,在变量后面表示先使用变量再执行减 1 操作 int j=3; j--; // j = 2
++ 自增运算符,在变量前面表示先执行加 1 操作再使用变量 int i=2; ++i; // i = 3
-- 自减运算符,在变量前面表示先执行减 1 操作再使用变量 int j=3; --j; // j = 2
int a = 5;
int b = 2;

// 算术运算符
System.out.println(a + b); // 输出:7
System.out.println(a - b); // 输出:3
System.out.println(a * b); // 输出:10
System.out.println(a / b); // 输出:2
System.out.println(a % b); // 输出:1

int i = 5;
System.out.println(i++);   // 输出:5,i的值变为6
System.out.println(++i);   // 输出:7,i的值为7
System.out.println(i--);   // 输出:7,i的值变为6
System.out.println(--i);   // 输出:5,i的值为5

 

关系运算符

  • 相等运算符(==):用于检查两个值是否相等。
  • 不等运算符(!=):用于检查两个值是否不相等。
  • 大于运算符(>):用于检查一个值是否大于另一个值。
  • 小于运算符(<):用于检查一个值是否小于另一个值。
  • 大于等于运算符(>=):用于检查一个值是否大于或等于另一个值。
  • 小于等于运算符(<=):用于检查一个值是否小于或等于另一个值。
运算符描述示例
== 检查两个操作数是否相等,如果是则条件为真 2==3为假
!= 检查两个操作数是否不相等,如果不是则条件为真 2!=3为真
> 检查左操作数是否大于右操作数,如果是则条件为真 2>3为假
< 检查左操作数是否小于右操作数,如果是则条件为真 2<3为真
>= 检查左操作数是否大于等于右操作数,如果是则条件为真 2>=3为假
<= 检查左操作数是否小于等于右操作数,如果是则条件为真 2<=3为真

 

int a = 5;
int b = 2;

// 关系运算符
System.out.println(a == b); // 输出:false
System.out.println(a != b); // 输出:true
System.out.println(a > b);  // 输出:true
System.out.println(a < b);  // 输出:false
System.out.println(a >= b); // 输出:true
System.out.println(a <= b); // 输出:false

位运算符

  • 按位与运算符(&):将两个数的二进制进行按位与操作。
  • 按位或运算符(|):将两个数的二进制进行按位或操作。
  • 按位异或运算符(^):将两个数的二进制进行按位异或操作。
  • 按位取反运算符(~):对一个数的二进制进行按位取反操作。
  • 左移运算符(<<):将一个数的二进制向左移动指定位数。
  • 右移运算符(>>):将一个数的二进制向右移动指定位数。
  • 无符号右移运算符(>>>):将一个数的二进制向右移动指定位数,空出的位以零填充。
运算符描述示例
& 按位与运算符(两个位都为1才返回1) 0011 1100 & 0000 1101 结果:0000 1100
| 按位或运算符(两个位都为0才返回0) 0011 1100 | 0000 1101 结果:0011 1101
^ 异或运算符(两个位相同则返回0,不同则返回1) 0011 1100 ^ 0000 1101 结果:0011 0001
~ 取反运算符(0变为1,1变为0) ~0011 1100 结果:1100 0011
<< 左移运算符(将二进制位左移指定的位数,后面补0) 0011 1100 << 2 结果:1111 0000
>> 右移运算符(将二进制位右移指定的位数,前面补符号位) 0011 1100 >> 2 结果:0000 1111
>>> 无符号右移运算符(将二进制位右移指定的位数,前面补0) 0011 1100 >>> 2 结果:0000 1111
... JDK1.7新增的二进制字面值,可以用下划线分割,增强可读性 int a = 0b1010_1100;

 

int a = 60;
int b = 13;

// 位运算符
System.out.println(a & b);   // 输出:12,即 0011 1100 & 0000 1101 结果:0000 1100
System.out.println(a | b);   // 输出:61,即 0011 1100 | 0000 1101 结果:0011 1101
System.out.println(a ^ b);   // 输出:49,即 0011 1100 ^ 0000 1101 结果:0011 0001
System.out.println(~a);      // 输出:-61,即 ~0011 1100 结果:1100 0011
System.out.println(a << 2);  // 输出:240,即 0011 1100 << 2 结果:1111 0000
System.out.println(a >> 2);  // 输出:15,即 0011 1100 >> 2 结果:0000 1111
System.out.println(a >>> 2); // 输出:15,即 0011 1100 >>> 2 结果:0000 1111

 

逻辑运算符

  • 按位与运算符(&):将两个数的二进制进行按位与操作。
  • 按位或运算符(|):将两个数的二进制进行按位或操作。
  • 按位异或运算符(^):将两个数的二进制进行按位异或操作。
  • 按位取反运算符(~):对一个数的二进制进行按位取反操作。
  • 左移运算符(<<):将一个数的二进制向左移动指定位数。
  • 右移运算符(>>):将一个数的二进制向右移动指定位数。
  • 无符号右移运算符(>>>):将一个数的二进制向右移动指定位数,空出的位以零填充。
运算符描述示例
&& 逻辑与运算符,当两个操作数都非零返回 true (5>3) && (8<5) 返回 false
|| 逻辑或运算符,只要有一个操作数非零返回 true (5>3) || (8<5) 返回 true
! 逻辑非运算符,用来反转操作数的逻辑状态 !(5>3) 返回 false,即为反转的值

 

int a = 5, b = 2, c = 8;

// 逻辑运算符
System.out.println((a > b) && (c > a)); // 输出:true
System.out.println((a > b) || (c < b)); // 输出:true
System.out.println(!(a > b));          // 输出:false

 

赋值运算符

    • 简单赋值运算符(=):用于将右侧的值赋给左侧的变量。
    • 复合赋值运算符(+=、-=、*=、/=、%=):用于进行简化的赋值操作。
运算符描述示例
= 简单的赋值运算符,将右操作数的值赋给左侧操作数 int a = 5; a = 6;
+= 相加后再赋值 int a = 5; a += 3
-= 相减后再赋值 int a = 5; a -= 3
*= 相乘后再赋值 int a = 5; a *= 3
/= 相除后再赋值 int a = 5; a /= 3
%= 取余后再赋值 int a = 5; a %= 3

 

赋值运算符
运算符    描述    示例
=    简单的赋值运算符,将右操作数的值赋给左侧操作数    int a = 5; a = 6;
+=    相加后再赋值    int a = 5; a += 3
-=    相减后再赋值    int a = 5; a -= 3
*=    相乘后再赋值    int a = 5; a *= 3
/=    相除后再赋值    int a = 5; a /= 3
%=    取余后再赋值    int a = 5; a %= 3

 

条件运算符

运算符描述示例
?: 根据判断条件返回两个操作数中其中一个 (5>3) ? "true" : "false";

 

条件运算符
运算符    描述    示例
?:    根据判断条件返回两个操作数中其中一个    (5>3) ? "true" : "false";

 

运算符优先级

下面是Java运算符的优先级列表,数字越大优先级越高:

优先级运算符描述
1 () 括号(优先级最高)
2 ++ -- 自增、自减
3 ! ~ 逻辑非、按位取反
4 * / % 乘、除、取模
5 + - 加、减
6 >> >>> << 移位
7 < <= > >= 关系运算符
8 == != 相等、不相等
9 & 按位与
10 ^ 按位异或
11 | 按位或
12 && 短路逻辑与
13 || 短路逻辑或
14 ?: 三目运算符
15 = += -= *= /= %= &= 赋值、复合赋值(顺序由右往左)
16 , 逗号运算符(顺序由左往右,最低优先级)

 

int a = 5, b = 2, c = 8;

// 运算符优先级
int result = a + b * c; // 先进行乘法运算,再进行加法运算
System.out.println(result); // 输出:21

result = (a + b) * c;   // 先进行加法运算,再进行乘法运算
System.out.println(result); // 输出:56

 

posted @ 2023-10-09 19:25  安知竹墨  阅读(89)  评论(0)    收藏  举报