public class SwitchTest { public static void main(String[] args) { String param = null; switch (param) { case "null": System.out.println("null"); break; default: System.out.println("default"); } } }
這段代碼會拋出NullPointerException,測試
switch處不可爲nullthis
switch 處可使用Enum類,使用細節以下;spa
//先建立Enum類
public enum DataTypeEnum { HOUR("hour"), DAY("day"), /** 小時類型值** */ WEEK("week"), /** 小時類型值* */ MONTH("month"), /** 小時類型值* */ YEAR("year"), /** 小時類型值* */ MINUTE("minute"); private String value; private DataTypeEnum(String value) { this.value = value; } public static DataTypeEnum getType(String dataTypeCode) { for (DataTypeEnum enums : DataTypeEnum.values()) { if (enums.value.equals(dataTypeCode)) { return enums; } } return null; } public String getValue() { return value; } }
//在main方法中進行測試
public static void main(String[] args) { String datatype = "week"; DataTypeEnum type = DataTypeEnum.getType(datatype);
if(null != type){ //當switch處爲null會報空指針異常,因此在此處進行判斷 switch (type){ case DAY: System.out.println("day"); break; case HOUR: System.out.println("hour"); break; case WEEK: System.out.println("week"); case YEAR: System.out.println("year"); default: System.out.println("default"); }
} }
//運行結果是
week
year
default
總結:指針
1. 當使用switch時,注意避免NullPointException;code
2. 若是沒有break的話,會繼續執行下面的case,包括default;blog
3.switch、catch支持的數據類型有char,byte,short,int,String,Enumget