Java中常见的运算符

Java中常见的运算符

Java 语言支持如下运算符:

算术运算符: +,-,*,/,%,++,–

字符串连接运算符:+

关系(比较)运算符: >,<,>=,<=,==,!=

逻辑运算符: !,& , | , &&,||

赋值运算符: = ,+ =,- =,* =,/ =

条件运算符:(boolean达式)?(表达式1):(表达式2)

位运算符:<< , >> , >>>, & , | , ^ , ~

算数运算符

运算符 运算 范例 结果
+ 正号 +3 3
- 负号 b=4; -b -4
+ 5+5 10
- 6-4 2
***** 3*4 12
/ 5/5 1
% 取模 7%5 2
++ 自增(前):先运算后取值 自增(后):先取值后运算 a=2;b=++a;a=2;b=a++; a=3;b=3a=3;b=2
- - 自减(前):先运算后取值 自减(后):先取值后运算 a=2;b=- -a;a=2;b=a- -; a=1;b=1a=1;b=2

练习:

 public static void main(String[] args){
    
    
        int i1 = 10,i2 = 20;
        int i = i1++;
        System.out.print("i="+i);//10
        System.out.println("i1="+i1);//11
        i = ++i1;
        System.out.print("i="+i);//12
        System.out.println("i1="+i1);//12

        i = i2--;
        System.out.print("i="+i);//20
        System.out.println("i2="+i2);//19
        i = --i2;
        System.out.print("i="+i);//18
        System.out.println("i2="+i2);//18
  }

比较运算符

运算符 运算 范例 结果
== 相等于 4==3 false
!= 不等于 4!=3 true
< 小于 4<3 false
> 大于 4>3 true
<= 小于等于 4<=3 false
>= 大于等于 4>=3 true
instanceof 检查是否是类的对象 “Hello” instanceof String true

比较运算符的结果都是boolean型,也就是要么是true,要么是false。

注意:比较运算符“==”不能误写成“=” 。

逻辑运算符

逻辑运算符:

&—逻辑与 | —逻辑或 !—逻辑非
&& —短路与 || —短路或 ^ —逻辑异或

a b a&b a|b !a a^b a&&b a||b
true true true true false false true true
true false false true false true false true
false true false true true true false true
false false false false true false false false

“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。

异或( ^ ):当左右都为true时,结果为false。
理解:异或,追求的是“异”!

赋值运算符

符号:=
当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。支持连续赋值。

扩展赋值运算符: +=, -=, *=, /=, %=

思考1:

short s = 3; // 3是int  但是虚拟机支持将int类型3赋给short,byte
s=s+2;   //①s是short +2(int) 结果为int
s+=2;    //②s=s+2
//①和②有什么区别?
运算符 用法举例 等效的表达式
+= a += b a = a+b
-= a -= b a = a-b
*= a *= b a = a*b
/= a /= b a = a/b
%= a %= b a = a%b

思考2:

boolean b1 = false;//区分好==和=的区别。
if(b1=true){
    
    
	System.out.println("结果为真");
}else{
    
    
	System.out.println("结果为假");
}

思考3:

int i = 1;
i *= 0.1; i=i*0.1 = 0
System.out.println(i);//0
i++;
System.out.println(i);//1

条件运算符

语法: (条件表达式)? 表达式1:表达式2;

为true,运算后的结果是表达式1;
为false,运算后的结果是表达式2;

表达式1和表达式2为同种类型

条件运算符与if-else的联系与区别:
1)条件运算符可简化if-else语句
2)条件运算符要求必须返回一个结果。
3)if后的代码块可有多个语句

位运算

日常开发中位运算不是很常用,但是巧妙的使用位运算可以大量减少运行开销,优化算法.

位运算符 用法
<< 空位补0,被移除的高位丢弃,空缺位补0。
>> 被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。
>>> 被移位二进制最高位无论是0或者是1,空缺位都用0补。
& 二进制位进行&运算,只有1&1时结果是1,否则是0
| 二进制位进行 | 运算,只有0 | 0时结果是0,否则是1
^ 相同二进制位进行 ^ 运算,结果是0;1^1=0 , 0^0=0 不相同二进制位 ^ 运算结果是1。1^0=1 , 0^1=1
~ 正数取反,各二进制码按补码各位取反 负数取反,各二进制码按补码各位取反

运算符优先级

表达式的运算顺序

1 |
| ~ | 正数取反,各二进制码按补码各位取反 负数取反,各二进制码按补码各位取反 |

运算符优先级

表达式的运算顺序

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_51372098/article/details/109102280