静态变量与静态方法

Java中为什么会存在静态变量与静态方法呢?

静态方法

  1. 静态方法中不能使用非静态实例变量和调用非静态实例方法。原因很简单:它不能识别调用的是哪个实例的属性;
  2. 非静态方法中可以使用静态变量和调用静态方法;
  3. 静态方法由类调用,使用实例对象调用虽然不会报错,但并符合规范;

静态变量

  1. 静态变量由类的所有实例对象共享。这样在多线程并发操作时是不是会出问题呢?
  2. 静态变量在声明时并非必须要初始化;
  3. 静态变量在类被JVM加载时初始化或者以默认值初始化;

静态代码块

  1. 静态代码块中只能使用静态变量或者调用静态方法;

个人理解

  1. 一个对象实例化时并不会拷贝类模板里面的静态方法和静态变量部分,实例对象中可以使用静态变量和调用静态方法的原因应该是:实例对象中存有指向静态变量和静态方法的引用;