目录
运算符和表达式
运算符:一些符号。
表达式:用运算符把字面量或者常量连接起来,符合java语法的式子。
例如:int sum=a+b; "+"为运算符,a+b为表达式
算术运算符
+; -; *; /;%(取模或者取余)
取模或者取余运算
在代码中,如果有小数参与运算,结果可能是不精确的。整数参与计算,结果只能为整数;只有有小数参与运算,结果为小数。取模应用场景:①判断A是否可以被B整除 A%B
②判断数字是否为整数
③斗地主发牌 分别三个人%3取余
数值拆分:公式总结
个位:数值%10
十位:数值/10%10
百位:数值/100%10
千位:数值/1000%10
键盘输入一个n位数,Scanner
![](https://i-blog.csdnimg.cn/blog_migrate/d7f89606216ca0927225a3a4e9428f04.png)
隐式转换(自动类型提升)
1、把取值范围小的数值转成取值范围大的(就像把少的放到大的水瓶中)
2、byte short char 三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算
3、取值范围:byte<short<int<long<float<double
强制转换
例子:如果把一个取值范围大的数据,赋值给取值范围小的变量,是不允许直接赋值的,如果一定要做要进行强制类型转换。
格式:目标数据类型 变量名=(目标数据类型)被强转的数据;
字符串的+操作
①+操作中出现字符串时,+是字符串连接符,而不是算术运算符,会将前后的数据进行拼接,产生一个新的字符串
②连续进行+操作时,从左到右逐个执行
只要有字符串的出现,就是字符串的形式出现,双引号里面的内容是字符串。
ASCII表的字符计算
当字符+字符时,会把字符通过ASCII表查询到对应的数字在进行计算
当字符+数字时,会把字符通过ASCII表查询到对应的数字在进行计算
小结:只要有字符串的操作,就是拼接操作;只要是数字和字符以及字符和字符,就是数字计算
自增自减运算符
总结:int b=a++;//先用后加
int b=++a;先加后用
赋值运算符
关系运算符 0&1
== | 判断a是否等于b,成立为true,不成立为false |
!= | 成立为true,不成立为false |
> | 成立为true,不成立为false |
< | 成立为true,不成立为false |
>= | 成立为true,不成立为false |
<= | 成立为true,不成立为false |
注意:关系运算符的结果都是boolean类型,要么是true,要么是false,千万不能把==写成=
逻辑运算符
逻辑与& 并且
逻辑或| 或者
逻辑异或^ 相同为false,不同为true 例子:民政局登记 男女为1,男男或女女相同为0
逻辑非! 取反
短路与、短路或
短路与 && 结果和&相同,但是有短路效果 两边同时为真才为真,否则为假
理解:当左边的表达式能确定最终的结果,右边便不再参与运行
短路或 || 结果和|相同,担忧短路效果 两边同时为假,结果才为假
短路与和短路或与逻辑与和逻辑或的结果一样,只是出现短路结果,但在某些情况下容易出现错误:下面的例子:
三元运算符
格式: 关系表达式?表达式1:表达式2
运算符优先级
()优先于所有(all)
原码、反码、补码
原码:十进制数据的二进制表示形式,最左边是符号位,0正1负
反码:为了解决原码不能计算负数的问题而出现的。
规则:正数的反码不变,负数的反码在原码的基础上,符号位不变,数值取反,0变1,1变0
+0 | 原码:0000 0000 | 反码:0000 0000(正数的反码和原码一样) |
-0 | 原码:1000 0000 | 反码: 1111 1111 |
补码完美解决了计算机中正数和负数的存储问题(因为计算机的存储是存储了两个0),所以数字的存储及运算是补码计算。
补码byte的取值范围是-128到+的127。
总结:补码出现的目的:为了解决负数计算时跨0的问题而出现的
补码的计算规则:正数的补码不变,负数的补码是反码+1,另外补码可以多记录一个特殊的值-128,该数据在一个字节下,没有原码和反码
补码的注意点:计算机中的存储和计算都是以补码的形式出现的
短路与的特殊之处
<< 左移,相当于成2
>>右移,相当于除2
>>> 无符号右移