算术运算符——强制转换
如果把一个取值范围大的数值,赋值给取值范围小的变量,是不允许直接赋值的,需要强制转换
格式:目标数据类型 变量名=(目标数据类型)被强转的数据.
插入:double>float>long>int>short>byte
转换规则:1.取值范围小的先转换为大的,再进行计算;
2.byte、short、char三种类型在运算时,会直接先提升为int,再进行运算
举例:
int a =300; byte b = (byte)a; | byte c =100; byte d = 20; <byte result =(byte)(c+d); <int result = c+d; |
字符串的“+”操作
🔺当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算符了,会将前后的数据进行拼接并产生一个新的字符串。
eg:"123"+123——>"123123"
🔺连续进行“+”操作时,从左到右逐个执行。
eg:1+99+"年美女"——>"100年美女"
System.out.printInt(3.7+"abc");-----//"3.7abc"
System.out.printInt("abc"+true);-----//"abctrue"
System.out.printInt("中"+"abc"+true);-----//"中abctrue"
int age = 18;
System.out.printInt("我的年龄是"+age+"岁");-----//"我的年龄是18岁"
System.out.printInt("我的年龄是"+"age"+"岁");------//"我的年龄是age岁"
System.out.printInt(1+2+"abc"+2+1);-----//"3abc21"
短路逻辑运算符
1、&&:表示两边都为真,结果才为真(短路与)
2、||:表示两边都为假,结果才为假(短路或)
3、短路:当左边的表达式能确定最终结果,那么右边就不会参与运行了。
原码:最左边为符号位,0为正,1为负.
反码:计算规则:
正数的反码不变,负数的反码在原码的基数上,符号位不变,数值取反—— 0变1,1变0. |
补码:计算规则
正数的补码不变,负数的补码在反码的基础上+1. 另外补码还能够记录一个特殊的值-128,该数据在1个字节下没有原码和反码. |
其他运算符
&:并 | |:非 | ^:异或(相同为false,异同为true) | !:逻辑非,取反 |
<< | 左移 | 向左移动,低位补0 |
>> | 右移 | 向右移动,高位补0或1(正补0,负补1) |
>>> | 无符号右移 | 向右移动,高位补0 |
& | 逻辑与 | 0为false,1为true |
| | 逻辑或 | 0为false,1为true |