Java 语言支持如下运算符:
-
算术运算符: +,-,*,/,%,++,--
赋值运算符 =
扩展赋值运算符:+=,-=,*=,/=
关系运算符: >,<,>=,<=,==,!=
逻辑运算符: &&,||,!
位运算符: &,|,^,~ , >>,<<,>>> (了解!!!)
条件运算符 ?:
▪ 相关概念辨析
–
+ 运算符 操作符 Operator
5+6 表达式 expression
5 6 操作数 Operand
int m =5+6; 语句 Sentence
注意:
–1:/ 除 6/4=1 6/4.0=1.5
–2: %取模(求余) 6%4=2
–3:+ 6+‘a’=103 6+“a“=6ª
–4:++
▪a=2;b=++a+9;
▪a=2;b=a+++9;
–+:字符串相加,只要有一个操作数是字符串,自动变为字符串相连
扩展赋值运算符
– 算术运算符和赋值运算符结合
▪ 位运算符是对操作数以二进制比特位为单位进行操作和运算,操作数和结果都是整型数。
▪ 如果操作的对象是char、byte、short,位移动作发生前其值会自动晋升为int,运算结
果也为int。
![](https://img-blog.csdnimg.cn/68af8b7dbe6d472c894246c7c4e97dd1.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASmlhbmdfX19zaXI=,size_20,color_FFFFFF,t_70,g_se,x_16)
逻辑运算符与布尔操作数一起使用,组 成逻辑表达式
逻辑表达式的结果是布尔值
▪ &和&&的区别
– “&”:无论任何情况,“&”两边的表达式都会参 与计算。
“&&”: 当“&&”的左边为false,则将不会计算 其右边的表达式。即左false则false
“|”和“||”的区别与“&”和“&&”的区别类似。
![](https://img-blog.csdnimg.cn/3fed7258813c4597a230acdd27abe61f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASmlhbmdfX19zaXI=,size_12,color_FFFFFF,t_70,g_se,x_16)
条件运算符又叫三目运算符,当第一个表达返回为true,则取?后面的值,第一个表达式返回为false,则取:后面的值。
执行过程
– 其中 x 为 boolean 类型表达式,先计算 x 的值,若为true,则整个三目运 算的结果为表达式 y 的值,否则整个运算结果为表达式 z 的值。
▪ 经常用来代替简单的if-else判断!
基本数据类型之间的转换
▪ 在赋值运算或算术运算时,要求数据类型相同,否则要进行类型转换
▪ 转换方式:
– 自动转换
– 强制转换
▪ 除boolean类型外,所有的基本数据类型因为各自的精度不同,赋值时
都要考虑这个问题
▪ 除boolean类型外,所有的基本数据类型包括:整型,浮点型,字符型。
1、自动转换(隐式转换)
赋值运算符=左边数据范围大,右边数据范围小,并且一般是同一种数据类型的情况下,则会发生自动转换
2、强制转换
赋值运算符=左边数据范围小,右边数据范围大,并且一般是同一种数据类型的情况下,则必须使用强制转换
语法:(datatype)
强制转换可能会有数据精度的丢失。
赋值运算符=左边数据范围大,右边数据范围小,并且一般是同一种数据类型的情况下,则会发生自动转换
2、强制转换
赋值运算符=左边数据范围小,右边数据范围大,并且一般是同一种数据类型的情况下,则必须使用强制转换
语法:(datatype)
强制转换可能会有数据精度的丢失。