java中有多种运算符,能够进行运算和条件比较等,下面我们来了解下运算符。
1>基础赋值运算符“=”,是java中唯一一个自右向左运算的符号。把右边的赋值给左边
2>扩展赋值运算符 +=,-=,*=,/=,%=
即 a+=3 >>> a=a+3
扩展运算符的效率会比一般的效率更高。并且会自动做强制类型转换。
和我们日常生活中常遇到的比较相似。有+ - * / 以及求余 %,以及两种全新的++, - -
+加号除了我们日常中的加法运算和正号外,还有连接字符串的作用。做正号时操作数是1,有较高的优先级
-减号有减法运算和负号的作用,做符号时,操作数是1,有较高的优先级
*乘号是乘法的作用
/除号是除法的作用,但如果是两个整数参与运算的话,值只取整数部分。如5/3 结果是1
%求余。是求余数的。如9%4 是9除以4余1,结果就是1
除了上面的还有两种我们接触比较少的,就是**++,- -**。我们叫它自增和自减。
同时i++与++i又有些不同。
这两个都是自增,但如果作用到他人的时候,就会有自增顺序的问题。
++i(前导自增): 先将变量的值增加 1 , 赋值给自己,再进行其他运算
i++ (后导自增):先取出变量的值使用,然后再将变量的值增加 1, 赋值给自己
int i = 3;
int b = i++;
int c = ++i;
如上面代码,i++是先参与运算,在自增,所以b的值是3,这时i(3)先赋值给b,之后再自增为4
++i是先自增,再参与运算。因为在int b = i++时,i已经为4,现在再加1,i值为5,再赋值给c,c为5.
**- -**也是同样的。
比较运算符也叫关系运算符,有>,<,=,>=,<=,==,!=
其中==,!=任意类型的操作数都可以。
,>,<,=,>=,<=,的操作数byte,short,int,long,float,double,char类型的.
结果是boolean类型的数值。
符号 | 含义 |
---|---|
& 和&& | 与且,一个为假即为假 都为真为真 |
| 和 || | 或,一个为真即为真,都为假为假 |
! | 非,非假即真,非真即假 |
^ | 异或,相同为假,不同为真 |
其中&&与||有短路现象,即第一个可以判断最终结果,后面的不在运行。
操作数只能为boolean类型,可以结果为boolean类型的表达式
推荐使用短路运算符 && ||,可以提高运算效率。
语法: boolean类型表达式 ? 值1 : 值2;
执行流程:
1.执行条件表达式,得到一个boolean类型的结果
2.结果为true,最终的结果为值1
3.结果为false,最终的结果为值2
位运算符 (了解)
运算的时候,会先把操作数转为二进制,然后进行运算,最终得到的结果转为十进制
& : 二进制的两个操作数,统一位置的两个数如果一个为0就是0,两个都为1才是1
| : 二进制的两个操作数,同一位置的两个数如果一个1就是1,两个都为0才是0
^ : 二进制的两个操作数,同一位置的两个数如果相等为0,不等为1
以上两边操作数 为boolean类型 作为逻辑运算符使用,如果操作数为整数,作为位运算使用
位移运算符
<< 左移 : 第一个操作数转为二进制,向左移动第二个操作数个位置,最终的结果转为十进制
>> 右移 : 第一个操作数转为二进制,向右移动第二个操作数个位置,假设源操作数右边与一条线,移出的忽略,只保留剩下的二进制的数据,最终的结果转为十进制
单目算数位关系,逻辑三目后赋值