Java运算符详解

目录

1.算数运算符

 2.关系运算符

3.逻辑运算符 

4.位运算符 

5.赋值运算符 

6.三目运算符

7.字符串连接运算符(+)

8.Java运算符的优先级 


1.算数运算符

运算符 作用
+ 求和
- 求差
* 乘积
/
% 求余
++ 自加一
-- 自减一
public class hello {
    public static void main(String[] args) {
     int a=2;
     int b=1;
     System.out.println(a+b);//3
     System.out.println(a-b);//1
     System.out.println(a*b);//2
     System.out.println(a/b);//2
     System.out.println(a%b);//0
    }
}
注意:/运算符只能返回整数

++/--运算符

1.前缀版

当++出现在变量前,会先自加一,在做赋值运算

	int x = 100;
	int y = ++x;
	步骤: ②	 ①
	System.out.println(x); // 101
	System.out.println(y); // 101

2.后缀版

当++出现在变量后,会先做赋值运算,再自加1

	int m = 20;
	int n = m++;
	步骤: ①	 ②
	System.out.println(n); // 20
	System.out.println(m); // 21

总结:

  • 可以出现在变量前,也可以出现在变量后。
  • 不管出现在变量前还是后,总之++执行结束之后,变量的值一定会自加1。

 2.关系运算符

运算符 作用
> 大于
>= 大等于
< 小于
<= 小等于
== 等于
!= 不等于
        System.out.println(3>4); //false
        System.out.println(3>=4);//false
        System.out.println(3<4); //true
        System.out.println(3<=4);//true
        System.out.println(3==4); //false
        System.out.println(3!=4);//true

总结:关系运算符的结果一定时布尔型:false/true

3.逻辑运算符 

运算符 含义 规则
& 逻辑与 两边都为真才为真
| 逻辑或 一边为真即为真
逻辑非 !true = false、!false = true
^ 逻辑异或 相同为假,不同为真
&& 短路与 两边为真才为真
|| 短路或 一边为真即为真

        System.out.println(true&false);//false
        System.out.println(true|false);//true
        System.out.println(!true);    //false
        System.out.println(true&&true);//true
        System.out.println(false||false);//false

1.短路与/短路或 

 1.1 短路与(&&)

当左边的表达式为false的时候,右边的表达式不执行

//我么们先来看一下&的例子
        int a=10;
        int b=20;
        System.out.println(a>b&++ab&&++a

 1.2短路或(||)

当左边的表达式结果是true的时候,右边的表达式不执行

//我么们先来看一下&的例子
        int a=10;
        int b=20;
        System.out.println(a

结论:逻辑运算符要求两边的算子都是布尔型,返回的结果也是布尔型【注意与位运算的区别

4.位运算符 

运算符 含义 规则
& 按位与 两个都为1则为1
| 按位或 一个为1即为1
^ 按位异或 相同为0,不同为1
~ 按位非(取反) 取反
<< 左移 左移
>> 右移 右移
>>> 无符号右移

位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算。

1.左移(<<)

按照指定位数左移,左移后右端出现空位,用0补齐。保留符号位 

左移运算有乘以2的N次方的效果。一个数向左移动1位,就相当于乘以2的1次方,移动两位就相当于乘以2的2次方,也就是乘以4

 System.out.println(5<<2);//20

解析:5的二进制位是0000 0101 , 就是把有效值101往左挪两位就是0001 0100 ,正数左边第一位
补0,负数补1,等于乘于2的n次方,十进制位是5*2^2=20

2.右移(>>)

按照指定位数右移,左移后左端出现空位,用符号位上的值补充这些空位。保留符号位

右移运算有乘以-2的N次方的效果。一个数向右移动1位,就相当于乘以2的-1次方,移动两位就相当于乘以2的-2次方,也就是乘以四分之一

 System.out.println(20>>2);//5

解析:20的二进制位是0001 0100, 就是把有效值10100往左挪两位就是0000 0101,正数左边第一位
补0,负数补1,等于乘于2的n次方,十进制位是20*2的-2次方=5

3.无符号右移(>>>)

按照指定位数右移,左端出现的空位用0补齐,这就意味着,他与有符号右移的区别在负值上的移动,因为正值符号位也是0

        int a=20;
//正数
        System.out.println(a>>2);//5
        System.out.println(a>>>2);//5
//复数
        System.out.println(-a>>2);//-5
        System.out.println(-a>>>2);//1073741819
可以看出无符号右移与有符号右移只有在负数上的差异
        System.out.println(a);//20
注意:位移运算不会改变原来变量的值

 结论:

  • 位运算符是对long、int、short、byte和char这5种类型的数据进行运算的,我们不能对double、float和boolean进行位运算操作。
  • 移位运算不会改变原来变量的值

5.赋值运算符 

运算符 含义 示例
= 赋值 a=12
+= 加等 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

6.三目运算符

布尔表达式 ? 表达式1 : 表达式2

原理:布尔表达式的结果为true时,表达式1的执行结果作为整个表达式的结果。
           布尔表达式的结果为false时,表达式2的执行结果作为整个表达式的结果。 

     char a=1>0?'男':'女';
     char b=1<0?'男':'女';
     System.out.println(a);//男
     System.out.println(b);//女

7.字符串连接运算符(+)

拼接两个字符串

1.+ 运算符在java语言中有两个作用。 

  • 求和
  • 拼接字符串

2.什么时候求和?什么时候进行字符串的拼接呢? 

  • 当 + 运算符两边都是数字类型的时候,求和。
  • 当 + 运算符两边的任意类型是字符串类型时,那么这个+会进行字符串拼接操作。
int a=123;
int b=456;
System.out.println(a+b);//579
String c="abc";
String d="def";
System.out.println(c+d);//abcdef

 结论:字符串拼接完之后的结果还是一个字符串。

8.Java运算符的优先级 

最后总结一下运算符的优先级

Java运算符详解_第1张图片

你可能感兴趣的:(Java,全过程学习,java,jvm,servlet)