Java基础运算符


前言

2021-04-10 :Java运算符
上一篇:Java基本数据类型转换


提示:以下是本篇文章正文内容,下面案例可供参考

一、运算符思维导图

在这里插入图片描述

二、算术运算符

2.1   自增自减运算符

自增自减运算符属于一元运算符,指的是操作数只有一个

符号说明
++a++ -->表示a=a+1
a-- -->表示a=a-1
public class Test {
	
	public static void main(String[] args) {	
//		一元运算符: ++(自增)  --(自减)
		int num1=10;
		int num2=20;
		System.out.println("num1="+(++num1));
		System.out.println("num2="+(num2++));
		
			}
}

运算结果:

num1=11
num2=20

运算结果分析:

由运算结果可以知道,++在操作数num1的前面,先进行加1的操作,再输出;++在操作数的num2的后面,先输出,再进行加1的操作。自减操作同理

2.2   四则运算符

四则运算符是二元运算符,指的是操作数有两个

符号说明
+加号操作
-减号操作
*乘号操作
/取整操作(两数相除取商)
%模操作(两数相除取余)
public class TypeChange {
	
	public static void main(String[] args) {	
//		二元运算符: +  -  *  /  %
		int a=5;
		int b=3;
		int c=-5;
		int d=-3;
//		/运算
		System.out.println("5/3="+(a/b));
		System.out.println("5/-3="+(a/d));
		System.out.println("-5/3="+(c/b));
		System.out.println("-5/-3="+(c/d));
		System.out.println("-------------------------------");
		
//		%运算
		System.out.println("5%3="+(a%b));
		System.out.println("5%-3="+(a%d));
		System.out.println("-5%3="+(c%b));
		System.out.println("-5%-3="+(c%d));
		
			}
}

运算结果:

5/3=1
5/-3=-1
-5/3=-1
-5/-3=1
-------------------------------
5%3=2
5%-3=2
-5%3=-2
-5%-3=-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
public class Demo1 {
      public static void main(String[] args) {
//		将6赋值给a,3赋值给b
    	int a=6;
    	int b=3;
   	
    	System.out.println("a+=b  -->"+(a+=b));
	}
}

运算结果:

a+=b  -->9

运算结果分析:

a+=b同 a=a+b; 其它同理

四、关系运算符

符号说明
==判操作数是否相等
<判断左边操作数是否小于右边操作数
<=判断左边操作数是否小于等于右边操作数
>判断左边操作数是否大于等于右边操作数
>=判断左边操作数是否大于等于等于右边操作数
!=判断左边操作数是否不等于等于右边操作数

五、逻辑运算

符号说明
&&逻辑与,可以进行短路
II逻辑或,可以进行短路
逻辑非
&逻辑与,不可以进行短路
I逻辑或,不可以进行短路

&&和&短路分析

public class Demo1 {
      public static void main(String[] args) {
       int a=4;
       int b=0;
//       0是不能做除数的
      System.out.println(a<b&&10/0==0);
       
	}
}


&&运算结果:

false
public class Demo1 {
      public static void main(String[] args) {
       int a=4;
       int b=0;
//       0是不能做除数的
      System.out.println(a<b&10/0==0);
       
	}
}

&运算结果:

Exception in thread "main" java.lang.ArithmeticException: / by zero
	at NewStudy/cn.com.ccit.chap1.Demo1.main(Demo1.java:8)

运算结果分析:

在使用&&情况下前一个布尔表达式a<b已经判断出为false,&&的判断是有假即为假,不需要进行第二个布尔表达式判断,直接返回false;
但是使用&的时候,即便判断出第一个表达式为false,依旧会对第二个表达式进行判断,由于0不能做除数,便抛出了算术异常
综上所述&&的使用有短路操作,而&没有;

逻辑或||运算也是如此,||判断是只要有一个true,即返回true.当第一个布尔表达式能够判断出为true时,直接返回结果,不会对第二个表达式进行判断;但是|会对两个布尔表达式都进行判断

六、位运算符

操作说明
&1&1=1; 1&0=0; 0&1=0; 0&0=0
I1I1=1; 1I0=1; 0I1=1; 0I0=0
~按位取反 ,将每位二进制取反
^异或操作

1.原码&反码&补码

