运算符..
运算符
01.算数运算符的基本用法
算术运算符; 自增自减运算符; 赋值运算符; 关系运算符; 逻辑运算符; 三元运算符; 运算符优先级
算数运算符: + - * / %(取模 取余)
-
如果在计算时有小数参与,结果有可能是不精确的 整数参与计算,结果只能得到整数
-
需求:键盘录入一个三位数,将其拆分为个位 十位 百位后 打印在控制台
公式总结: 1.个位: 数值%10 2.十位:数值/10%10 3.百位:数值/100%10 4.千位:数值/1000%10 ...
02.类型转换的分类
类型转换:隐式转换(自动类型提升) 强制转换
-
隐式转换:取值范围小的数值 → 取值范围大的数值
-
取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算
-
byte short char 三种类型的数据在运算的时候,都会直接先提升为int,然后再进行计算
-
强制转换:取值范围大的数值 → 取值范围小的数值
格式:目标数据类型 变量名 = (目标数据类型)被强转的数据 例: double a = 12.3;
int b = (int) a ;
03.字符串和字符的加操作
-
当+操作中出现字符串时,这个+是字符串的连接符,而不是算术运算符了,会将前后的数据进行拼接,并产生一个新的字符串; 连续进行+操作时,从左到右逐个进行
-
当"字符+字符"或"字符+数字"时,会把字符通过ASCII码表查询到对应的数字再进行计算 a→97 A→65
04.自增自减运算符
++ 变量值加1 ** 变量值-1 (++和--既可以放在变量的前边,也可以放在变量的后边)
-
两种用法:
-
单独使用:++和--无论是放在变量的前边还是后边,单独写一行结果是一样的
-
参与计算:
(1)先用后加: int a = 10; (2)先加后用: int a = 10;
int b = a++; int b = ++a;
此时, b=10 a=11 此时, b=11 a=11
-
05.赋值运算符和关系运算符
赋值运算符分类:
符号 | 作用 | 说明 |
---|---|---|
= | 赋值 | |
+= | 加后赋值 | a+=b,将a+b的值给a |
-= | 减后赋值 | |
*= | 乘后赋值 | |
/= | 除后赋值 | a/=b, 将a÷b的商给a |
%= | 取余后赋值 | a%=b, 将a÷b的余数给a |
-
-=; +=; *=; /=; 底层都隐藏了一个强制类型转换
short s = 1;
s+=1; 等同于: s = (short)(s+1)
关系运算符/比较运算符的分类:
符号 | 说明 |
---|---|
== | a==b,判断a和b的值是否相等,成立为true,不成立为false |
!= | a!=b,判断a和b的值是否不相等,成立为true,不成立为false |
> | a>b,判断a是否大于b,成立为true,不成立为false |
>= | a>=b,判断a是否大于等于b,成立为true,不成立为false |
< | a<b,判断a是否小于b,成立为true,不成立为false |
<= | a<=b,判断a是否小于等于b,成立为true,不成立为false |
-
关系运算符的结果都是boolean类型,要么是true,要么是false.
06.逻辑运算符
符号 | 作用 | 说明 |
---|---|---|
& | 逻辑与(且) | 并且,两边都为真,结果才是真 |
| | 逻辑或 | 或者,两边都为假,结果才是假 |
^ | 逻辑异或 | 相同为false , 不同为true |
! | 逻辑非 | 取反(不要写多次 就写一个) |
-
短路逻辑运算符
符号 | 作用 | 说明 |
---|---|---|
&& | 短路与 | 结果和&相同,但是有短路效果 |
|| | 短路或 | 结果和|相同,但是有短路效果 |
短路效果: 当左边的表达式能确定最终的结果,那么右边就不会参与运行了
例: int a = 10;
int b = 10;
boolean result = ++a < 5 && ++b<5;
System.out.println(result); // faslse
System.out.println(a); // 11
System.out.println(b); // 10 (左边已经判断++a < 5是faslse了 所以右边++b就不会再运行了)
07.三元运算符
-
三元运算符/三元表达式:
格式: 关系表达式 ? 表达式1 : 表达式 2 ; 为真,则执行表达式1 ; 为假,则执行表达式2
范例: int max = a > b ? a : b; 把三元运算符的结果赋值给一个变量
System.out println(a > b ? a : b); 把三元运算符的结果直接打印
-
在IDEA中使用 ctrl+alt+L 自动格式化代码(对齐)
-
运算符的优先级: 记住 () 优先于所有运算符 即可
08.原码、反码、补码
-
原码:十进制数据的二进制表现形式,最左边是符号位,0为正,1为负
-
反码:正数的补码反码是其本身,负数的反码是符号位保持不变,其余位取反
-
补码:正数的补码是其本身,负数的补码是在其反码的基础上+1 (计算机中的存储和计算都是以补码的形式进行的)
其他的运算符:(用原反补解释)
运算符 | 含义 | 运算规则 |
---|---|---|
& | 逻辑与 | 0为false 1为true |
| | 逻辑或 | 0为false 1为true |
<< | 左移(左移一次 * 2 ; 两次 * 4 ...) | 向左移动 低位补0 |
>> | 右移(右移一次 / 2 ; 两次 / 4 ...) | 向右移动 高位补0或1 |
>>> | 无符号右移 | 向右移动 高位补0 |
运算符..
运算符
01.算数运算符的基本用法
算术运算符; 自增自减运算符; 赋值运算符; 关系运算符; 逻辑运算符; 三元运算符; 运算符优先级
算数运算符: + - * / %(取模 取余)
-
如果在计算时有小数参与,结果有可能是不精确的 整数参与计算,结果只能得到整数
-
需求:键盘录入一个三位数,将其拆分为个位 十位 百位后 打印在控制台
公式总结: 1.个位: 数值%10 2.十位:数值/10%10 3.百位:数值/100%10 4.千位:数值/1000%10 ...
02.类型转换的分类
类型转换:隐式转换(自动类型提升) 强制转换
-
隐式转换:取值范围小的数值 → 取值范围大的数值
-
取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算
-
byte short char 三种类型的数据在运算的时候,都会直接先提升为int,然后再进行计算
-
强制转换:取值范围大的数值 → 取值范围小的数值
格式:目标数据类型 变量名 = (目标数据类型)被强转的数据 例: double a = 12.3;
int b = (int) a ;
03.字符串和字符的加操作
-
当+操作中出现字符串时,这个+是字符串的连接符,而不是算术运算符了,会将前后的数据进行拼接,并产生一个新的字符串; 连续进行+操作时,从左到右逐个进行
-
当"字符+字符"或"字符+数字"时,会把字符通过ASCII码表查询到对应的数字再进行计算 a→97 A→65
04.自增自减运算符
++ 变量值加1 ** 变量值-1 (++和--既可以放在变量的前边,也可以放在变量的后边)
-
两种用法:
-
单独使用:++和--无论是放在变量的前边还是后边,单独写一行结果是一样的
-
参与计算:
(1)先用后加: int a = 10; (2)先加后用: int a = 10;
int b = a++; int b = ++a;
此时, b=10 a=11 此时, b=11 a=11
-
05.赋值运算符和关系运算符
赋值运算符分类:
符号 | 作用 | 说明 |
---|---|---|
= | 赋值 | |
+= | 加后赋值 | a+=b,将a+b的值给a |
-= | 减后赋值 | |
*= | 乘后赋值 | |
/= | 除后赋值 | a/=b, 将a÷b的商给a |
%= | 取余后赋值 | a%=b, 将a÷b的余数给a |
-
-=; +=; *=; /=; 底层都隐藏了一个强制类型转换
short s = 1;
s+=1; 等同于: s = (short)(s+1)
关系运算符/比较运算符的分类:
符号 | 说明 |
---|---|
== | a==b,判断a和b的值是否相等,成立为true,不成立为false |
!= | a!=b,判断a和b的值是否不相等,成立为true,不成立为false |
> | a>b,判断a是否大于b,成立为true,不成立为false |
>= | a>=b,判断a是否大于等于b,成立为true,不成立为false |
< | a<b,判断a是否小于b,成立为true,不成立为false |
<= | a<=b,判断a是否小于等于b,成立为true,不成立为false |
-
关系运算符的结果都是boolean类型,要么是true,要么是false.
06.逻辑运算符
符号 | 作用 | 说明 |
---|---|---|
& | 逻辑与(且) | 并且,两边都为真,结果才是真 |
| | 逻辑或 | 或者,两边都为假,结果才是假 |
^ | 逻辑异或 | 相同为false , 不同为true |
! | 逻辑非 | 取反(不要写多次 就写一个) |
-
短路逻辑运算符
符号 | 作用 | 说明 |
---|---|---|
&& | 短路与 | 结果和&相同,但是有短路效果 |
|| | 短路或 | 结果和|相同,但是有短路效果 |
短路效果: 当左边的表达式能确定最终的结果,那么右边就不会参与运行了
例: int a = 10;
int b = 10;
boolean result = ++a < 5 && ++b<5;
System.out.println(result); // faslse
System.out.println(a); // 11
System.out.println(b); // 10 (左边已经判断++a < 5是faslse了 所以右边++b就不会再运行了)
07.三元运算符
-
三元运算符/三元表达式:
格式: 关系表达式 ? 表达式1 : 表达式 2 ; 为真,则执行表达式1 ; 为假,则执行表达式2
范例: int max = a > b ? a : b; 把三元运算符的结果赋值给一个变量
System.out println(a > b ? a : b); 把三元运算符的结果直接打印
-
在IDEA中使用 ctrl+alt+L 自动格式化代码(对齐)
-
运算符的优先级: 记住 () 优先于所有运算符 即可
08.原码、反码、补码
-
原码:十进制数据的二进制表现形式,最左边是符号位,0为正,1为负
-
反码:正数的补码反码是其本身,负数的反码是符号位保持不变,其余位取反
-
补码:正数的补码是其本身,负数的补码是在其反码的基础上+1 (计算机中的存储和计算都是以补码的形式进行的)
其他的运算符:(用原反补解释)
运算符 | 含义 | 运算规则 |
---|---|---|
& | 逻辑与 | 0为false 1为true |
| | 逻辑或 | 0为false 1为true |
<< | 左移(左移一次 * 2 ; 两次 * 4 ...) | 向左移动 低位补0 |
>> | 右移(右移一次 / 2 ; 两次 / 4 ...) | 向右移动 高位补0或1 |
>>> | 无符号右移 | 向右移动 高位补0 |