static和final的区别

1.final定义的变量能够看作一个常量,不能被改变;final定义的方法不能被覆盖;final定义的类不能被继承。final static 就是再加上static的特性就能够了

2.static 是在内存中分配一块区域,供整个类通用,全部的类的对象都享有它的共同的值java

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的值实现了共享,因而可知静态域保存在类的存储单元里,问不是保存对象的存储单元里。this

而final如同上面所讲的,定义常量或者方法不能覆盖,类不能继承。这里的方法不能覆盖可是能够重载:code

 

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);
	}
}