java畢向東day2-day3
1.轉義字元:通過\轉變後面字母或者符號的含義
\n:換行。
\b:退格。相當於backspace。
\r:按下回車鍵。window系統,回車符是由兩個字元來表示\r\n.
\t:製表符。相當於tab鍵。
\\:轉義\; \":轉義"
2.面試題:short s=4;s=s+5和s+=5;有什麼區別:
第一個進行了兩次運算,首先是加法然後是賦值,第二個是一次運算(+=是一個運算子),將s+5的和賦值給左邊。兩者的區別在於,第一個不會進行自動型別轉換,因此會報精度丟失的錯誤,第二個虛擬機器會計算s+5的值,只要在s(short)的範圍中,便會進行自動型別轉換賦值給s,跟short s=4一樣,只要4在s的範圍中便會賦值成功。
3. 邏輯運算子
^ : 異或;就是和|有點不一樣。當true ^ true = false;
true ^ true = false;
true ^ false = true;
false ^ true = true;
false ^ false = false;
^ : 兩邊相同結果是false。
兩邊不同結果是true
4.位運算子
<<:其實就是乘以2的移動的位數次冪;>>:就是除以2的移動的位數次冪;
>>:最高位補什麼由原有資料的最高位的數字決定;-6>>2=-2;
>>>:無論最高位是什麼,右移後,都用0補;
~:反碼運算子,其實就是對二進位制取反,~6=-7 0110取反後1111....1111-1001,這個數就是-7
^:異或(應用:加密解密):一個數異或相同的數兩次,結果還是這個數 7^5^5=7
5.不使用第三方變數交換m,n的值;
(1)
n = n + m; //如果n和m的值非常大,容易超出int範圍。
m = n - m;
n = n - m;
(2)
n = n ^ m;
m = n ^ m;//(n^m)^m;
n = n ^ m;//n ^ (n ^ m)
6.計算二進位制到十六進位制的轉化數字的時候,首先&15(取最低四位),如果大於10,計算char(差值+'A'),然後右移4位>>>4, 此處用>>>,避免最高位一直補有效位1!
7.(P27)三元運算子: 好處:可以簡化if else程式碼。 弊端:因為是一個運算子,所以運算完必須要有一個結果。
8.(P29)switch 語句的四個特點
- switch語句選擇的型別只有5種: byte, short, int , char,string。
- case之間與default沒有順序。先執行第一個case,沒有匹配的case執行default。
- 結束switch語句的兩種情況:遇到break,執行到switch語句結束。
- 如果匹配的case或者default沒有對應的break,那麼程式會繼續向下執行,執行可以執行的語句,直到遇到break或者switch結尾結束
int x = 3;
switch(x)
{
default:
System.out.println("d");
//break;
case 4:
System.out.println("a");
//break;
case 6:
System.out.println("b");
break;
case 2:
System.out.println("c");
break;
}
上面的結果是dab,x=3,從case 4開始匹配,最後執行default,因為沒有break語句也沒有執行到結尾大括號處,所以繼續向下執行且不再判斷case 條件,以此執行a b,遇到break語句後結束迴圈。
9. if和switch語句很像。具體什麼場景下,應用哪個語句呢?
如果判斷的具體數值不多,而是符合byte short int char這四種類型。
雖然兩個語句都可以使用,建議使用swtich語句。因為效率稍高。
其他情況:對區間判斷,對結果為boolean型別判斷,使用if,if的使用範圍更廣。
10.函式的過載與返回值型別無關,只與引數個數和引數型別有關。