JavaCore運算符

1.算術運算符: + - + - * / % (前)++ (後)++ (前)-- (後)-- +
【典型代碼】
//除號:/
int num1 = 12;
int num2 = 5;
int result1 = num1 / num2;
System.out.println(result1);//2
// %:取餘運算
//結果的符號與被模數的符號相同
//開發中,經常使用%來判斷能否被除盡的情況。
int m1 = 12;
int n1 = 5;
System.out.println("m1 % n1 = " + m1 % n1);

	int m2 = -12;
	int n2 = 5;
	System.out.println("m2 % n2 = " + m2 % n2);

	int m3 = 12;
	int n3 = -5;
	System.out.println("m3 % n3 = " + m3 % n3);

	int m4 = -12;
	int n4 = -5;
	System.out.println("m4 % n4 = " + m4 % n4);
	//(前)++ :先自增1,後運算
	//(後)++ :先運算,後自增1
	int a1 = 10;
	int b1 = ++a1;
	System.out.println("a1 = " + a1 + ",b1 = " + b1);
	
	int a2 = 10;
	int b2 = a2++;
	System.out.println("a2 = " + a2 + ",b2 = " + b2);
	
	int a3 = 10;
	++a3;//a3++;
	int b3 = a3;
	//(前)-- :先自減1,後運算
	//(後)-- :先運算,後自減1
	
	int a4 = 10;
	int b4 = a4--;//int b4 = --a4;
	System.out.println("a4 = " + a4 + ",b4 = " + b4);

【特別說明的】
1.//(前)++ :先自增1,後運算
//(後)++ :先運算,後自增1
2.//(前)-- :先自減1,後運算
//(後)-- :先運算,後自減1
3.連接符:+:只能使用在String與其他數據類型變量之間使用。

2.賦值運算符:= += -= = /= %=
【典型代碼】
int i2,j2;
//連續賦值
i2 = j2 = 10;
//
**************
int i3 = 10,j3 = 20;
int num1 = 10;
num1 += 2;//num1 = num1 + 2;
System.out.println(num1);//12

	int num2 = 12;
	num2 %= 5;//num2 = num2 % 5;
	System.out.println(num2);

	short s1 = 10;
	//s1 = s1 + 2;//編譯失敗
	s1 += 2;//結論:不會改變變量本身的數據類型
	System.out.println(s1);

【特別說明的】
1.運算的結果不會改變變量本身的數據類型
2.
//開發中,如果希望變量實現+2的操作,有幾種方法?(前提:int num = 10;)
//方式一:num = num + 2;
//方式二:num += 2; (推薦)

	//開發中,如果希望變量實現+1的操作,有幾種方法?(前提:int num = 10;)
	//方式一:num = num + 1;
	//方式二:num += 1; 
	//方式三:num++; (推薦)

3.比較運算符(關係運算符): == != > < >= <= instanceof
【典型代碼】
int i = 10;
int j = 20;

	System.out.println(i == j);//false
	System.out.println(i = j);//20

	boolean b1 = true;
	boolean b2 = false;
	System.out.println(b2 == b1);//false
	System.out.println(b2 = b1);//true

【特別說明的】
1.比較運算符的結果是boolean類型
2.> < >= <= :只能使用在數值類型的數據之間。
3. == 和 !=: 不僅可以使用在數值類型數據之間,還可以使用在其他引用類型變量之間。
Account acct1 = new Account(1000);
Account acct2 = new Account(1000);
boolean b1 = (acct1 == acct2);//比較兩個Account是否是同一個賬戶。
boolean b2 = (acct1 != acct2);//

4.邏輯運算符:& && | || ! ^
【典型代碼】
//區分& 與 &&
//相同點1:& 與 && 的運算結果相同
//相同點2:當符號左邊是true時,二者都會執行符號右邊的運算
//不同點:當符號左邊是false時,&繼續執行符號右邊的運算。&&不再執行符號右邊的運算。
//開發中,推薦使用&&
boolean b1 = true;
b1 = false;
int num1 = 10;
if(b1 & (num1++ > 0)){
System.out.println(“我現在在北京”);
}else{
System.out.println(“我現在在南京”);
}

	System.out.println("num1 = " + num1);
	

	boolean b2 = true;
	b2 = false;
	int num2 = 10;
	if(b2 && (num2++ > 0)){
		System.out.println("我現在在北京");
	}else{
		System.out.println("我現在在南京");
	}

	System.out.println("num2 = " + num2);

	// 區分:| 與 || 
	//相同點1:| 與  || 的運算結果相同
	//相同點2:當符號左邊是false時,二者都會執行符號右邊的運算
	//不同點3:當符號左邊是true時,|繼續執行符號右邊的運算,而||不再執行符號右邊的運算
	//開發中,推薦使用||
	boolean b3 = false;
	b3 = true;
	int num3 = 10;
	if(b3 | (num3++ > 0)){
		System.out.println("我現在在北京");
	}else{
		System.out.println("我現在在南京");
	}
	System.out.println("num3 = " + num3);


	boolean b4 = false;
	b4 = true;
	int num4 = 10;
	if(b4 || (num4++ > 0)){
		System.out.println("我現在在北京");
	}else{
		System.out.println("我現在在南京");
	}
	System.out.println("num4 = " + num4);

【特別說明的】
1.邏輯運算符操作的都是boolean類型的變量。而且結果也是boolean類型

5.位運算符:<< >> >>> & | ^ ~
【典型代碼】
int i = 21;
i = -21;
System.out.println(“i << 2 :” + (i << 2));
System.out.println(“i << 3 :” + (i << 3));
System.out.println(“i << 27 :” + (i << 27));

	int m = 12;
	int n = 5;
	System.out.println("m & n :" + (m & n));
	System.out.println("m | n :" + (m | n));
	System.out.println("m ^ n :" + (m ^ n));

【面試題】 你能否寫出最高效的2 * 8的實現方式?
答案:2 << 3 或 8 << 1
【特別說明的】

  1. 位運算符操作的都是整型的數據
  2. << :在一定範圍內,每向左移1位,相當於 * 2

    :在一定範圍內,每向右移1位,相當於 / 2

典型題目:
1.交換兩個變量的值。
2.實現60的二進制到十六進制的轉換

6.三元運算符:(條件表達式)? 表達式1 : 表達式2
【典型代碼】
1.獲取兩個整數的較大值
2.獲取三個數的最大值
【特別說明的】

  1. 說明
    ① 條件表達式的結果爲boolean類型
    ② 根據條件表達式真或假,決定執行表達式1,還是表達式2.
    如果表達式爲true,則執行表達式1。
    如果表達式爲false,則執行表達式2。
    ③ 表達式1 和表達式2要求是一致的。
    ④ 三元運算符可以嵌套使用

凡是可以使用三元運算符的地方,都可以改寫爲if-else
反之,不成立。
3. 如果程序既可以使用三元運算符,又可以使用if-else結構,那麼優先選擇三元運算符。原因:簡潔、執行效率高。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章