Java 8 各種運算子總結
賦值運算子: =
算術運算子:++,--,+=, -=,*=,/=,%=
比較運算子:>,<,==,>=,<=,!=
邏輯: &&, ||, !, &, |,^,&=, |=, ^=
位:~, <<, >>, >>>, <<=, >>=, >>>=
三元: ?:
賦值運算子
int a=0, b=1,c=4;
num1=num2; //將num2的值賦值給num1
如果是引用型別,那麼就是num2的地址給了num1的地址,num1和num2指的是同一塊記憶體區域
算術運算子 +
+ 字串拼接
string s="abc"+"def";
兩數相加,結果的資料型別如何決定
有一個是float型別,結果就是float
有一個是long型別,結果就是long
有一個是double,結果就是double
其他情況結果是int
如:double result=20+10;
byte b1=1, b2=2;
int r=b1+b2;
System.out.println(-5%2); //-1
System.out.println(-5%-2); //1
++運算子:
int num8=1;
int num9=++num8;
System.out.println(num8); //2
System.out.println(num9); //2
int num8=1;
int num9=num8++;
System.out.println(num8); //2
System.out.println(num9); //1
那麼求:
int num8=1;
int num9=(num8++)+1;
System.out.println(num8); //?
System.out.println(num9); //?
int num8=1;
int num9=(++num8)+1;
System.out.println(num8); //?
System.out.println(num9); //?
int num10=10;
num10=num10+10; //累加
num10 +=10; //簡寫,是++的推廣
a=a+b 和 a+=b 效果一樣
浮點資料的不精確性:
這是由java的內部實現決定的
System.out.println(1.2f-0.4f); 這個輸出結果並不精確
我們在java裡要避免使用double,if進行運算
比較運算子 (==)
package project4;
public class test4 {
public static void main(String[] args) {
int num1=10;
int num2=10;
boolean b=num1==num2;
System.out.println(b); //true
float num3=10.00f;
boolean c=num1==num3;
System.out.println(c); //true
}
}
規則:
基本資料型別不能和引用型別比較
boolean型別不能與其他資料型別比較
基本資料型別比較的是值,而引用型別比較的是記憶體地址
浮點型資料比較規則:
0.0與-0.0是相等的
正無窮與正無窮相等
NaN與任何數都不等,包括NaN
邏輯運算子(&&,||,!)
參與邏輯運算的要是boolean型別:
&&:與運算 ||:或運算 !:非運算,取相反的值
如: System.out.println(1==1&&1>0); //true
System.out.println(true||false); //true
System.out.println(!true); //false
System.out.println(!(10>20)); //true
注意:&&和 || 是短路運算子(前面一個式子結果確定那麼整個表示式結果就確定)
int num3=10, num4=10;
boolean num5=num3<8 && num4++<10;
System.out.println(num4); //10 ,因為前面 num3<8是false所以已經得出整個式子結果是false,後面那個式子就不執行了,不然結果應該是 11
System.out.println(num5);// false
或運算的短路情況:
num4=10;
boolean num7=10<20||num4++<10;
System.out.println(num4); //10
System.out.println(num7); //true
邏輯運算子(&,|,^)
邏輯運算子參與的運算的數可以是boolean資料或其他整形資料
- 如果參與運算的數是boolean型別資料
&,| 運算規則與&&,||一樣,但不是短路運算
^, 異或運算子,參與運算的數不等,結果為true,相等為false
- 如果參與運算的是整數型別資料
他們都是位運算
System.out.println(true^false);
System.out.println(true^true);
System.out.println(false^false);
邏輯運算子(&=,|=,^=)
boolean b6=true;
//b6=b6&false;
b6 &=false; //上面式子的簡寫
System.out.println(b6); //false
三元運算子
boolean 表示式? 表示式一:表示式二
整個表示式的結果:
boolean表示式為真,結果是表示式一
否則,結果是表示式二
boolean b7=1>2?true:false;
System.out.println(b7); //fasle
int num=1>2? 10:20;
System.out.println(num); //20