🌱博主简介:是瑶瑶子啦,一名大一计科生,目前在努力学习C进阶,JavaSE。热爱写博客~正在努力成为一个厉害的开发程序媛!
📜所属专栏:爪洼岛冒险记
✈往期博文回顾:【爪洼岛冒险记】第2站
🕵️♂️近期目标:成为百粉小博主。持续输出JavaSE、C进阶、数据结构、算法相关的优质博客,
🙇♀️写博客理念:力求用自己的语言加上自己的理解去阐述知识知识、技术。喜欢画图、思维导图去描述过程和知识之间的联系。
🎡您的点赞、关注、收藏、评论,是对我最大的激励和支持!!!
🌺:“再牛的程序员也是从小白开始,既然开始了,就全身心投入去学习技术”
目录
Part1:Java中的运算符
1,算术运算符
运算符 | 说明 |
---|---|
+ | 加法 |
– | 减法 |
* | 乘法 |
⭐/ | 除法 |
⭐% | 取模 |
%= | 复合赋值运算符;a%=b即a=a%b(下面同理) |
/= | |
+= | |
–= | |
%= | |
++ | 自增运算符:前置时,先自增,后使用(表达式的值);后置式,先使用,再自增 |
– — | 自减运算符:前置时,先自减,后使用(表达式的值);后置式,先使用,再自减 |
这里着重讲一下除法运算符,和取模运算符的注意事项
除法运算符:
- java中除数不能为0.否则会抛出异常.(异常在后期讲,这里需要明白的是,抛出此算术异常则程序终止运行)
int b = 3 / 0;
System.out.println(b);
- int/int结果是int(这点和C中是一样的),不能得到小数
取模运算符:–取余数
- 和C中不同的是.java中的取模运算符的操作数可以为小数
double c=3.14/2;
System.out.println(c);
- a%b得到结果的正负取决于a的正负,和b无关
int a=6%4;
System.out.println(a);//2
a=-6%4;
System.out.println(a);//-2
a=6%(-4);//直接当作6%4
System.out.println(a);//2
a=-6%(-4);//当作-6%4
System.out.println(a);//-2
复合赋值运算符需注意
- Java中使用复合运算符在运算时,自动进行了强制类型转换
如:
char c=25+c;
//报错,在上一站也提到过,CPU的整形运算器,默认操作字节长度为4,为了适应CPU,这里的25+c会在编译时提升为int.所以报错
🤷♀️”想要不报错,怎么办?”—-强制类型转换(打包票)
char c=(char)25+c;
看下面这个代码,没有报错,虽然相当于c=c+25,但是由于Java中的符合运算符自动进行了强制类型转换,所以不报错.
char c+=25;
2,关系运算符
- java中,使用关系运算符进行运算,运算后表达式的结果的数据类型为布尔类型:ture或者false
运算符 | 说明 |
---|---|
== | 判断左右操作数是否相等 |
!= | 不相等 |
<= | |
>= | |
< | |
> |
3,⭐逻辑运算符
- 用逻辑运算符运算后,表达式的结果同样也是布尔类型
运算符 | 说明 |
---|---|
&& (逻辑与) | 一假则假,全真则真 |
|| (逻辑或) | 一真则真,全假则假 |
! | 逻辑非 |
❗注意:
- 逻辑运算符要求运算数均为布尔类型.
- 逻辑与(&&)存在短路现象:
expr3=expr1&&expr2;
如果expr1的值为false,则expr2不执行,expr3=false;
- 逻辑或(||)存在短路现象
expr3=expr1||expr2;
如果expr1的值为true,则expr2不执行,expr3=true
4,位运算符
和C中一样,Java中对数据操作的最小单位是位(bit),而不是字节(byte)
运算符 | 说明 |
---|---|
& | 按照二进制位与 |
| | 按照二进制位或 |
^ | 按照二进制位异或(一样的是0,不一样的是1)–>本质:找不同 |
🤷♀️:“怎么用?”
👉移位操作符、位操作符详解–图解演示、例题讲解、经验总结
❣关于位操作符和移位操作符,Java和C语言都是一样的使用,我之前写的这篇博客已经介绍得很清晰了,这里我就不重复造轮子了.
5,位移操作符
运算符 | 说明 |
---|---|
<<(左移) | 左边丢弃,右边补0 |
>> (右移) | 右边丢弃,左边补符号位对应的数字 |
>>> (无符号右移)💦(Java特有) | 右边丢弃,左边补0 |
关于二进制位具体咋移动的,可戳👉移位操作符、位操作符详解–图解演示、例题讲解、经验总结
6,三元运算符
表达式1?表达式2:表达式3;
解释:表达式1的结果是boolean类型,若表达式1为true,执行表达式2;否则执行表达式3;
注意:参与三元运算符的所有运算数是一个整体!(无论表达式3是否执行)。和其他运算数参利用运算符参与运算一样,涉及到类型提升问题。
优先级问题:
不必刻意取记优先级,根据逻辑,适当加括号即可~
Part2:Java中的类型提升
(其实在前一篇有提到过,这里具体是系统总结一下~
1:隐式类型提升(自动类型转换)—只涉及除布尔类型外的7种数据类型
- 当数据类型范围大的变量和数据类型范围小的变量进行混合运算时,结果自动提升为大的那个变量.(具体原因上一篇有讲)
long a=12;
int b=a+2;
- 特别地的是,byte,char,short,三种基本数据类型的字节数在4字节以下,所以当它们进行运算时,为了适应CPU,会自动转换成int.
2:强制类型转换(有风险)
//格式:
数据类型a 变量名=(目标类型) (被转换的变量/数据)
🎊以上就是第3站的所有知识点了~希望对大家有所帮助.
如果有用,还请关注+三连.您的关注和三连能给瑶瑶子带来无穷的动力~~~
🌻可以订阅专栏爪洼岛冒险记(free),和瑶瑶子一起,穿梭Java岛,学习java,一起努力,从小白变大牛~🙇♀️
往期blog回顾:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/142464.html