枚举(enum)与类的静态成员(static)

 

枚举(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));
  1. %s-->输出字符串类型
  2. %d-->输出整型类型(十进制)
  3. %x-->输出整型类型(十六进制)
  4. %b-->输出布尔类型
  5. %c-->输出字符类型

 当属性设置为private时,就需要使用set来进行设置属性了(在nation这个属性前添加private)

private static nation;
public static void setNation(String nation){
    Person.nation=nation;
}

主函数调用使用

Person.setNation("中国");

 访问静态成员时必须使用静态方法

 实例成员属于类中的每个实例

运行结果

原文地址:https://www.cnblogs.com/sinon/p/5890380.html