枚举(ENUM)与类的静态成员(static)
1. 枚举表示可以计数的一种类型
==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("中国");
访问静态成员时必须使用静态方法
实例成员属于类中的每个实例
==运行结果==
运行结果.png