反反复复刷面试题,刷到关于static老是愣一下,关于这两个引用口诀不难,但是总不确定,就从根本上解决问题,为什么要分为静态方法和非静态方法?这里做一个本人查到的总结。
java中涉及静态方法都是主要目的是为了在类级别上提供一些功能,而不是再对象级别上(不是所有东西都需要用面向对象的方式搞)。静态方法不依赖于对象的状态,可以直接通过类名调用,不用实例化对象。静态方法设计目的:
静态方法通常用于提供实用工具方法,比如java的Math类中的许多方法。如Math.sqrt()等等;
静态方法方便我们调用,只需要导入相应的包通过类名调用,而不需要一个个创建对象实例;
可以在实例化前执行某些功能,比如:
public class Product {
private static int idCounter = 0;
private int id;
private String name;
public Product(String name) {
this.id = generateId(); // 调用静态方法生成唯一ID
this.name = name;
}
private static int generateId() {
return ++idCounter;
}
}
静态方法和非静态方法使用区别: