您的位置 首页 java

java学习笔记3——操作运算符

如果有写的不对的地方,欢迎评论指正,相互学习相互进步,谢谢!

如果学过其他语言, Java 的运算符和其他的也差不多,这里介绍一些容易出错的

一、操作符:

Java的操作符和其他的语言一致,加(+)减(-)乘(*)除(/)赋值(=)。在这里不多做阐述,主要讲的还是一些难以理解或者而比较绕的点,比如自加(++)【自减也一样】,优先级,还有逻辑运算符(&&和||),左移右移,==和equals方法的区别,

(一)、自加(++)

++的使用和–一样,这里的话只以++为例子。一般此运算符的使用方法是这样的:a=b++,与之区别的是a=++b。我们知道a++的意思是a=a+1,那么放到赋值语句中有什么不同呢?

—>a=b++:

这类用法的含义是,先使用b,即先把b赋值给a,然后执行b=b+1;如果设立一个中间值temp,可以用代码表示如下:

—>a=++b:

这类用法是,先对b进行自加,b=b+1,然后在进行赋值,a=b,可以用代码表示如下:

这个时候不得不提一下一道面试题:

相信大家第一反应应该是i=10,但是i真的等于10吗,不妨我们把其中的i=i++按照上面简述的展开:

这下大家应该可以发现了,不管循环多少次,i的值都为0,这在笔试面试时经常会出现,算是java的一个自增陷阱。 其实java对该运算的处理也是这样的,会在内存中生成一个临时存储区,即temp来存储变量进行处理。

(二)优先级

java的 运算符优先级 ,参照下表:

优先级

这里需要说明一点,强制类型转化的优先级比应该在1和2之间。例如:

所以,在这里提醒大家在实际开发中,对于摸不准的,要善于运用括号啊

(三)、逻辑运算符(&&和||)

看着这两个就想起&(与),|(或)和^(异或),这里就是转化为二进制按位进行操作,或者是 boolean 类型的对比,这里不详细讲解。

&&(短路与)和||(短路或)两侧加的是表达式,进行true和 false 的判断,遵循以下规则:

  • & 和 &&的区别

  • &:无论左边结果是什么,两边都参与运算

  • &&:当左边为false时,左边不参与运算

  • | 和 || 的区别

  • |:无论左边结果是什么,两边都参与运算

  • ||:当左边为ture是,右边不参与运算

逻辑运算有异或,这里有一道题,怎么在不设置临时变量的情况下交换两个数的值,可以用^

结果:

(四)左移右移

左移<< 就是n*2(位数) 实现2的次幂运算

右移>> 就是n/2(位数) 快速运算除以2的次幂

(>>:高位出现空位时,原高位时什么,就补什么)

(>>>:无论高位是什么,都补0(<<<也一样))

(五)==和equals方法的区别

先看一段代码:

可以总结:

1、==:如果两侧是基本数据类型,那么比较的是值(这里需要着重说明一下integer对象在==比较的时候,比如第17行,integer对象会自动拆箱变成int,进行值的比较,所以返回true);如果两侧是对象,那么比较的就是对象在内存中的 地址

2、equals:比较的是两个对象的值是否相等,而不是比较地址

3、需要注意,String字符串想加的时候,会生成一个新的地址去指向结果,所以第14行比较的是地址,返回false。

文章来源:智云一二三科技

文章标题:java学习笔记3——操作运算符

文章地址:https://www.zhihuclub.com/185024.shtml

关于作者: 智云科技

热门文章

发表回复

您的电子邮箱地址不会被公开。

网站地图