Java中的运算符分为数学运算符,逻辑运算符,比较运算符,条件运算符,赋值运算符,复合赋值运算符。
数学运算符含有+ - * / % ++ --,当使用这些运算符进行运算时,进行以下说明:
1)同种类型的数据参与运算时,返回同种类型的结果。
2)不同类型的数据参与运算时,其中的一种类型数据会自动进行自动类型转换,当转换完成后,同种类型的数据进行运算,返回同种类型的结果。
3)byte、short、char类型的数据,会自动进行自动类型转换,自动转换成int类型。也就是说,byte、short、char类型的数据参与运算时,都是按照int类型的数据进行运算的。
4)运算的时候Java不检查溢出问题,需要开发时避免溢出计算现象。
对于“%”运算符,进行如下说明:
1)两个数进行取余运算时,结果的符号应该与第一个数相同。
2)当存在浮点数参与取余运算时,返回的结果默认是double类型的。如果需要返回float类,则需要进行强制类型转换。
对于“/”运算符,进行如下说明:
1)对于除法运算符,结果应该是向0取整。
2)进行除法运算后,结果的符号应该是遵从,同号得正,异号得负。
3)如果不存在浮点数参与运算,则结果默认为int类型;如果存在浮点数参与运算,则结果默认为double类型;如果需要float类型,则进行强制类型转换。
对于“++”,“–”运算符,进行以下说明:
1)每进行一次“++”,“–”运算时,变量就会自增加1或者自减减1。
2)当对变量进行自增或者自减时,表达式也是有值的。当“++”,“–”符号是在变量的前面时,则表达式的值为变量运算之前的值;当“++”,“–”符号是在变量的后面时,则表达式的值为变量运算之后的值。
逻辑运算符含有&(与) 、 |(或) 、 !(非) 、&&(与) 、 ||(或),当使用这些运算符进行运算时,进行以下说明:
非短路逻辑含有&(与) 、 |(或)
&与运算:
如果(表达式1)&(表达式2),不管表达式1的值是什么,表达式2都要执行
|或运算:
如果(表达式1)|(表达式2),不管表达式1的值是什么,表达式2都要执行
!非运算
对于 !表达式,直接将表达式的结果取反。
&&短路与运算:
如果(表达式1)&&(表达式2),一旦表达式1的值为false,那么不计算表达式2,直接返回false。
||短路或运算:
如果(表达式1)||(表达式2),一旦表达式1的值为true,那么不计算表达式2,直接返回true。
说明:
因为短路逻辑与实际业务更相近,所以实际业务中比较常用。
条件运算符:也称为三目运算(三元)
格式:布尔表达式1 ? 表达式2 : 表达式3
如果布尔表达式1返回的是true,则以表达式2的整体作为结果,否则以表达式3的整体作为结果。
比较运算符含有>(大于)、 >=(大于或等于) 、<(小于)、<=(小于或等于) 、==(等于)、!=(不等于)
用于比较运算符两边值的大小。
=赋值运算符:
赋值运算表达式的值就是赋值的结果。
进行以下说明:
1)在基本类型变量中,使用“=”运算符进行赋值,每一次赋值都是一次改变变量的值。
2)在基本类型变量中,使用“==”运算符比较的是值。
复合赋值运算符:+= -= *= /= %=
字符串连接运算:+
"+"是java中唯一的重载运算,“重载"表示是名字相同功能不同的运算。如果”+“号两端是数值,就是数学加法。如果”+"号两端有一端是字符串,就是字符串连接。
对于重载运算符“+”,进行以下说明:
1)当表达式中只含有int类型的数字时,则进行相加运算;当表达式中含有int类型的数字和字符时,字符会先按照unicode字符集转换成int类型的数字进行加法运算;当表达式中只有字符时,所有字符会先按照unicode字符集转换成int类型的数字进行加法运算。
2)当表达式中含有字符串时,字符串左边所有的“+”都具有加法功能;字符串右边所有的“+”都具有连接功能。
3)只要表达式中没有字符串,或者字符和数字都是在字符串的左边时,则所有的int类型的数字进行加法运算,所有的字符都会先按照unicode字符集转换成int类型的数字进行加法运算。