天天看點

黑馬程式員_static和final關鍵字

------- android教育訓練、java教育訓練、期待與您交流! ----------

1.static屬性

1)static修飾的資源屬于類級别,是全體對象執行個體共享的資源

2)靜态屬性

·使用static修飾的屬性,屬性類的全體類的執行個體共享的變量

·靜态屬性是在類的加載期間初始化的

·使用類名·屬性通路,如:System.out

3)執行個體變量

·屬于對象的屬性

·使用對象屬性通路,如:person.name

例:

public class StaticFiledDemo{

  public static void main(String[] args){

  Foo f1=new Foo();

  Foo f2=new Foo();

  Foo f3=new Foo();

System.out.println(

       f1.id+""+f2.id+""+f3.id+""+Foo.i);

}

class Foo{

  int id;

  static int i=0;

  public Foo(){

  id=i++;

}

注:

·int id            執行個體變量,相當于"每個人的水杯"

·static int i=0;   靜态級别變量,相當于"共用的水桶";

2.static方法

使用static聲明的方法,屬于類的方法,一般用來表示工具方法

在類加載以後可以自己調用,不需要建立愛你任何類的執行個體對象。

public class StaticMethodDemo{

   public static void main(String[] args){

   int c=Moo.add(1,2);//使用類名通路靜态方法

   System.out.println(c);

   double d=Math.sin(Math.PI);

   System.out.println(d);

   long now=System.currentTimeMills();

   }

}

class Moo{

  int a=2;

//靜态方法是屬于類的方法,是公共工具方法

//靜态方法不能通路屬于對象的資源

  public static int add(int a, int b){

  return a+b;

  }

}

3.靜态代碼塊

靜态代碼塊是在類加載期間運作的代碼塊,由于類加載一次,是以靜态代碼塊隻執行一次

靜态代碼塊用途不是很常見,一般是類加載以後初始化一些資源時使用。

1.final關鍵字

1)final修飾的類,不能被繼承

·java的String就是final類,不能被繼承

·Math是final類,不能被繼承。

·Integer、Long、Character等包裝類是final類,不能被繼承

·在實際原則上是不允許使用final類

  Spring、Hibernate、Struts2,這些架構使用了"動态繼承代理"技術,使用final的類會影響"動态代理技術"的實作;

2)final修飾的方法,不能再被覆寫

·在實際項目開發中,原則上不使用final方法,因為動态代理技術。

3)final修飾的變量,初始化以後不允許再修改了

·final  局部變量

·final  方法參數

·final  的成員變量

4)final static---Java 使用final static 修飾的變量作為常量

·一般要求常量名都有大寫字母

·java常量不是const

------- android教育訓練、java教育訓練、期待與您交流! ----------