1. 程式人生 > >java畢向東day2-day3

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.函式的過載與返回值型別無關,只與引數個數和引數型別有關。