原创

【每天十分钟JAVA快速入门】(三)运算符

运算符

数学运算符
Java中使用:+、-、*、/ 来表示加、减、乘、除。
参与运算的两个数都是整数时,运算结果默认为整数,任意一个是浮点数时,运算结果默认为浮点数。
一个小插曲:整数除以0会抛出异常,浮点数除以0会得到Infinity,什么鬼,英菲尼迪?当然不是,是无穷大。

还有一个常用的运算符%是整数取余,又被称为取模。例如:10%3 等于1。

另外数学运算符和赋值可以连在一起写,例如:x = x +2 就可以写成 x += 2 。但是这种写法在运算参与的数字类型不同的情况下会发生隐式的类型强制转换,比如 x += 2.0 如果x是int型,则运算结果相当于(int)(x + 2.0) 。 因此个人并不推荐使用这种方式,知道有这么个东西即可。

自增与自减运算符
++ 和 -- 表示加一和减一的操。例如:
int x = 1;
x++;
此时,x的值变为2。
还有一种前缀写法, 例如:++x,效果与上面的后缀写法一致。
但是如果在表达式中使用自增或自减,二者是有区别的,例如:
int x = 1;
int y = 2 * x++; // 此时 y = 2 ,x = 2
int z = 2 * ++x; // 此时 y = 4 ,x = 2
是不是一时还反应不过来?因此个人也不推荐在表达式中使用++或--,除非你纯粹就是为了秀一下。

数学函数和常量
JDK中提供了Math类,我们可以很方便的使用它提供的数学函数和常量。例如开平方sqrt,幂运算pow,常用的三角函数sin、cos、tan,圆周率PI等等。

关系与布尔运算符
< (小于)、 > (大于) 、<=(小于等于)和 >= (大于等于)这几个都很好理解,不在赘述。
Java中使用双等号(==)来判断等于,使用( != )来判断不等于。
Java中使用 && 表示逻辑“与” 运算符,使用 || 表示逻辑“或”运算符。这两种运算符都遵循所谓的“短路”原则,即如果前面一个值已经能确定整个表达式的结果,就不会再继续计算后面的值了,例如:
int x = 0;
int y = 5;
if (x == 0 || y % x == 1){
System.out.println(y);
}
由于 x == 0 的结果是true,触发短路,后面的表达式不会再计算,因此程序运行时也不会出现“java.lang.ArithmeticException: / by zero”这样的异常。

三元操作符
Java 支持三元操作符 ? : 格式为 condition ? expression1 : expression2 , 例如:
x % 2 == 1 ? '奇数' : '偶数'

位运算符
位运算符是针对二进制数的每一位进行运算的符号,简单说明如下表:
运算符
名称
说明
范例
&
参与运算的两个二进制位全是1,运算结果为1,否则为0。
1 & 1 = 1
1 & 0 = 0
0 & 0 = 0
|
参与运算的两个二进制位全是0,运算结果为0,否则为1。
0 | 0 = 0
1 | 0 = 1
1 | 1 = 1
~
取反操作
~1 = 0
~0 = 1
^
异或
参与运算的两个二进制位相同,运算结果为0,否则为1。
0 ^ 0 = 0
1 ^ 1 = 0
0 ^ 1 = 1
<<
左移
所有二进制位向左移动一位。运算时,右边的空位补0。左边移走的部分舍去
00001001 << 1 = 00010010
>>
右移
所有二进制位向右移动一位。运算时,左边的空位根据原数的符号位补0或者1(原来是负数就补1,是正数就补0)
00001001 >> 1 = 00000100
>>>
无符号右移
所有二进制位向右移动一位。运算时,左边的空位补0(不考虑原数正负)
00001001 >>> 1 = 00000100
什么?不知道这些位运算都是什么鬼?确实,作为刚入门的同学,可以先不用管它,直接跳过此节。

最后顺带提一下,运算符也是有优先级的,就像我们小学学的四则运算,什么先乘除后加减之类的。有兴趣的同学可以自行查找资料,个人还是推荐使用括号()来决定运算顺序,毕竟脑容量有限,还是记一点有用的东西比较实在。
正文到此结束