【Java学习笔记】运算符
一、什么是运算符
运算符就是对操作数进行操作的符合,每一个运算符都有它自己的含义。
二、算术运算符
(一)基本四则运算符:加减乘除模(+、-、*、/、%)
加减乘比较简单不多赘述,除和取模以一些代码为例进行讲解。
除法要注意的是:
- int与int相除,结果仍为int。
- 除数不能为0,否则会抛出异常。
取模则是:
- Java特有语法使得浮点型数也可以参与运算。
- 结果的符号是受被取模数影响。
public class Main {
public static void main(String[] args) {
//除法运算(在数据类型那里有说过int与int相除结果还是int)
System.out.println(5/2);//2
System.out.println((float)5/2);//2.5
System.out.println((float)(5/2));//2.0
System.out.println(5/(float)2);//2.5
//取模运算
System.out.println(10%3);//1
System.out.println(10%-3);//1
System.out.println(-10%3);//-1
System.out.println(-10%-3);//-1
System.out.println(11.5%2);//1.5
//除数为0,抛出异常。
int a=10/0;
}
}
(二)增量运算符(+=、-=、*=、/=、%=)
public class Test001 {
public static void main(String[] args) {
int a=10;
a+=2;//等价于a=a+2;
System.out.println(a);//12
}
}
只有变量可以使用,常量不能(因为要赋值)。
(三)自增/自减运算符(++、–)
前置:先增加后使用。
后置:先使用后增加。
同样只变量可用。
三、关系运算符(<、>、==、>=、<=、!=)
它的计算结果是布尔类型,只能是true或者false。
2<a<5在C里面可以运行,但是在Java中会报错。原因是Java关系运算返回值是布尔类型,而C用0和非0表示。
四、逻辑运算符(重点)
(一)逻辑与&&
一假全假
(二)逻辑或||
一真全真
(三)逻辑非!
只能适用于布尔表达式。
(四)短路求值
- 对于与&&,出现假则停止计算后面表达式。
- 对于或||,出现真则停止计算后面表达式。
public class Test002 {
public static void main(String[] args) {
//短路求值
System.out.println(2<5||1>10/0);//10/0本来会抛出异常,因为短路就没有出现异常。
System.out.println(3<2&&1<10/0);
}
}
五、位运算符
位运算符是按二进制位运算。
(一)按位与&
都是1则为1,其余情况均为0。
(二)按位或|
都是0则为0,其余情况均为1。
(三)按位取反~
0换成1,1换成0。
(四)按位异或
两数二进制位相同则为1,否则为0。
重要结论:
- a^a=0;
- a^0=a;
六、移位运算(了解)
(一)左移<<
最左侧不要了,最右侧补0。相当于乘2的效果。
(二)右移>>
最右侧不要了,最左侧补符号位(正数补0,负数补1),相当于除二的效果。
(三)无符号右移>>>
最左侧补0。其他与右移一致。
!无无符号左移<<<
七、条件运算符
条件运算符:
表达式1(判断条件)?表达式2(真):表达式3(假);
- 不可单独使用条件运算符作为语句,一定要有与表达式2或3对应类型的变量去存储结果,否则会报错。
- 表达式2和3应当是同类型的,或者能够发生隐式类型转换。
八、运算符的优先级
这个表看起来挺多,挺杂,挺难记的。不过没关系,看看就好,没必要把它背下来。如果有拿捏不好的符号,大可以用括号把它们分别括起来。毕竟括号优先级第一位。
九、结束语
我是小邓,一个励志写好代码挣大钱的男人。希望通过博客在记录自己的学习历程的同时,认识更多志同道合的朋友。如果您觉得我的文章对您有帮助的话,请不要吝惜您的一键三连(点赞关注加收藏),这对我很重要,谢谢!