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);
	}
}
相關文章
相關標籤/搜索