1. 基本類型大小:char<byte<short<int<long<float<double
2. 基本類型傳遞給重載方法時發生的情況: 常數值5被當做int值處理,如果有某個重載方法接受int型參數,它就會被調用。至于其他情況,如果傳入的資料類型(實際參數類型)小于方法中聲明的形式參數類型,實際資料類型就會被提升。char型略有不同,如果無法找到恰好接受char參數的方法,就會吧char直接提升至int型。 如果傳入的實際參數類型較大,就得通過類型轉換來執行窄化轉換。如果不這樣做,編譯器就會報錯。
3. 在構造方法中,如果需要調用其它的構造方法,必須将構造器的調用放在起始處。編譯器禁止在其它任何方法中調用構造方法。
4. 類成員變量的預設初始值: boolean false; char ''; byte 0; short 0; int 0; long 0; float 0.0; double 0.0; 對象 null; 類中基本類型的變量的初始化取決于他們的順序,而與編譯方式無關。即使變量定義散布于方法定義之間,它們仍舊會在任何方法(包括構造器)被調用之前得到初始化。
5. 靜态初始化隻有在必要時刻才會進行,如果不建立對象,或者不引用靜态對象,那麼它們永遠都不會被建立。隻有當一個對象被建立,靜态對象才會被初始化,而且不會再次被初始化。 初始化的順序是:靜态對象(如果它們尚未因前面的對象建立過程而被初始化)-->非靜态對象-->構造方法。
6. 靜态代碼塊初始化:
static {
int a = 4;
int b = 4;
}
跟在static關鍵字後面的代碼,與其他靜态初始化動作一樣,這段代碼隻執行一次:當首次生成這個類的一個對象時,或者首次通路屬于那個類的靜态資料成員時(即便從未生成過那個類的對象)。 非靜态執行個體初始化:
{
B b = new B();
B b2 = new B();
}
這個看起來和靜态初始化幾乎一樣,隻不過少了static關鍵字,這種文法對于支援“匿名内部類”的初始化是必須的,但是它也使得你可以保證無論調用了哪個顯示的構造方法,某些操作都會發生。
7. Arrays.toString()方法屬于java.util标準類庫,它将産生一維數組的可列印版本。
8. 初始化數組的兩種方法:
Integer[] a = new Integer[] { new Integer(4), 5 };
Integer[] b = { new Integer(4), 5 };
第二種方法使用很受限,隻能用于數組被定義處,第一種可以在任何地方使用,甚至是在方法調用内部:
function(new Integer[] { new Integer(4), 5 });
9. 可變參數的方法可以接受空參數的傳遞:
public class TestConstructor {
public static void main(String[] args) {
A a = new A();
a.printArray(4, 5);
a.printArray(new Integer(4), new Float(4.5));
a.printArray(new A());
a.printArray();
a.printArray((Object[]) (new Integer[] { 4, 5 }));
}
}
class A {
void printArray(Object... args) {
for (Object o : args) {
System.out.print(o + " ");
}
System.out.println();
}
}
運作結果:
4 5
4 4.5
[email protected]
4 5
如果兩個方法參數類型都是可變參數,那麼這是後調用任意一個的不傳參數的方法都會報錯。為了區分它們,通常在可變參數前面,再加上一個類型非可變參數就可以解決問題。
10. 枚舉類型定義:
public enum Type {
FIRST, SECOND, THIRD
};
public enum Type {
FIRST, SECOND, THIRD
};
public static void main(String[] args) {
Type t = Type.SECOND;
System.out.println(t);
System.out.println(t.ordinal());
for (Type type : Type.values()) {
System.out.println(type);
}
}
輸出:
SECOND
1
FIRST
SECOND
THIRD
ordinal()傳回的是枚舉類型的聲明順序,values()方法傳回按照枚舉聲明順序産生的一個枚舉數組。
11. switch()參數類型的問題: 可以傳byte、char、short、int、枚舉,JDK1.7以後新增String。