- 最近在看Java基础知识的视频,因为距离大二学习基础知识的时光有些久远了,并且当时也并没有进行总结,所以写下这个博客权当做笔记,方便温故而知新。
强制转换
1 | 第一种情况 |
- 在这两种情况下,最后运行的值有什么不同那?
- 第一个的值最后为7;第二个运行后运行错误,显示可能损失精度。
- 第一种情况下,因为3和4是int值,a是byte值,当a=3+4时,运算符对左右两边进行了一个判断,如果右边的数在byte的范围内,则自动将其强制转换,赋值给a。
- 第二种情况下,b、c都是变量,系统不可以自动将其强制转换,因为他们可能是一个大于byte范围的数。
算数运算符
1 | 第一种情况 |
- 运行结果分别是什么?
1 | x = 4 y = 3 |
- 第一种情况涉及到了运算符的原理,系统是如何对 y=x++ 这个式子进行处理的那,先将 x 原先的值3存储起来,再对x进行++运算,最后进行=运算的时候将预存的x的值赋给y。
- 第二种情况主要式子是 y=++x ,这次是直接进行 ++x 的运算,再将他赋给y。
- 第三种情况和第一种情况大致相同,为了方便理解,我将 a = a++ 在内存中的处理过程写成程序。通过下面的代码就能够了解为什么最后的结果是3了。
1 | int a = 3; |
+=运算问题
1 | short s = 3; |
第二个式子和第三个式子有什么不同?
第二个式子可以运行成功,第三个式子不可以。在这里4是int值,+=是一个
运算符,他会对右边的数进行判断,是否在short的范围内再自动进行强制转换,
赋值给s。而第三个式子=的右面面对的是变量s,必须手动进行强制转换。
%运算问题
1 | a = -5 % 2; |
a和b的值分别是多少?
a = -1,b = 1 取模运算只有 %左边是负数的情况下对结果有影响