静态字段与静态方法

在一个class中定义的字段称之为实例字段。而用static修饰的字段称之为静态字段,每个类只有一个这样的字段

实例字段在每个实例中有自己独立的空间,而静态字段只有一个共享空间,所有实例都会共享该字段。换句话说,如果有100个Employee对象,就有100个实例字段id,分别对应每一个对象,但只有一个静态字段nextId。即使没有Employee对象,静态字段nextId也存在。它属于类不属于任何单个对象。静态字段由类调用,实例字段由对象调用。如下面的程序,全局共用一个nextId。

静态方法内部,无法访问this变量,也无法访问实例字段,它只能访问静态字段。通常情况下,通过实例变量访问静态字段和静态方法,会得到一个编译警告。

public class StaticTest {
    public static void main(String[] args) {
       Employee[] staff = new Employee[3];
       staff [0] = new Employee("tom",40000);
        staff [1] = new Employee("tom2",50000);
        staff [2] = new Employee("tom3",60000);
        for(Employee e : staff){
            e.setId();
            System.out.println("name"+e.getName()+",id="+e.getId()+",salary="+e.getSalary());
        }
     int n = Employee.getNextId();
        System.out.println("Next available id="+n);
    }
}

public class Employee {
    private static int nextId = 1;//静态字段
    private String  name;//非静态实例字段
    private double salary;
    private  int id;

    public Employee(String n, double s) {
        name = n;
        salary = s;
        id =0;
    }

    public String getName() {
        return name;
    }

    public double getSalary() {
        return salary;
    }

    public int getId() {
        return id;
    }

    public static int getNextId() {
        return nextId;
    }

    public void setId() {
        id = nextId;

    }}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值