2020-12-06

Posted 自由乐土

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2020-12-06相关的知识,希望对你有一定的参考价值。

JAVA运算符

java中数据变量之间的运算以及数据的变换大部分都要涉及到运算符的使用,今天就简单介绍一下java运算符及其简单使用。

前言

java中运算符一共有六种:
1.算术运算符;
2.关系运算符;
3.逻辑运算符;
4.位运算符;
5.移位运算符;
6.条件运算符。
下面就每种运算符进行简单介绍。

一、算术运算符

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

1.+ - * /

+,-,*,/ 的意思和数学中的加减乘除一样,用来计算两个变量的结果,值得注意的是 / 中除数不能为0,否则会报算术异常错误。见下面代码:

异常如下:

2. %

对于%,其表示取余(也叫求模),java里的取余就比较厉害了,不仅可以对int进行求模还可以对double数据进行求模。见下面代码:

3.增量赋值运算符

增量赋值运算符是指将运算结果赋值给指定变量内。
增量赋值运算符形式如下:
+= -= *= /= %=
需要了解的是:增量运算符在赋值前会帮程序猿们进行强制转换。

在此段代码中,a是byte变量,在进行a += 5时,就是a = a + 5,但是若进行a = a + 5的话会报错,因为需要强制转换才能赋值,但是使用+=却不用强制转换,所以增量运算符会自动进行强制转换。

4.自增自减

自增自减形式有:a ++;++a;a - -;- - a;
可以注意到自增自减符号的位置有前置和后置,它们有什么区别呢?
直接看下面代码:

可以发现b和c的值不是一样的,因为我们取得是自增后的返回值,让其返回值分别赋值给b和c,那么由b,c,a1,a2的结果可以看出:
1.前置自增的返回值是自增前的值,后置自增的返回值是自增后的值。
2.如果不取自增运算的表达式的返回值,则前置自增和后置自增没有区别。

二、关系运算符

关系运算符主要有:==	,!=, <, >, <=, >= 六种

需要注意一点:关系运算符的返回值都是boolean类型。


运算结果是:

三.逻辑运算符

逻辑运算符有三种:&&  ||   !

1.逻辑与 &&

规则:&&前面和后面跟的都是boolean类型表达式,两个表达式同为true结果才为true,否则为false。

2.逻辑或 ||

规则:||前面和后面跟的都是boolean类型表达式,只要其中一个有表达式为true结果就是true(两个都是true结果也是true),只有当两个表达式同为false时才为false。

3.逻辑非 !

规则:后面跟的是boolean类型表达式,表达式为true则结果为false,表达式为false结果是true。(这是一个单目运算符,只有一个操作数)

4.注意:

逻辑与和逻辑或还有个名字分别叫做短路与和短路或。
在讨论一下代码前先认真了解上面的逻辑与和逻辑或的规则。
看以下代码:


可以看出上面表达式内有算术错误10 / 0 ,但是编译器并没有报错,为什么呢?
再看一下上面的规则,可以发现对于逻辑与,当第一个表达式为false时,则此逻辑与的表达式一定为false,无需计算右侧的表达式。和逻辑与类似,逻辑或的第一个表达式为true时,则此逻辑或的表达式一定为true,无需计算右侧的表达式。
所以逻辑与和逻辑或也叫短路与和短路或。

四.位运算符

位运算符主要有四个:&,|,~,^

位操作是按二进制位运算,计算机中都是使用二进制来表示数据的,按位运算就是在按照二进制位的每一位依次进行计算的。

按位与 &

规则:如果两个二进制位都为1,则按位与的结果为1,否则为0;
如下图所示:(0000 1010是10的二进制码,下面同理。)

运行结果为:10.

按位或 |

规则:如果两个二进制位都是0,则结果为0,否则为1.
如图:

运行结果为:11.

按位取反 ~

规则:如果该位是0,则结果为1,如果该位为1,结果为0.

按位异或 ^

规则:如果两个数字的二进制位相同,则结果为0,相异为1.
如图解释:

运行结果:1.

五.移位运算

移位运算符有三个:<<,>>,>>>。都是按照二进制来运算的。

1.左移 <<:

规则:最左侧位不要了,最右侧补0.

画图解释:

运行结果为:

可知a左移一位由10变成20,左移两位由10变成40.
由此可以得出:左移n位相当于乘2的n次方。

2.右移

规则:最右侧不要了,最左侧补符号位。(正数补0,负数补1)

画图解释:
正数:

运行结果:

则:正数10右移一位变成5,右移两位变成2,
那么一个正数右移n位相当于除以2的n次方。
对于负数:

运行结果:

则:-10右移一位变成-5,右移两位变成-3,
那么一个正数右移n位相当于除以2的n次方。
总的来说:右移n位相当于除以2的n次方,只是要看符号位。

3.无符号右移 >>>

规则:最右侧位不要了,最左侧补0.
画图解释:

运行结果:

将结果带入计算器验证为:

这里打印的结果是32个比特位的数字,a先被提升为int类型,然后右移打印出来的,由计算器验算正确,符合我们的无符号右移规则。

6.条件运算符

条件运算符只有一个:形式是   表达式1?表达式2:表达式3

当表达式1是true时,整个表达式的值为表达式2的值;当表达式1是false时,整个表达式的值为表达式3的值,。
注意:表达式1的返回值必须是boolean类型。

以上是关于2020-12-06的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode——数值的整数次方

数值的整数次方

16数值的整数次方

PHP 负数值得问题

剑指offer-数值的整数次方

剑指Offer对答如流系列 - 数值的整数次方