java中常用计算

1.单目运算

2.算术运算

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

 示例:/ 和 %

        int a = 12;
		int b = 5;
		int c = a / b;
		System.out.println(c);//结果为2
		int c1 = a / b * b;
		System.out.println(c1);//结果为10
		double c3 = a / b;
		System.out.println(c3);//结果为2.0
		double c4 = a / (b + 0.0);
		System.out.println(c4);//结果为2.4
		double c5 = (double)a / b;
		System.out.println(c5);//结果为2.4
		
		//%取余运算
		int a1 = 12;
		int b1 = 5;
		System.out.println("a1 % b1="+a1%b1);//结果为a1 % b1=2
		int a2 = -12;
		int b2 = 5;
		System.out.println("a2 % b2="+a2%b2);//结果为a2 % b2=-2
		int a3 = 12;
		int b3 = -5;
		System.out.println("a3 % b3="+a3%b3);//结果为a3 % b3=2
		int a4 = -12;
		int b4 = -5;
		System.out.println("a4 % b4="+a4%b4);//结果为a1 % b1=-2
		//结果的符号与被模数的符号相同

示例:

        //(前)++:先自增1,后再运算
		//(后)++:先运算,后自增1
		int a = 10;
		int b = ++a;//先自增1,后再运算
		System.out.println("a = " + a + ",b = " + b);
		int a1 = 10;
		int b1 = a1++;//先运算,后自增1
		System.out.println("a1 = " + a1 + ",b1 = " + b1);
		//(前)--先自减1,后再运算
		//(后)--先运算,后自减1
		int a2 = 10;
		int b2 = --a2;
		System.out.println("a2 = " + a2 + ",b2 = " + b2);
		int a3 = 10;
		int b3 = a3--;
		System.out.println("a3 = " + a3 + ",b3 = " + b3);
	
	结果:a = 11,b = 11
		 a1 = 11,b1 = 10
		 a2 = 9,b2 = 9
		 a3 = 9,b3 = 10

3.关系运算

关系运算 > < >= <= != == (注意是2个等号)

 关系运算结果是:布尔类型(true,false)

4.逻辑运算

 与 或 非 异或

两个操作数必须是布尔类型

单与和双与的区别?

  • 在java中都可以进行逻辑与运算,运算结果都符合真值表

  • 但是双与(&&)是有短路作用。短路,你能确定最总逻辑运算的结果时,后面的代码将不被运行。

  • 当符号左边为true时,二者都会执行符号右边的运算

  • 当独好左边时false时,&继续执行符号右边的运算。&&不再执行符号右边的运算。

示例:

boolean b =true;
		b = false;
		int num = 10;
		if(b & (num++ > 0)) {
			System.out.println("我是谁");
		}else 
		{
			System.out.println("我在哪");
		}
		System.out.println("num ="+num);
		
		boolean b1 =true;
		b1 = false;
		int num1 = 10;
		if(b && (num++ > 0)) {
			System.out.println("我是谁");
		}else 
		{
			System.out.println("我在哪");
		}
		System.out.println("num1 ="+num1);
		
	结果:我在哪
		 num =11
		 我在哪
		 num1 =10

5.什么时候应用短路逻辑运算?

  1. 空指针保护

6.逻辑运算的优先级

  1. 非运算

  2. 与运算

  3. 或运算

7.位运算符

 

7.1 左移操作:

(i*2的n次方),比乘以2的n次方的效率高,是一种高效率运算方式

int i=4;//0001 0000
int result=i<<2;//向左移动,右边补0
System.out.println(result==16);

7.2符号右移

向右移动,除以2的n次方

int i=-4;//1110 1111 -> 0111 0111
int result=i>>2;//符号右移:向右移动,除以2的n次方
System.out.println(result==-1);

7.3 无符号右移:

只适用于字节截取

int i=-4;
int result=i>>>16;//无符号右移:只适用于字节截取
System.out.println(result);

7.4 与运算:&

int i=4;//00000100
int j=8;//00001000
int k=i & j;
System.out.println((i & j)==0);//位运算只支持单&

7.5 或运算:|

int i=4;//00000100
int j=8;//00001000
int k=i | j;
System.out.println(k==12);

练习

int m=12;
int n=5;
System.out.println("m & n :"+(m & n));
System.out.println("m & n :"+(m | n));
System.out.println("m & n :"+(m ^ n));

 实例练习:位运算符

        int num1=10;
		int num2=20;
		System.out.println("num1 = "+ num1 +", num2 = "+num2);
		//方式一:定义临时变量
		int temp = num1;
		num1 = num2;
		num2 =temp;
		System.out.println("num1 = "+ num1 +", num2 = "+num2);
		//方式二:好处:不用定义临时变量
		//		弊端:相加操作可能超出存储范围;有局限性:只能适用于数值类型
		num1=num1+num2;
		num2=num1-num2;
		num1=num1-num2;
		System.out.println("num1 = "+ num1 +", num2 = "+num2);
		//使用位运算符
		num1 = num1 ^ num2;
		num2 = num1 ^ num2;
		num1 = num1 ^ num2;
		System.out.println("num1 = "+ num1 +", num2 = "+num2);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值