我们读取的十进制是根据原码来读取,而在内存中,数值都是以二进制补码形式存储的。正数的补码和原码一样,负数的补码得到过程:原码 转 反码 再转 补码
在这里插入图片描述

2.正数位运算

public class Demo1 {
      public static void main(String[] args) {
//    	  a=5=0000 0101
//    	  b=3=0000 0011
     int a=5;
     int b=3;
//     &: 0000 0101&0000 0011=0000 0001=1
     System.out.println("a&b="+(a&b));
     
//     |:0000 0101|0000 0011=0000 0111=7
     System.out.println("a|b="+(a|b));
     
//     ~0000 0101=>取反:1111 1010 =>反码:1000 0101 =》原码:1000 0110
     System.out.println("~a="+(~a));
     
//     ^:0000 0101 ^ 0000 0011=0000 0110=6
     System.out.println("a^b="+(a^b));
    
	}
}

&运算结果:

a&b=1
a|b=7
~a=-6
a^b=6

3.负数位运算

public class Demo1 {
      public static void main(String[] args) {
//    	  a=5=1000 0101
//    	  b=3=1000 0011
     int a=-5;
     int b=-3;
     System.out.println("a&b="+(a&b));
     System.out.println("a|b="+(a|b));
     System.out.println("~a="+(~a));
     System.out.println("a^b="+(a^b));
    
	}
}

&运算结果:

a&b=-7
a|b=-1
~a=4
a^b=6

运算结果分析:

在这里插入图片描述

七、移位运算符

符号说明
>>右移位,是带符号移位,右边低位删除,左边高位补符号位,正0负1
<<左移位,是带符号移位,左边高位删除,右边低位补0
>>>无符号右移位,右边低位删除,左边高位补0

1.正数移位运算

public class Demo1 {
      public static void main(String[] args) {
//		  a=5=0000 0101
    	  
    	  int a=5;
//    	  a>>3表示最右边的三位不要,在最左边添加3个0
//    	  向左添加时,符号位取决操作数的正负,正1负0
//    	  结果为: 000 0000 0 ---> 0000 0000=0
    	  System.out.println("a>>3  -->"+(a>>3));
    	  
//    	  a<<3表示最左边的三位不要,在最右边添加3个0
//    	  结果为: 0 0101 000 ---> 0010 1000=2^5+2*3=40
    	  System.out.println("a<<3  -->"+(a<<3));
    	  
//    	  a>>>3表示最右边的三位不要,在最左边添加3个0
//    	  结果为: 000 0000 0 ---> 0000 0000
    	  System.out.println("a>>>3  -->"+(a>>>3));
	}
}


&运算结果:

a>>3  -->0
a<<3  -->40
a>>>3  -->0

运算结果分析:

在这里插入图片描述

2.负数移位运算

public class Demo1 {
      public static void main(String[] args) {
    	  
//		  负数都是以补码的形式存放在计算机内
//    	  原码: a=-5=1000 0101  补码=反码+1 = 1111 1010+1=1111 1011
    	  int b=-5;
    	  
//    	  b>>3表示最右边的三位不要,在最左边添加3个0
//    	  结果为:补码: 000 1111 1 --->补码: 1111 1111 -->反码: 1111 1110 --->原码: 1000 0001=-1
    	  System.out.println("b>>3  -->"+(b>>3));
    	  
//    	  b<<3表示最左边的三位不要,在最右边添加3个0
//    	  结果为: 补码: 1 1011 000--->补码:1101 1000 --->反码:1101 0111 --->原码: 1010 1000=-40
    	  System.out.println("b<<3  -->"+(b<<3));
	}
}

&运算结果:

b>>3  -->-1
b<<3  -->-40

运算结果分析:

在这里插入图片描述

左移位类似于 :操作数*2^移动位数; 右移位类似: 操作数/(2^移动位数)

八、条件运算符

是Java中唯一一个三元运算符

public class Demo1 {
      public static void main(String[] args) {

    	  String result=5==9?"等于":"不等于";
    	  System.out.println(result);
	}
}

运算结果:

不等于

运算结果分析:
【表达式?结果1:结果2】当表达式的结果为true时,返回的是结果1,当表达式的结果为false时,返回的是结果2

九、总结

表达式:指的是使用运算符连接的变量或者字面值,并得到一个最终结果
下一篇:Java基础选择与循环结构

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值