目录
1.Java运算符
2. 算数运算符
3.赋值运算符
4.关系运算符
5.逻辑运算符
6.字符串拼接符
7.三目运算符
8.位运算符
1.Java运算符
????????算数运算符、赋值运算符、关系运算符、逻辑运算符、位运算符。
2. 算数运算符
符号:+、-、*、/、%、++、--
注:%是取余 例如“10%3”的结果是1,即余数为1
++:自身加一 ? ++a和a++的区别 ? ++a是先自增再使用 ? a++是先使用再自增?
符号“--”的使用方法同上
总结:
-
byte类型做运算会先向上转型成int类型,再做运算。 原因:CPU每次去获取32位的数据,所以没有32位就向上补成32位。 -
short类型做运算会先向上转型成int类型,再做运算。 原因:CPU每次去获取32位的数据,所以没有32位就向上补成32位。 -
byte和short做运算会向上转型成int类型(补成32位)。 -
除了byte和short一起做运算,其余的数值型按照取值范围大的类型进行类型提升。 -
char类型可以做运算,将字符转换为ASCII表中的数值。 -
++num; 和 num++; 没有区别。原因:表示一行执行语句的结束,不管先加还是后加,都自增1。
3.赋值运算符
符号:=、+=、-=、*=、/=、%=
注:+=可理解为将右边的值与左边的值相加再赋值给左边 如:a+=1;即为a=a+1;
4.关系运算符
符号:==、!=、>、<、>=、<= 注意: = 赋值号 == 判断两个值是否相等 != 判断两个值是否不相等 总结:关系运算符的结果都是boolean类型
5.逻辑运算符
符号:& 与 &&短路与 | 或 ||短路或 ^ 异或 ! 非
-
&与:两侧都是boolean,两侧都成立(true),结果才为true。 -
&&短路与:两侧都是boolean,两侧都成立(true),结果才为true。 & 与 &&区别: &:判断前者为false后,还会判断后者 &&:判断前者为false后,不会判断后者,效率更高 -
|或:两侧都是boolean,两侧有一侧成立(true),结果就为true。 -
|| 短路或:两侧都是boolean,两侧有一侧成立(true),结果就为true。 | 与 ||区别: |:判断前者为true,还会判断后者 ||:判断前者为true,不会判断后者,效率更高 -
^ 异或:两侧都是boolean,两侧不一样,结果为true -
! 非:置反
注: 1.逻辑运算符运行结果都是boolean类型 2.&、&&、|、||、^ 两侧都是boolean类型数据
6.字符串拼接符
符号:+ 注: +号两侧都是数值,此符号为算数运算符 +号一侧是字符串或者两侧都是字符串,此符号为字符串拼接符
System.out.println(1+2+"abc"+"def"+1+2);
// 3 +"abc"+"def"+1+2
// "3abc" +"def"+1+2
// "3abcdef" +1+2
// "3abcdef1"+2
// "3abcdef12"
?
7.三目运算符
举例: 1+2 算数表达式? ?1>2 关系表达式
-
三目运算符 语法结构: 数据类型 变量 = (表达式)?值1:值2; 理解: 表达式的结果必须是boolean类型 true -将值1赋值给变量 false-将值2赋值给变量 -
三目运算符的返回值规则:
-
值1和值2都是常量的情况:按照取值范围大的类型进行转型 -
值1和值2都是变量的情况:按照取值范围大的类型进行转型 -
值1和值2一个是常量一个是变量的情况: 如果值1在值2类型的取值范围内:就按照值2的类型进行返回数据 如果值1不在值2类型的取值范围内:就按照值1的类型进行返回数据
案例:在控制台输入三个数字,由小到大输出(1<2<3)
Scanner scan = new Scanner(System.in);
System.out.println("请输入第一个数字:");
int a = scan.nextInt();
System.out.println("请输入第二个数字:");
int b = scan.nextInt();
System.out.println("请输入第三个数字:");
int c = scan.nextInt();
//最大值
int max = (a>b)?a:b;
max = (max>c)?max:c;
//最小值
int min = (a<b)?a:b;
min = (min<c)?min:c;
//中间值
int mid = a+b+c-max-min;
//输出
System.out.println(min + "<" + mid + "<" + max);
?
8.位运算符
含义:把十进制转化为二进制进行运算。
符号:&、|、^、>>、<<、<<<
-
&:同位比较,两者为1,结果才为1。 -
|:同位比较,两者有1,结果就为1。 -
^:同位比较,两者不同,结果就为1。
????????&、|、^:两侧都是数值,该符号为位运算符。
????????&、|、^:两侧都是boolean值,该符号为逻辑运算符。
?????4.<<左移:整体向左移动n位,就用n个0补位。
? ? ?5.>>右移:整体向右移动n位,就用n个最高位(符号位)补位。
? ? ?6.<<<无符号位右移:整体向右移动n位,就用n个0补位。
注:正整数>>或>>>没有区别,区别在于负数。
|