1. 程式人生 > >Java 8 各種運算子總結

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