2.static 是在内存中分配一块区域,供整个类通用,所有的类的对象都享有它的共同的值
static定义一个变量:实现的是类所有对象的共享,比如算网站的点击量的时候,通过一个static变量实现。
public class StaticTest { private static int i = 0; public int add(int i) { return this.i += i; } /** * @param args */ public static void main(String[] args) { StaticTest st = new StaticTest(); st.add(3); StaticTest st1 = new StaticTest(); st1.add(4); System.out.println(i); }}
代码中的i的值实现了共享,由此可见静态域保存在类的存储单元里,问不是保存对象的存储单元里。
而final如同上面所讲的,定义常量或者方法不能覆盖,类不能继承。这里的方法不能覆盖但是可以重载:
public class StaticTest { private static int i = 0; public final int add(int i) { return this.i += i; }}
public class StaticTest1 extends StaticTest{ private int i = 0; public int add(String i) { return this.i += Integer.parseInt(i); }}