枚舉(ENUM)與類的靜態成員(static)
枚舉表示可以計數的一種類型
Gender.java
public enum Gender { male, Female, }
Person.java
public class Person { String name; int age; Gender gender; static String nation; /** * display()顯示方法 * */ void display() { System.out.println(String.format("姓名=%s,年齡=%d,性別=%s,國籍=%s", name, age, gender, Person.nation)); } }
test.java
public class test {
public static void main(String[] args) { // TODO Auto-generated method stub Person p=new Person(); p.name="Jay Chou"; p.age=30; p.gender=Gender.Female; Person.nation="中國"; p.display(); } }
解析上述中的代碼,以及涉及到的方法
static--表示靜態類型,它所表示的類或者成員均屬於類而不是屬於某個對象
例如在Person類中有一nation屬性,定義為static類型,這時在主函數測試類中調用該屬性時
Person.nation="中國";
使用該類去調用,該nation屬性不用static標識時,如果存儲了多個人的對象,都同屬於一個國家,這是就會出現nation這個字段多次出現,占用內存,使用stati表示nation大家共享一份,不會浪費內存
在display方法中還出現了String.Format方法:表示格式化字符串,該用法為
System.out.println(String.format("姓名=%s,年齡=%d,性別=%s,國籍=%s", name, age, gender, Person.nation));
- %s-->輸出字符串類型
- %d-->輸出整型類型(十進制)
- %x-->輸出整型類型(十六進制)
- %b-->輸出布爾類型
- %c-->輸出字符類型
當屬性設置為private時,就需要使用set來進行設置屬性了(在nation這個屬性前添加private)
private static nation; public static void setNation(String nation){ Person.nation=nation; }
主函數調用使用
Person.setNation("中國");
訪問靜態成員時必須使用靜態方法
實例成員屬於類中的每個實例
運行結果