Java语言支持的运算符:
算数运算符:+、-、*、/、%、++、--
赋值运算符:=
扩展运算符:+=、-=、*=、/=、%=
关系运算符:>、<、>=、<=、==、!=
逻辑运算符:&&、II、!
位运算符:&、I、^、>>、<<、>>>
条件运算符:? : (三目运算符)
注:-+是字符相加,只要有一个操作数是字符串,就会自动变为字符串相连。
二元运算符类型提升:
整数运算:如果两个操作数有一个为long,则结果也为long。没有long是,结果为 int,即使操作数全为shot,byte结果也为int。
浮点运算:如果两个操作数有一个为double,则结果为double。只有两个操作数都 是float,则结果才为fioat。
&和&&的区别:“&”无论任何值,两边的表达式都会参与运算。“&&”左边为false,则右边的表达式 不再计算。
I和II的区别:“I”无论任何值,两边的表达式都会参与运算。“II”左边为false,则右边的表达式 不再计算。
位运算符是对操作数以二进制比特位为单位进行操作和运算,操作数和结果都是整数类型。如果操作对象是char、byte、short位移动作发生前其值会自动晋升为int类型,运算结果也为int。
三目运算符的执行过程:(格式 x ? y : z)其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算的结果为表达式y的值。
运算优先级:赋值<三目<逻辑<关系<算术<单目
基本数据类型之间的转换:在赋值运算或算术运算时,要求数据类型相同,否则要进行类型转换(自动转换和强制转换)。除boolean类型外,所有的基本数据类型(整型、浮点型、字符型)因 为各自的精度不同,赋值时都要考虑这个问题。
算术运算时的转换:整型、浮点型、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级。 类型转换的方向:byte——short、char——int——long——float——double
赋值运算时的转换:强制类型转换(左<右)时,当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围就会被截断成为一个完全不同的值。可以将整数类型常量直接赋给byte、short、char等类型变量,只要不超出范围就不需要强制转换。
等号右侧所有变量先转换为字节数最多的数据类型再计算。
左侧宽度>右侧宽度 自动转换 左侧宽度<右侧宽度 强制转换