java运算符
运算符:用来指明对于操作数的运算方式
按照操作数的数目来进行分类
单目运算符
例如:a++
双目运算符
例如: a+b
三目运算符
例如:(a>b)?x:y (表示如果a>b为真,执行(或输出)x,否则执行y)
按照运算符的功能来进行分类
一、算术运算
+(加),-(减),*(乘),/(除), %(取余,取模)
++(自增) ,- -(自减)
public class Text{
public static void main(String[] args){
int x = 1;
int y = x++;//先赋值,后自增
System.out.println("x = "+x+" "+"y = "+y);
//x = 2 y = 1
}
}
public class Text{
public static void main(String[] args){
int x = 1;
int y = ++x;//先自增,后赋值
System.out.println("x = "+x+" "+"y = "+y);
//x = 2 y = 2
}
}
特别的有:
public class Text{
public static void main(String[] args){
int x = 1;
for(int i=1;i<=100;i++){
x = x++;
}
System.out.println(x);
//x = 1
}
}
二、赋值运算
= 赋值符号
将 = 右边的内容(或值,或引用)存入到 = 左边的变量空间内。
+= , -= , *= , /= , %=
int x = 1;
x+= 10;// <==> x = x+10;
关系运算符(比较)
<(小于) , <= (小于等于), >(大于) , >=(大于等于), !=(不等于) , ==(等于)
1) = 与 == 的区别
= 是赋值符号,将 = 后面的结果(值 或引用)存入 = 左边的变量空间内。
== 是比较符号,比较
=
=
==
== 前面和
=
=
==
== 后面的元素(值 或引用)是否一致。
2)比较运算符的最终结果是什么?
比较运算符的最终结果是boolean类型: true或者false。
例如:
(3<8)–>true
(5>6)–>false
三、逻辑运算.
逻辑运算符前后连接的两个都是boolean类型的值,逻辑运算最终的结果还是boolean类型。
&(逻辑与)
|(逻辑或)
^(逻辑异或)
!(逻辑非)
&&(短路与)
||(短路或)
(3>2)&(5<6) ==> true
&逻辑与 表示:和,并且。前后两个全为true,整体才能为true
(6<8)|(9>15) ==> true
|逻辑或 表示:或。前后两个,只要有一个为true,整体便是true,只有两个都为false时,才为false。
(6>2)^(7>1) ==> false
^逻辑异或 表示:异(不同的)。前后两个的结果不一致,整体便为true。
!(5>3) ==> !true
=
=
==
==>false
!逻辑非 表示取反。将原来的结果取反。
总结:
&逻辑与可以理解为中文的"和", 并且”意思&前后两个条件必须同时满足最终才为true。
|逻辑或可以理解为中文的“或者" I前后两个条件只要有一个满足最终就为true。
^逻辑异或前后两个表达式只要结果不相同最终结果就为true(专治强迫生)
!逻辑非可以立即为中文的“不"将原来的结果取反
(3>1)&&(4>2) ==> true
&&短路与 :前后两个条件同时满足才为true,如果当第一个条件已经为false时,最终肯定为false,便不会执行(运行)第二个(后面)条件,这便是短路。
&&短路与
1)短路什么情况下才会发生短路?
当前面的值结果为false的时候会发生短路。
2)短路到底短路的是什么?
短路的是&&之后所有计算(执行或者判断)的过程。
3)如果发生了短路情况性能比&稍微好点。
4)&逻辑与和&&短路与从执行的最终结果来看没有任何区别。
5)短路与不一定提高了性能只有当前面为false的时候才会发生短路才会提高性能。
||短路或类似
||短路或 :前后两个条件有一个为true,则整体为true,如果当第一个条件已经为true时,最终肯定为true,便不会执行(运行)第二个(后面)条件。
四、位(bit)运算
&按位与
I按位或
^按位异或
~按位取反
<
<
<<
<<按位左位移
>
>
>>
>>按位右位移
>
>
>
>>>
>>>按位右位移(无符号)
例如:
public class Text{
public static void main(String[] args){
System.out.println(5^3);
//结果为:6
}
}
5^3
1.将5和3转化成二进制表示形式。
(int型为32位,这里省去了前面的24个0)
2.竖着按照对应位置进行异或运算(1–>true,0–>false)。
3.将计算后的二进制结果转化成十进制。
4.&按位与,I按位或和~按位取反 类似
<
<
<<
<<按位左位移
例如:
6<<2 ==24
>
>
>>
>>按位右位移
>
>
>
>>>
>>>按位右位移(无符号)