Java基础里,你知道运算符么?

颓废青年,快出来挨打!

点击上方“Java极客技术”,选择“设为星标”

后台回复“java”,获取Java知识体系/面试必看资料

资料会持续更新,已更新第四次!


文章精品专栏

记一次蚂蚁金服的面试经历

记一次阿里巴巴一面的经历

这么火的 OKR,你不了解下?

Http 和 Socket 到底是哪门子亲戚?

今天,正式介绍一下Java极客技术知识星球

培训机构混半年,小公司出来张嘴就要30k!


运算符简介

计算机自打诞生以来,用作最多的就是进行计算,而计算离不开运算符,所以运算符在我们的Java语言中的地位举足轻重,我们现在就来了解一下Java给我们提供的运算符。

从运算的元素的个数来区分,可以分为一元运算符,二元运算符,三元运算符。

其中一元运算符包括:

•+(正数)•-(负数)•++(自增1)•—(自减1)•~(按位取反)•!(逻辑取反)

其实自增和自减也可以看成是特殊的二元运算符

二元运算符包括:

•算术运算符:+ ,-,*,/,%•逻辑运算符:&&,||•关系运算符:==,!=,>,<,>=,<=•位运算符:&,|,^,<<,>>,>>>•赋值运算符:=,+=,-=,*=,/=,%=,<<=,>>=,&=,^=•instanceof运算符:instanceof

三元运算符就只有一种:?:

640?wx_fmt=jpeg

这些运算相信绝大部分已经被在座的各位所熟知,只有极个别的不是很清楚的,下面我所了解的一些面试热点知识来进行讲解。

一些运算符的小常识

自增,自减的前后位置

老生常谈的一个问题,但是还是容易被搞混,自增和自减的顺序前后到底有何不同:

单独使用的时候,两种没有任何区别(温馨提示:面试的时候切记不要忘记第一点哟)•在表达式中使用的时候,前缀会先进行+1(-1)的运算,而后缀会先运算后进行+1(-1);

在无视掉第一种情况的下,可以简单记为前缀前,后缀后

逻辑运算符的短路特性

我们在使用逻辑运算符&&,||的时候,可以利用逻辑运算符的短路特性减少运算次数,所谓短路特性就是当第一个条件可以判断最终结果的时候,就不会去判断第二个条件

A &amp;&amp; B (当A为false,直接跳过第二个条件的判断,判定为false)	
A || B (当A为true,直接跳过第二个条件的判断,判定为true)

三元运算符

该运算符的主要是决定哪个值应该赋值给变量。

        int a , b;	
    a = 10;	
    // 如果 a 等于 1 成立,则设置 b 为 20,否则为 30	
    b = (a == 1) ? 20 : 30;	
    System.out.println( "Value of b is : " +  b );	
    // 如果 a 等于 10 成立,则设置 b 为 20,否则为 30	
    b = (a == 10) ? 20 : 30;	
    System.out.println( "Value of b is : " + b );

instanceof

该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。

Vehicle a = new Car();	
boolean result =  a instanceof Car;	
System.out.println( result);

位运算符

位运算符可能在我们日常中使用的并不是很多,算是一个小盲区。但是其实这个运算符还是非常的重要的,我们首先来了解一下运算的机制,与其他运算符不同的是,位运算符是要讲数值转换成二进制后,再进行运算。

&

640?wx_fmt=png

640?wx_fmt=png

^是按位异或运算符,只有两个对应的运算位不一致的时候,对应计算出的位置为1,否则为0。

~是按位取反运算符,将每一位取反(1 -> 0,0 ->1)

>>这里需要注意>>>>>存在一定的区别:

640?wx_fmt=png

>> :该数对应的二进制码整体右移,左边的用原有标志位补充,右边超出的部分舍弃。

>>> :不管正负标志位为0还是1,将该数的二进制码整体右移,左边部分总是以0填充,右边部分舍弃。

其余操作部分与<<类似,就不再画图演示

  • 计算 $m * 2^n$ 次方


	
2 &lt;&lt; 3 = 16;	
2 * (2 * 2 * 2) = 16;
  • 判断一个数n的奇偶性



	
a &amp; 1 = 0; // 偶数	
a &amp; 1 = 1; // 奇数

  • 不用临时变量交换两个数

 a = a^b; 	
  b = b^a; 	
  a = a^b;

  • x 的 相反数 表示为 (~x+1)

-x = (~x+1)

  • 取绝对值 (a^(a>>31))-(a>>31) 

其余的一些在算法中用到的场景,我这里就不再多少,有兴趣的同学可以去研究一下~

运算符优先级

最高优先级的在该表上方,最低优先级的在该表底部

类别操作符关联性
后缀()[].(点操作符)左到右
一元++ - !~右到左
乘性* / %左到右
加性+ -左到右
移位>> >>> <<左到右
关系> >= = < <=左到右
相等== ~=左到右
按位与&左到右
按位异或^左到右
按位或|左到右
逻辑与&&左到右
逻辑或||左到右
条件?:从右到左
赋值=,+=,-=,等等从右到左
逗号左到右

年轻人我看你骨骼清秀,是练武奇才

前1000人,50元/年

还有81位优惠名额

长按二维码▽

640?wx_fmt=png

点转发,看看你朋友能属于3%吗

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值