static 静态域和静态方法

1. 静态域

如果将域定义为 static,每个类中只有一个这样的域。而每一个对象对于所有的实例域都有自己的一份拷贝。直接看代码吧。

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

这里给 Employee 类添加了一个实例域 id 和一个静态域 NextId。现在每一个雇员对象都有一个自己的 id 域,但这个类的所有实例域都将共享一个 NextId 域。即使我们没有任何雇员对象,这个静态域 NextId 也是存在的。它属于类,而不属于任何一个独立的对象。

我们制造一个新的 Employee 对象 aaron,并且调用一个方法。

public void setId() {
        id = NextId;
        NextId ++;
        System.out.println("NextId: "+NextId  +" Id: " + id);
    }
Employee aaron = new Employee();
aaron.setId();

其实我们做的操作相当于:

aaron.id = Employee.NextId;
Employee.NextId ++;

2. 静态方法

静态方法是一种不能对对象实施操作的方法。

public class ArrayIndex {
    public static void f() {
        System.out.println("hello AaronYu");
    }
    public  void g() {
        System.out.println("hello aaron");
    }
        
    public static void main(String[] args) {
    
        f();
        ArrayIndex.f();
        ArrayIndex array = new ArrayIndex();
        array.g();
//      ArrayIndex.g();
        
        array.f();
    }

}

上面的代码中我构造了一个静态方法和一个实例方法作为对照。
静态方法我们可以直接调用,或者通过类名调用。如 f();
ArrayIndex.f(); 或者通过对象调用,如 array.f(); 不过不建议通过这种方法调用,我建议通过类名调用。

对于实例方法,我们要构造一个对象如 array 来调用实例方法,如 array.g(); 会打印输出: hello aaron

System.out.println("点个喜欢!欢迎关注我!");

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,141评论 6 13
  • 父类与子类 在Java术语中,如果C1类扩展自另一个类C2,我们称C2为父类,也称超类或基类,称C1为子类,也称次...
    Steven1997阅读 1,192评论 1 2
  •  西湖故事的外面车水马龙,听到淅淅沥沥的细雨,流然的路光渐渐隐入眼端,密密匝匝的压下来,压下来,直到卫渔的眼生生...
    死在水里的鱼阅读 987评论 0 0
  • 当当当!响应伙伴们的积极踊跃,所以!我们来啦! 幸福里火车旅行时间,5.1,时长1天到1.5天 举手的伙伴们,还记...
    猫头猫cat阅读 254评论 0 0
  • 十月怀胎,一朝分娩。小天使来到我们的身边整整一年了。感觉时间咻——地一下就从娃娃的奶瓶奶嘴,纸巾尿裤,小衣服小裤子...
    廖木空青阅读 624评论 3 4