學習Java的30個基本概念[轉] Freedom is More Powerful than a Budget
Feb 27

一、賦值(Assignment)
(1)對象本身存儲的對象引用(Object Reference);基本 Data Type(包括String)存儲的是實際數據。

二、關系運算符(Relational Operators)
(1)== 和 != 運算符所比較的是 Object Reference;
(2)除非被 Override,否則 equals() 缺省的行爲等同於 ==;

三、邏輯運算符(Logical Operators)
(1)有別於 C/C++,Java 中的 boolean 值不能用 non-boolean 值,如數字代替;(C/C++中非零值代表 true,零代表 false);
(2)短路式(Short-circuiting):當表達式的值已經可以判斷出真僞時,其評估便會結束,這意味著表達式某些部分可能不會被評估;

四、位運算符(Bitwise Operators)
(1)一元運算符
~:One’s complement,産生輸入位的反相;
(2)二元運算符
&:僅當兩個輸入位皆爲1時輸出才爲1;
|:任何一輸入位爲1輸出都爲1;
^:僅當一個輸入位爲1時結果爲1;(但不能同時爲1);

五、位移運算符(Shift Operator)
(1)<<:左移後較低位自動補 0;
(2)>>:右移時採用 Sign Extension,即當原值爲正時,較高位補零,否則補1;
(3)>>>:Zero Extension,無論原值正負,一律在較高位補零;
P.S. 位移運算僅用於基本整數類型(int/long)

六、String 上特殊的+
(1)如果表達式含 String,那操作數都必須爲 String(否則自動轉換)

//例:
int a = 0, b = 1;
String A = “abc”;
System.out.print(A + a + b);
//這裏 Complier 會將a和b轉化爲各自String的表達式 

七、字面常量(Literals)
(1)16進制:0x 或 0X 爲首,後接 0-9 或 a-f(不分大小寫);
(2)8進制:以 0 爲首,接 0-7;
(3)常量後添加:
L 或 l:long
F 或 f:float
D 或 d:double
(4)指數:常數 e 常數,如 1.35e-35f(e不分大小寫,爲10的次方,區別於自然對數基底);
P.S. Java/C/C++ 均不提供二進制表示法

八、晉昇(Promotion)
(1)表達式運算結果的類型,取決於表達式內最大的 Type。如 int 和 long 相加,結果爲 long;

九、break 和 continue
(1)break 會跳出循環,不再執行;
(2)continue 會停止當次迭代,不再執行剩餘部分而開始新的迭代過程;

十、標識符(labeled)
(1)labeled continue 加到的是 label 所在處重新進入 loop;
(2)labeled break 跳離的是 label 所描述的 loop;
P.S. label 使 break 和 continue 具備了越過一個以上的 Nested Level的能力

//例:
outer:
for(;;) {
    i++;
    if (i == 1) {
    continue outer;
    } else if(i > 1) {
    break outer;
    }
}

十一、switch
(1)switch 只接受 int 和 char;
(2)多個 case 可堆疊起來使用同一結果

//例:
switch(sth) {
    case ‘a’:
    case ‘b’:
    case ‘c’:
    System.out.print(”hello world”);
    break;
}

Leave a Reply