java的自乘赋值,Java运算符使用总结(重点:自增自减、位运算和逻辑运算)

Java运算符共包括这几种:算术运算符、比较运算符、位运算符、逻辑运算符、赋值运算符和其他运算符。(该图来自网络)

20180308005127705666.png

简单的运算符,就不过多介绍使用了,可自行测试。关于赋值运算,可以结合算术运算和位运算来简化代码。

int a = 5;

a+= a; //a = a + a;

a -= a; //a = a - a;

a /= a; //a = a / a;

a %= a; //a = a % a;

a &= 6; //a = a & 6;//.....

理解自增自减运算符

自增自减分为前置和后置。例如:i++  ++i i-- --i。 要明确一点,前置与后置的自增或自减如果没有运用到表达式运算中,那么是没区别的,若是参与到表达式的运算中,只需记住:谁在前面就先执行谁。

int a = 0;

a++; //或者++a

System.out.println(a); //a输出1

//最常见的for循环中,在迭代条件中,i++ 和 ++i无区别,因为没有用于表达式。

将前置自增和后置自增运用到表达式中。

int a = 5;

System.out.println(a--); //5,先打印a的值,之后a自减1

System.out.println(a); //4

System.out.println(++a); //5, 先对a值自增,然后打印a值

复杂一点,更好的理解前置和后置的区别:

int a = 6;int b = 8;int c = ++a + b-- - a-- + --b + b++ + --a;

System.out.printf("%d|%d|%d", a,b,c); //5,7,25

使用图片来理解会更加一目了然。

20180308005127922471.png

再随便给一个,按照图示方式去理解自增自减。

int a = 6,b = 8;int c = (--a) + (a--) - (b--) + (++b) + (a++) - (b--); //加括号更容易阅读//int c = --a + a-- - b-- + ++b + a++ - b--;

System.out.printf("%d|%d|%d", a,b,c); //5,7,6

}

20180308005128127557.png

在Java中,位运算常用的就是移位运算了。所以会按照个人的理解去回顾这个知识点,不会太深入。如果对位运算感兴趣的可以去其他博客搜搜,讲解非常详细。

移位运算所进行的操作是在二进制的基础之上对数字进行平移,有左移运算和右移运算。

给一个代码例子:

//测试右移位运算

//结果是1 和 0

System.out.println(6>>2); //6右移2位

System.out.println(8>>5); //8右移5位

本质是二进制的运算,所以我们将6 和 8转成二进制。

如果不懂二进制也可以使用电脑自带的计算器,改成程序员用的就可以了。但建议一定要学会二进制,并且熟练与八进制和十六进制的转换,会让你更明白计算机原理。

进入正题:

//6的二进制

0000 0000 0110

0000 0000 0001 //右移2位

//1 乘以2的0次方 输出1

//8的二进制

0000 0000 1000

0000 0000 0000 //右移5位

//0乘以2的0次方 输出0

//测试左移运算

//结果为128 192

System.out.println(4<<5);

System.out.println(3<<6);

//4的二进制

0000 0100

1000 0000 //左移5位

//1乘以2的7次方 输出128

//3的二进制

0000 0011

1100 0000 //左移6位

//1乘以2的7次方 + 1乘以2的6次方 输出192

上面是以二进制的平移方式来得出的,还有取巧的方式,计算2的次方非常迅速。

就是:左移几位就乘以2的几次方 , 右移几位就除以2的几次方

以 4<<5 为例   : 就是4 乘以 2 的5次方 4 * 32 可以很快得出结果128

10>>2 : 10除以 2的2次方  10/4 = 2

要想得到2的10次方 只需要 1<<10 即可。

--------------------------------------------------------------------------------------------------------

关于下图的Java运算符,不需要去记优先级,使用括号运算符能更好的增加可读性。

d4a1bfdd94ef7f869235cc99b77748a0.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值