您好,欢迎访问代理记账网站
移动应用 微信公众号 联系我们

咨询热线 -

电话 15988168888

联系客服
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

【java】三、静态字段与静态方法

静态字段

如果将一个字段定义为static,每个类只有一个这样的字段。

而对于非静态的实例字段,每个对象都有自己的一个副本。

class Employee
{
    private static int nextID = 1;
    
    private  int id;
    
}

每一个Employee对象都有一个自己的id字段,但这个类的所有实例都将共享一个nextId字段

即使没有Employee对象,静态字段nextID也存在。它属于类,而不属于任何单个的对象。

静态常量

由于每一个类对象都可以修改公共字段,所以,最好不要有公共字段。然而,公共常量(即final字段)却没有问题。

静态方法

静态方法是不在对象上执行的方法。它并不使用任何Math对象。换句话说,它没有隐式参数。

Employee 类的静态方法不能访问id实例字段,因为它不能在对象上执行操作。但是,静态方法可以访问静态字段。

public static int getNextID()
    {
        return nextID;
    }

可以提供类名来调用这个方法

int n = Employee.getNextID()

以下两种情况下可以使用静态方法:
1、方法不需要访问对象状态,因为它需要的所有参数都通过显式参数提供
2、方法只需要访问类的静态字段

工厂方法 ??

类似LocalDate和NumberFormat的类使用静态工厂方法(factory mathod)来构造对象

main 方法

main方法不对任何对象进行操作。

事实上,在启动程序时还没有任何对象。静态的main方法将执行并构造程序所需要的对象。

public class employee_new
{
    private static int nextID = 1;

    private String name;
    private double salary;
    private  int id;

    public employee_new(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 void SetId()
    {
        id = nextID;
        nextID++;
    }

    public static int getNextID()
    {
        return nextID;
    }

    public static void main(String[] args)
    {
        var e = new employee_new("Harry", 50000);
        System.out.println(e.getName() + " " + e.getSalary());
    }
}

import java.time.LocalDate;

public class StaticTest
{
    public static void main(String[] args)
    {
        var staff = new employee_new[3];

        staff[0] = new employee_new("Tom", 40000);
        staff[1] = new employee_new("Dick", 60000);
        staff[2] = new employee_new("Harry", 65000);

        for (employee_new e : staff)
        {
            e.SetId();
            System.out.println("name" + e.getName() + ",id=" + e.getId() + ",salary=" + e.getSalary());
        }

        int n = employee_new.getNextID();
        System.out.println("Next available id=" + n);
    }
}



分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进