在 Java 中,null 常值用來表示缺少值。
Java 的基本資料型態都有預設值,因此永遠不會是 null。依照慣例,它們以小寫字母開頭,例如 int。
參考型別存放物件的記憶體位址,而且值可以是 null。它們通常以大寫字母開頭,例如 String。
如果把 null 指定給基本資料型態的變數,會產生編譯時期錯誤,因為這種變數永遠存放著所指定型別的基本值。
//Throws compile time error stating the required type is int, but null was provided
int number = null;
把 null 值指定給參考型別的變數則不會產生編譯時期錯誤,因為參考變數可以是 null。
//No error will occur as the String variable str is nullable
String str = null;
在這項練習中,你將撰寫程式碼,為工廠員工印製名牌。
員工有 ID、姓名和部門名稱。員工名牌標籤的格式如下:"[id] - name - DEPARTMENT"。
請實作 Badge.print() 方法,回傳員工的名牌標籤:
Badge badge = new Badge();
badge.print(734, "Ernest Johnny Payne", "Strategic Communication");
// => "[734] - Ernest Johnny Payne - STRATEGIC COMMUNICATION"
請注意,標籤上的部門名稱必須是大寫。
由於電腦系統的某個小毛病,新進員工剛到工廠上班時,有時還沒有 ID。
由於名牌是必備的,他們會拿到一張沒有 ID 前綴的臨時名牌。請修改 Badge.print() 方法,讓它支援還沒有 ID 的新進員工:
Badge badge = new Badge();
Badge.print(null, "Jane Johnson", "Procurement");
// => "Jane Johnson - PROCUREMENT"
即使是工廠的老闆,也必須隨時佩戴名牌。
不過,老闆沒有所屬部門。在這種情況下,標籤應該印出 "OWNER",而不是部門名稱。
請修改 Badge.print() 方法,為老闆印出標籤:
Badge badge = new Badge();
badge.print(254, "Charlotte Hale", null);
// => "[254] - Charlotte Hale - OWNER"
請注意,老闆也可能同時是新進員工:
Badge badge = new Badge();
badge.print(null, "Charlotte Hale", null);
// => "Charlotte Hale - OWNER"