欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      Java關(guān)鍵字final、static使用總結(jié)(共5篇)

      時(shí)間:2019-05-12 06:07:23下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《Java關(guān)鍵字final、static使用總結(jié)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《Java關(guān)鍵字final、static使用總結(jié)》。

      第一篇:Java關(guān)鍵字final、static使用總結(jié)

      Java關(guān)鍵字final、static使用總結(jié)

      一、final

      根據(jù)程序上下文環(huán)境,Java關(guān)鍵字final有“這是無(wú)法改變的”或者“終態(tài)的”含義,它可以修飾非抽象類、非抽象類成員方法和變量。你可能出于兩種理解而需要阻止改變:設(shè)計(jì)或效率。

      final類不能被繼承,沒(méi)有子類,final類中的方法默認(rèn)是final的。

      final方法不能被子類的方法覆蓋,但可以被繼承。

      final成員變量表示常量,只能被賦值一次,賦值后值不再改變。

      final不能用于修飾構(gòu)造方法。

      注意:父類的private成員方法是不能被子類方法覆蓋的,因此private類型的方法默認(rèn)是final類型的。

      1、final類

      final類不能被繼承,因此final類的成員方法沒(méi)有機(jī)會(huì)被覆蓋,默認(rèn)都是final的。在設(shè)計(jì)類時(shí)候,如果這個(gè)類不需要有子類,類的實(shí)現(xiàn)細(xì)節(jié)不允許改變,并且確信這個(gè)類不會(huì)載被擴(kuò)展,那么就設(shè)計(jì)為final類。

      2、final方法

      如果一個(gè)類不允許其子類覆蓋某個(gè)方法,則可以把這個(gè)方法聲明為final方法。

      使用final方法的原因有二:

      第一、把方法鎖定,防止任何繼承類修改它的意義和實(shí)現(xiàn)。

      第二、高效。編譯器在遇到調(diào)用final方法時(shí)候會(huì)轉(zhuǎn)入內(nèi)嵌機(jī)制,大大提高執(zhí)行效率。

      3、final變量(常量)

      用final修飾的成員變量表示常量,值一旦給定就無(wú)法改變!

      final修飾的變量有三種:靜態(tài)變量、實(shí)例變量和局部變量,分別表示三種類型的常量。

      從下面的例子中可以看出,一旦給final變量初值后,值就不能再改變了。

      另外,final變量定義的時(shí)候,可以先聲明,而不給初值,這中變量也稱為final空白,無(wú)論什么情況,編譯器都確保空白final在使用之前必須被初始化。但是,final空白在final關(guān)鍵字final的使用上提供了更大的靈活性,為此,一個(gè)類中的final數(shù)據(jù)成員就可以實(shí)現(xiàn)依對(duì)象而有所不同,卻有保持其恒定不變的特征。

      4、final參數(shù)

      當(dāng)函數(shù)參數(shù)為final類型時(shí),你可以讀取使用該參數(shù),但是無(wú)法改變?cè)搮?shù)的值。

      二、static

      static表示“全局”或者“靜態(tài)”的意思,用來(lái)修飾成員變量和成員方法,也可以形成靜態(tài)static代碼塊,但是Java語(yǔ)言中沒(méi)有全局變量的概念。

      被static修飾的成員變量和成員方法獨(dú)立于該類的任何對(duì)象。也就是說(shuō),它不依賴類特定的實(shí)例,被類的所有實(shí)例共享。只要這個(gè)類被加載,Java虛擬機(jī)就能根據(jù)類名在運(yùn)行時(shí)數(shù)據(jù)區(qū)的方法區(qū)內(nèi)定找到他們。因此,static對(duì)象可以在它的任何對(duì)象創(chuàng)建之前訪問(wèn),無(wú)需引用任何對(duì)象。

      用public修飾的static成員變量和成員方法本質(zhì)是全局變量和全局方法,當(dāng)聲明它類的對(duì)象時(shí),不生成static變量的副本,而是類的所有實(shí)例共享同一個(gè)static變量。

      static變量前可以有private修飾,表示這個(gè)變量可以在類的靜態(tài)代碼塊中,或者類的其他靜態(tài)成員方法中使用(當(dāng)然也可以在非靜態(tài)成員方法中使用--廢話),但是不能在其他類中通過(guò)類名來(lái)直接引用,這一點(diǎn)很重要。實(shí)際上你需要搞明白,private是訪問(wèn)權(quán)限限定,static表示不要實(shí)例化就可以使用,這樣就容易理解多了。static前面加上其它訪問(wèn)權(quán)限關(guān)鍵字的效果也以此類推。

      static修飾的成員變量和成員方法習(xí)慣上稱為靜態(tài)變量和靜態(tài)方法,可以直接通過(guò)類名來(lái)訪問(wèn),訪問(wèn)語(yǔ)法為:

      類名.靜態(tài)方法名(參數(shù)列表...)

      類名.靜態(tài)變量名

      用static修飾的代碼塊表示靜態(tài)代碼塊,當(dāng)Java虛擬機(jī)(JVM)加載類時(shí),就會(huì)執(zhí)行該代碼塊(用處非常大,呵呵)。

      1、static變量

      按照是否靜態(tài)的對(duì)類成員變量進(jìn)行分類可分兩種:一種是被static修飾的變量,叫靜態(tài)變量或類變量;另一種是沒(méi)有被static修飾的變量,叫實(shí)例變量。兩者的區(qū)別是:

      對(duì)于靜態(tài)變量在內(nèi)存中只有一個(gè)拷貝(節(jié)省內(nèi)存),JVM只為靜態(tài)分配一次內(nèi)存,在加載類的過(guò)程中完成靜態(tài)變量的內(nèi)存分配,可用類名直接訪問(wèn)(方便),當(dāng)然也可以通過(guò)對(duì)象來(lái)訪問(wèn)(但是這是不推薦的)。

      對(duì)于實(shí)例變量,沒(méi)創(chuàng)建一個(gè)實(shí)例,就會(huì)為實(shí)例變量分配一次內(nèi)存,實(shí)例變量可以在內(nèi)存中有多個(gè)拷貝,互不影響(靈活)。

      2、靜態(tài)方法

      靜態(tài)方法可以直接通過(guò)類名調(diào)用,任何的實(shí)例也都可以調(diào)用,因此靜態(tài)方法中不能用this和super關(guān)鍵字,不能直接訪問(wèn)所屬類的實(shí)例變量和實(shí)例方法(就是不帶static的成員變量和成員成員方法),只能訪問(wèn)所屬類的靜態(tài)成員變量和成員方法。因?yàn)閷?shí)例成員與特定的對(duì)象關(guān)聯(lián)!這個(gè)需要去理解,想明白其中的道理,不是記憶!!

      因?yàn)閟tatic方法獨(dú)立于任何實(shí)例,因此static方法必須被實(shí)現(xiàn),而不能是抽象的abstract。

      3、static代碼塊

      static代碼塊也叫靜態(tài)代碼塊,是在類中獨(dú)立于類成員的static語(yǔ)句塊,可以有多個(gè),位置可以隨便放,它不在任何的方法體內(nèi),JVM加載類時(shí)會(huì)執(zhí)行這些靜態(tài)的代碼塊,如果static代碼塊有多個(gè),JVM將按照它們?cè)陬愔谐霈F(xiàn)的先后順序依次執(zhí)行它們,每個(gè)代碼塊只會(huì)被執(zhí)行一次。

      利用靜態(tài)代碼塊可以對(duì)一些static變量進(jìn)行賦值,最后再看一眼這些例子,都一個(gè)static的main方法,這樣JVM在運(yùn)行main方法的時(shí)候可以直接調(diào)用而不用創(chuàng)建實(shí)例。

      4、static和final一塊用表示什么

      static final用來(lái)修飾成員變量和成員方法,可簡(jiǎn)單理解為“全局常量”!

      對(duì)于變量,表示一旦給值就不可修改,并且通過(guò)類名可以訪問(wèn)。

      對(duì)于方法,表示不可覆蓋,并且可以通過(guò)類名直接訪問(wèn)。

      文章轉(zhuǎn)自 :山東北大青鳥(niǎo) http://004km.cn

      http://004km.cn

      第二篇:java中final和static的總結(jié)

      Java關(guān)鍵字final、static使用總結(jié)

      Java關(guān)鍵字final、static使用總結(jié)

      一、final

      根據(jù)程序上下文環(huán)境,Java關(guān)鍵字final有“這是無(wú)法改變的”或者“終態(tài)的”含義,它可以修飾非抽象類、非抽象類成員方法和變量。你可能出于兩種理解而需要阻止改變:設(shè)計(jì)或效率。

      final類不能被繼承,沒(méi)有子類,final類中的方法默認(rèn)是final的。final方法不能被子類的方法覆蓋,但可以被繼承。

      final成員變量表示常量,只能被賦值一次,賦值后值不再改變。final不能用于修飾構(gòu)造方法。

      注意:父類的private成員方法是不能被子類方法覆蓋的,因此private類型的方法默認(rèn)是final類型的。

      1、final類

      final類不能被繼承,因此final類的成員方法沒(méi)有機(jī)會(huì)被覆蓋,默認(rèn)都是final的。在設(shè)計(jì)類時(shí)候,如果這個(gè)類不需要有子類,類的實(shí)現(xiàn)細(xì)節(jié)不允許改變,并且確信這個(gè)類不會(huì)載被擴(kuò)展,那么就設(shè)計(jì)為final類。

      2、final方法

      如果一個(gè)類不允許其子類覆蓋某個(gè)方法,則可以把這個(gè)方法聲明為final方法。

      使用final方法的原因有二:

      第一、把方法鎖定,防止任何繼承類修改它的意義和實(shí)現(xiàn)。

      第二、高效。編譯器在遇到調(diào)用final方法時(shí)候會(huì)轉(zhuǎn)入內(nèi)嵌機(jī)制,大大提高執(zhí)行效率。

      例如:

      public class Test1 {

      public static void main(String[] args){

      // TODO 自動(dòng)生成方法存根

      }

      public void f1(){

      System.out.println(“f1”);}

      //無(wú)法被子類覆蓋的方法

      public final void f2(){ System.out.println(“f2”);}

      public void f3(){

      System.out.println(“f3”);}

      private void f4(){

      System.out.println(“f4”);} }

      public class Test2 extends Test1 {

      public void f1(){

      System.out.println(“Test1父類方法f1被覆蓋!”);}

      public static void main(String[] args){ Test2 t=new Test2();t.f1();t.f2();//調(diào)用從父類繼承過(guò)來(lái)的final方法

      t.f3();//調(diào)用從父類繼承過(guò)來(lái)的方法

      //t.f4();//調(diào)用失敗,無(wú)法從父類繼承獲得

      } }

      3、final變量(常量)

      用final修飾的成員變量表示常量,值一旦給定就無(wú)法改變!final修飾的變量有三種:靜態(tài)變量、實(shí)例變量和局部變量,分別表示三種類型的常量。

      從下面的例子中可以看出,一旦給final變量初值后,值就不能再改變了。

      另外,final變量定義的時(shí)候,可以先聲明,而不給初值,這中變量也稱為final空白,無(wú)論什么情況,編譯器都確保空白final在使用之前必須被初始化。但是,final空白在final關(guān)鍵字final的使用上提供了更大的靈活性,為此,一個(gè)類中的final數(shù)據(jù)成員就可以實(shí)現(xiàn)依對(duì)象而有所不同,卻有保持其恒定不變的特征。

      package org.leizhimin;

      public class Test3 {

      private final String S = “final實(shí)例變量S”;

      private final int A = 100;

      public final int B = 90;

      public static final int C = 80;

      private static final int D = 70;

      public final int E;//final空白,必須在初始化對(duì)象的時(shí)候賦初值

      public Test3(int x){ E = x;}

      /**

      * @param args

      */

      public static void main(String[] args){ Test3 t = new Test3(2);

      //t.A=101;//出錯(cuò),final變量的值一旦給定就無(wú)法改變

      //t.B=91;//出錯(cuò),final變量的值一旦給定就無(wú)法改變

      //t.C=81;//出錯(cuò),final變量的值一旦給定就無(wú)法改變

      //t.D=71;//出錯(cuò),final變量的值一旦給定就無(wú)法改變

      System.out.println(t.A);System.out.println(t.B);

      System.out.println(t.C);//不推薦用對(duì)象方式訪問(wèn)靜態(tài)字段

      System.out.println(t.D);//不推薦用對(duì)象方式訪問(wèn)靜態(tài)字段

      System.out.println(Test3.C);System.out.println(Test3.D);

      //System.out.println(Test3.E);//出錯(cuò),因?yàn)镋為final空白,依據(jù)不同對(duì)象值有所不同.System.out.println(t.E);

      Test3 t1 = new Test3(3);

      System.out.println(t1.E);//final空白變量E依據(jù)對(duì)象的不同而不同

      }

      private void test(){

      System.out.println(new Test3(1).A);System.out.println(Test3.C);System.out.println(Test3.D);}

      public void test2(){

      final int a;//final空白,在需要的時(shí)候才賦值

      final int b = 4;//局部常量--final用于局部變量的情形

      final int c;//final空白,一直沒(méi)有給賦值.a = 3;

      //a=4;出錯(cuò),已經(jīng)給賦過(guò)值了.//b=2;出錯(cuò),已經(jīng)給賦過(guò)值了.} }

      4、final參數(shù)

      當(dāng)函數(shù)參數(shù)為final類型時(shí),你可以讀取使用該參數(shù),但是無(wú)法改變?cè)搮?shù)的值。

      public class Test4 {

      public static void main(String[] args){

      new Test4().f1(2);}

      public void f1(final int i){

      //i++;//i是final類型的,值不允許改變的.System.out.print(i);} }

      二、static

      static表示“全局”或者“靜態(tài)”的意思,用來(lái)修飾成員變量和成員方法,也可以形成靜態(tài)static代碼塊,但是Java語(yǔ)言中沒(méi)有全局變量的概念。

      被static修飾的成員變量和成員方法獨(dú)立于該類的任何對(duì)象。也就是說(shuō),它不依賴類特定的實(shí)例,被類的所有實(shí)例共享。只要這個(gè)類被加載,Java虛擬機(jī)就能根據(jù)類名在運(yùn)行數(shù)據(jù)區(qū)的方法區(qū)內(nèi)定找到他們。因此,static對(duì)象可以在它的任何對(duì)象創(chuàng)建之前訪問(wèn),無(wú)需引用任何對(duì)象。

      用public修飾的static成員變量和成員方法本質(zhì)是全局變量和全局方法,當(dāng)聲明它類的對(duì)象時(shí),不生成static變量的副本,而是類的所有實(shí)例共享同一個(gè)static變量。

      static變量前可以有private修飾,表示這個(gè)變量可以在類的靜態(tài)代碼塊中,或者類的其他靜態(tài)成員方法中使用(當(dāng)然也可以在非靜態(tài)成員方法中使用--廢話),但是不能在其他類中通過(guò)類名來(lái)直接引用,這一點(diǎn)很重要。實(shí)際上你需要搞明白,private是訪問(wèn)權(quán)限限定,static表示不要實(shí)例化就可以使用,這樣就容易理解多了。static前面加上其它訪問(wèn)權(quán)限關(guān)鍵字的效果也以此類推。

      static修飾的成員變量和成員方法習(xí)慣上稱為靜態(tài)變量和靜態(tài)方法,可以直接通過(guò)類名來(lái)訪問(wèn),訪問(wèn)語(yǔ)法為: 類名.靜態(tài)方法名(參數(shù)列表...)類名.靜態(tài)變量名

      用static修飾的代碼塊表示靜態(tài)代碼塊,當(dāng)Java虛擬機(jī)(JVM)加載類時(shí),就會(huì)執(zhí)行該代碼塊(用處非常大,呵呵)。

      1、static變量

      按照是否靜態(tài)的對(duì)類成員變量進(jìn)行分類可分兩種:一種是被static修飾的變量,叫靜態(tài)變量或類變量;另一種是沒(méi)有被static修飾的變量,叫實(shí)例變量。兩者的區(qū)別是:

      對(duì)于靜態(tài)變量在內(nèi)存中只有一個(gè)拷貝(節(jié)省內(nèi)存),JVM只為靜態(tài)分配一次內(nèi)存,在加載類的過(guò)程中完成靜態(tài)變量的內(nèi)存分配,可用類名直接訪問(wèn)(方便),當(dāng)然也可以通過(guò)對(duì)象來(lái)訪問(wèn)(但是這是不推薦的)。

      對(duì)于實(shí)例變量,沒(méi)創(chuàng)建一個(gè)實(shí)例,就會(huì)為實(shí)例變量分配一次內(nèi)存,實(shí)例變量可以在內(nèi)存中有多個(gè)拷貝,互不影響(靈活)。

      2、靜態(tài)方法

      靜態(tài)方法可以直接通過(guò)類名調(diào)用,任何的實(shí)例也都可以調(diào)用,因此靜態(tài)方法中不能用this和super關(guān)鍵字,不能直接訪問(wèn)所屬類的實(shí)例變量和實(shí)例方法(就是不帶static的成員變量和成員成員方法),只能訪問(wèn)所屬類的靜態(tài)成員變量和成員方法。因?yàn)閷?shí)例成員與特定的對(duì)象關(guān)聯(lián)!這個(gè)需要去理解,想明白其

      中的道理,不是記憶?。?/p>

      因?yàn)閟tatic方法獨(dú)立于任何實(shí)例,因此static方法必須被實(shí)現(xiàn),而不能是抽象的abstract。

      3、static代碼塊

      static代碼塊也叫靜態(tài)代碼塊,是在類中獨(dú)立于類成員的static語(yǔ)句塊,可以有多個(gè),位置可以隨便放,它不在任何的方法體內(nèi),JVM加載類時(shí)會(huì)執(zhí)行這些靜態(tài)的代碼塊,如果static代碼塊有多個(gè),JVM將按照它們?cè)陬愔谐霈F(xiàn)的先后順序依次執(zhí)行它們,每個(gè)代碼塊只會(huì)被執(zhí)行一次。例如:

      public class Test5 {

      private static int a;

      private int b;

      static {

      Test5.a = 3;

      System.out.println(a);Test5 t = new Test5();t.f();t.b = 1000;

      System.out.println(t.b);}

      static {

      Test5.a = 4;

      System.out.println(a);}

      public static void main(String[] args){

      // TODO 自動(dòng)生成方法存根

      }

      static {

      Test5.a = 5;

      System.out.println(a);}

      public void f(){

      System.out.println(“hhahhahah”);} }

      運(yùn)行結(jié)果: 3 hhahhahah 1000 4 5

      利用靜態(tài)代碼塊可以對(duì)一些static變量進(jìn)行賦值,最后再看一眼這些例子,都一個(gè)static的main方法,這樣JVM在運(yùn)行main方法的時(shí)候可以直接調(diào)用而不用創(chuàng)建實(shí)例。

      4、static和final一塊用表示什么

      static final用來(lái)修飾成員變量和成員方法,可簡(jiǎn)單理解為“全局常量”!

      對(duì)于變量,表示一旦給值就不可修改,并且通過(guò)類名可以訪問(wèn)。

      對(duì)于方法,表示不可覆蓋,并且可以通過(guò)類名直接訪問(wèn)。

      特別要注意一個(gè)問(wèn)題:

      對(duì)于被static和final修飾過(guò)的實(shí)例常量,實(shí)例本身不能再改變了,但對(duì)于一些容器類型(比如,ArrayList、HashMap)的實(shí)例變量,不可以改變?nèi)萜髯兞勘旧恚梢孕薷娜萜髦写娣诺膶?duì)象,這一點(diǎn)在編程中用到很多。

      也許說(shuō)了這么多,反倒把你搞暈了,還是看個(gè)例子吧:

      public class TestStaticFinal {

      private static final String strStaticFinalVar = “aaa”;

      private static String strStaticVar = null;

      private final String strFinalVar = null;

      private static final int intStaticFinalVar = 0;

      private static final Integer integerStaticFinalVar = new Integer(8);

      private static final ArrayList alStaticFinalVar = new ArrayList();

      private void test(){

      System.out.println(“-------------值處理前----------rn”);

      System.out.println(“strStaticFinalVar=” + strStaticFinalVar + “rn”);

      System.out.println(“strStaticVar=” + strStaticVar + “rn”);System.out.println(“strFinalVar=” + strFinalVar + “rn”);

      System.out.println(“intStaticFinalVar=” + intStaticFinalVar + “rn”);

      System.out.println(“integerStaticFinalVar=” + integerStaticFinalVar + “rn”);

      System.out.println(“alStaticFinalVar=” + alStaticFinalVar + “rn”);

      //strStaticFinalVar=“哈哈哈哈”;//錯(cuò)誤,final表示終態(tài),不可以改變變量本身.strStaticVar = “哈哈哈哈”;//正確,static表示類變量,值可以改變.//strFinalVar=“呵呵呵呵”;//錯(cuò)誤, final表示終態(tài),在定義的時(shí)候就要初值(哪怕給個(gè)null),一旦給定后就不可再更改。

      //intStaticFinalVar=2;//錯(cuò)誤, final表示終態(tài),在定義的時(shí)候就要初值(哪怕給個(gè)null),一旦給定后就不可再更改。

      //integerStaticFinalVar=new Integer(8);//錯(cuò)誤, final表示終態(tài),在定義的時(shí)候就要初值(哪怕給個(gè)null),一旦給定后就不可再更改。

      alStaticFinalVar.add(“aaa”);//正確,容器變量本身沒(méi)有變化,但存放內(nèi)容發(fā)生了變化。這個(gè)規(guī)則是非常常用的,有很多用途。

      alStaticFinalVar.add(“bbb”);//正確,容器變量本身沒(méi)有變化,但存放內(nèi)容發(fā)生了變化。這個(gè)規(guī)則是非常常用的,有很多用途。

      System.out.println(“-------------值處理后----------rn”);

      System.out.println(“strStaticFinalVar=” + strStaticFinalVar + “rn”);

      System.out.println(“strStaticVar=” + strStaticVar + “rn”);System.out.println(“strFinalVar=” + strFinalVar + “rn”);

      System.out.println(“intStaticFinalVar=” + intStaticFinalVar + “rn”);

      System.out.println(“integerStaticFinalVar=” + integerStaticFinalVar + “rn”);

      System.out.println(“alStaticFinalVar=” + alStaticFinalVar + “rn”);}

      public static void main(String args[]){

      new TestStaticFinal().test();} }

      運(yùn)行結(jié)果如下:

      -------------值處理前----------strStaticFinalVar=aaa strStaticVar=null strFinalVar=null intStaticFinalVar=0 integerStaticFinalVar=8 alStaticFinalVar=[]-------------值處理后----------strStaticFinalVar=aaa strStaticVar=哈哈哈哈 strFinalVar=null

      intStaticFinalVar=0 integerStaticFinalVar=8 alStaticFinalVar=[aaa, bbb]

      Process finished with exit code 0

      看了上面這個(gè)例子,就清楚很多了,但必須明白:通過(guò)static final修飾的容器類型變量中所“裝”的對(duì)象是可改變的。這是和一般基本類型和類類型變量差別很大的地方。

      第三篇:java中常用關(guān)鍵字總結(jié)

      Java中的關(guān)鍵字總結(jié)

      final 關(guān)鍵字

      1、用final修飾的類不能被繼承,沒(méi)有子類;

      2、用final修飾的方法,方法不能被重寫;

      3、用final修飾變量,變量的值不能被修改,表示常量,(書寫規(guī)范:全部字母都要大寫;多個(gè)單詞,可以使用下劃線(_)分開(kāi);)注意:如果被final修飾的變量是一個(gè)引用類型的數(shù)據(jù),那么通過(guò)這個(gè)引用改變堆空間中的數(shù)據(jù),不會(huì)報(bào)錯(cuò);如果被final修飾的變量是一個(gè)引用類型的數(shù)據(jù),那么通過(guò)這個(gè)引用改變堆空間中的數(shù)據(jù),不會(huì)報(bào)錯(cuò);

      4、final用于成員變量表示該成員變量為常量,不能被修改,必須在變量定義時(shí)賦值。

      5、final用于局部變量表示該局部變量為常量,不能被修改,可以在變量定義時(shí)賦值,也可以先定義變量后賦值。什么時(shí)候用final關(guān)鍵字? 有的時(shí)候不想別人重寫我的方法就使用final關(guān)鍵字修飾該方法;

      static關(guān)鍵字

      1、static用于成員變量表示該變量只有一份,也就是說(shuō)靜態(tài)成員變量屬于類而不屬于某個(gè)具體的類實(shí)例對(duì)象,所有的類實(shí)例對(duì)象共享這個(gè)靜態(tài)成員變量; 靜態(tài)函數(shù)是不需要對(duì)象的,直接可以使用類名來(lái)調(diào)用;

      2、非靜態(tài)函數(shù)可以調(diào)用靜態(tài)函數(shù);靜態(tài)函數(shù)不能調(diào)用非靜態(tài)函數(shù)(非靜態(tài)函數(shù)都是通過(guò)對(duì)象調(diào)用的);靜態(tài)函數(shù)不能使用非靜態(tài)成員變量,但可以使用靜態(tài)成員變量;

      3、靜態(tài)函數(shù)調(diào)用時(shí)不需要對(duì)象的,所以不能使用和對(duì)象有關(guān)的關(guān)鍵字;(this;super;)

      4、構(gòu)造函數(shù)不能使用static修飾(構(gòu)造函數(shù)是創(chuàng)建對(duì)象,開(kāi)辟空間,給所有成員變量賦默認(rèn)值之后,有JVM調(diào)用進(jìn)棧,用來(lái)給對(duì)象的成員變量賦初始值的)static用于類,這里指的是內(nèi)部類,那么在別的地方就可以通過(guò)外部類名來(lái)引用這個(gè)靜態(tài)的內(nèi)部類。

      5、static還可以用于類的代碼塊,叫做靜態(tài)代碼塊,靜態(tài)代碼塊在類加載的時(shí)候就執(zhí)行完畢,而類只加載一次;是在類中獨(dú)立于類成員的static語(yǔ)句塊,可以有多個(gè),位置可以隨便放,它不在任何的方法體內(nèi),JVM加載類時(shí)會(huì)執(zhí)行這些靜態(tài)的代碼塊,如果static代碼塊有多個(gè),JVM將按照它們?cè)陬愔谐霈F(xiàn)的先后順序依次執(zhí)行它們,每個(gè)代碼塊只會(huì)被執(zhí)行一次。什么時(shí)候用static關(guān)鍵字? 不想建立對(duì)象時(shí);對(duì)于公用的成員變量必須使用static關(guān)鍵字修飾才能保證共享;

      private關(guān)鍵字

      1、java中的訪問(wèn)權(quán)限修飾符(作用是控制被修飾的成員的訪問(wèn)權(quán)限);被private修飾的成員,只能在本類中使用;所以被私有的成員需要在外界訪問(wèn),還需要提供一個(gè)公共的方法;

      設(shè)值:set + 變量名(變量名的首字母大寫); 取值:get + 變量名(變量名的首字母大寫);

      2、構(gòu)造函數(shù)私有化,就只能在被類中使用,別的地方調(diào)用不了;單例設(shè)計(jì)模式時(shí)會(huì)用到;

      在開(kāi)發(fā)中,一般類的成員變量都要私有化,然后提供get和set方法;

      interface關(guān)鍵字

      1、interface接口不是一個(gè)類,使用interface聲明;接口沒(méi)有構(gòu)造函數(shù);接口是用來(lái)描述不屬于繼承體系的擴(kuò)展功能的;還可以定義規(guī)則;接口和類之間是實(shí)現(xiàn)關(guān)系,一個(gè)實(shí)現(xiàn)類可以實(shí)現(xiàn)多個(gè)接口;接口和接口之間是繼承關(guān)系,可以多繼承和多重繼承;

      2、接口中可以書寫的內(nèi)容:

      成員變量:只能使用一下修飾符:public static final;也就是說(shuō),接口中的成員變量,都是常量;

      成員函數(shù): 只能使用修飾符:public abstract;也就是說(shuō),接口中的方法,都是公共和抽象的;一般函數(shù)前面的修飾符,推薦public不要省略;

      什么時(shí)候用interface關(guān)鍵字? 對(duì)于繼承體系之外的擴(kuò)展功能需要使用接口來(lái)描述;

      implements關(guān)鍵字

      implements用于實(shí)現(xiàn)接口,需要實(shí)現(xiàn)接口中的所有方法,可以同時(shí)實(shí)現(xiàn)多個(gè)接口。extends關(guān)鍵字

      extends用于繼承父類或父接口,繼承父類時(shí)只能是單繼承。

      class關(guān)鍵字

      class用于聲明類,訪問(wèn)權(quán)限可以是public或者默認(rèn)權(quán)限,還可以指定為abstract、final,訪問(wèn)權(quán)限對(duì)于頂層類和內(nèi)部類的限制是不同的。

      instanceof關(guān)鍵字

      1、比較運(yùn)算符,運(yùn)算符左邊是一個(gè)指向一個(gè)對(duì)象的引用(左邊就是一個(gè)變量名),右邊是一個(gè)類名,運(yùn)算符表示的意思就是:判斷左邊的對(duì)象的類型是不是右邊的類;

      2、使用instanceof關(guān)鍵字,可以實(shí)時(shí)判斷一個(gè)對(duì)象的類型,就可以避免強(qiáng)制類型轉(zhuǎn)換中容易出現(xiàn)的類型轉(zhuǎn)換異常。

      abstract關(guān)鍵字

      1、abstract用于類表示這個(gè)類為抽象類,不能實(shí)例化。

      2、抽象類,必須由子類去繼承,繼承的子類必須實(shí)現(xiàn)父類中所有的抽象方法,否則子類也是抽象的;

      3、抽象函數(shù)必須放在抽象類中;抽象類中除了抽象函數(shù),還可以定義所有一般類中可以定義的成員;

      4、抽象類中可以不書寫抽象方法;抽象類中必須有構(gòu)造方法;抽象類一定是父類;

      5、抽象類是父類,用來(lái)描述所有子類的共性信息的,只是描述的有些功能是不具體的;

      6、abstract用于方法表示這個(gè)方法為抽象方法,只需聲明,不用實(shí)現(xiàn),由子類實(shí)現(xiàn),抽象方法不能用private和static關(guān)鍵字。什么時(shí)候用abstract關(guān)鍵字? 當(dāng)事物的功能描述不清,只能表示有這個(gè)功能時(shí),就應(yīng)該使用抽象修飾該功能,這個(gè)功能就是抽象的功能;如果一個(gè)類中有抽象的功能,那么這個(gè)類也是抽象的類;不想實(shí)例化這個(gè)類(包括自己也不行),但是允許別人繼承,也可以使用抽象類。

      this關(guān)鍵字

      1、表示自身所屬對(duì)象的引用;哪個(gè)對(duì)象調(diào)用this,this就指向哪個(gè)對(duì)象;

      2、Java關(guān)鍵字this只能用于方法方法體內(nèi)。當(dāng)一個(gè)對(duì)象創(chuàng)建后,Java虛擬機(jī)(JVM)就會(huì)給這個(gè)對(duì)象分配一個(gè)引用自身的指針,這個(gè)指針的名字就是this。因此,this只能在類中的非靜態(tài)方法中使用,靜態(tài)方法和靜態(tài)的代碼塊中絕對(duì)不能出現(xiàn)this.什么時(shí)候用this關(guān)鍵字?

      1、通過(guò)this調(diào)用另一個(gè)構(gòu)造方法,用法:this(參數(shù)列表),這個(gè)僅僅在類的構(gòu)造方法中,別的地方不能這么用。如果一個(gè)構(gòu)造函數(shù)中有this()語(yǔ)句,就沒(méi)有隱式三步,隱式三步在this語(yǔ)句調(diào)用的那個(gè)構(gòu)造函數(shù)中,且this語(yǔ)句必須在第一行的位置;

      2、函數(shù)參數(shù)或者函數(shù)中的局部變量和成員變量同名的情況下,成員變量被私有化,此時(shí)要訪問(wèn)成員變量則需要用“this.成員變量名”的方式來(lái)引用成員變量。(用來(lái)區(qū)分成員變量和局部變量)

      3、在函數(shù)中,需要引用該函所屬類的當(dāng)前對(duì)象時(shí)候,直接用this。

      super關(guān)鍵字

      1、表示父類;可以在子類中調(diào)用父類的非私有成員和構(gòu)造函數(shù);

      2、調(diào)用方法:

      調(diào)用父類構(gòu)造函數(shù):super(參數(shù));(父類中沒(méi)有無(wú)參構(gòu)造函數(shù)在父類中添

      加一個(gè)無(wú)參構(gòu)造;在子類中手動(dòng)調(diào)用有參構(gòu)造函數(shù))調(diào)用父類成員變量:super.變量名; 調(diào)用父類成員函數(shù):super.函數(shù)名(參數(shù));

      3、super關(guān)鍵和this作用類似,是被私有的成員變量或者成員方法變?yōu)榭梢?jiàn),或者說(shuō)用來(lái)引用被私有的成員變量和成員方法,不過(guò)super是用在子類中,目的是訪問(wèn)直接父類中被屏蔽的成員.什么時(shí)候用super關(guān)鍵字?

      如果父類中沒(méi)有無(wú)參構(gòu)造函數(shù)是,需要在子類中用super調(diào)用有參構(gòu)造函數(shù);

      第四篇:關(guān)于static的總結(jié)

      static局部變量:

      1、改變了變量的存儲(chǔ)方式(從棧區(qū)變成全局區(qū)),即改變了變量的生命周期。

      2、static局部變量只初始化一次,沒(méi)有顯示初始化時(shí)默認(rèn)為0,在某個(gè)函數(shù)中,下一次的值依據(jù)上一次的值。

      static全局變量

      1、全局變量前面加上static,存儲(chǔ)方式?jīng)]有改變。

      2、static全局變量改變了作用域,限制了使用范圍,只能在定義了該變量的源文件有效,在同一源程序的不同源文件中不能使用,即本地的全局變量。非靜態(tài)全局變量在同一源程序的不同源文件中都是有效的。

      3、static全局變量只初始化一次,沒(méi)有顯示初始化時(shí)默認(rèn)為0。

      static函數(shù)

      1、static函數(shù)限制了使用范圍,只能在當(dāng)前源文件中使用,相當(dāng)于內(nèi)部函數(shù)。c++類中,為了避免不同類中相同名字函數(shù)的重定義錯(cuò)誤,在函數(shù)前面加上static。

      2、static函數(shù)在內(nèi)存中只保存一份,普通函數(shù)在每個(gè)被調(diào)用中維持一份拷貝

      注:引用一個(gè)已經(jīng)定義過(guò)的全局變量:

      1、引用頭文件

      將全局變量寫錯(cuò)了,將會(huì)在編譯的時(shí)候報(bào)錯(cuò)。

      在不同的.c文件中以static形式聲明同名的全局變量,在不同的.c文件中聲明同名 全局變量時(shí),只能有一個(gè).c文件中對(duì)其賦值,否則鏈接出錯(cuò)。

      2、extern關(guān)鍵字

      將全局變量寫錯(cuò)了,編譯的時(shí)候不會(huì)報(bào)錯(cuò),鏈接的時(shí)候會(huì)報(bào)錯(cuò)。

      第五篇:Java集合框架使用總結(jié)

      前言:

      本文是對(duì)Java集合框架做了一個(gè)概括性的解說(shuō),目的是對(duì)Java集合框架體系有個(gè)總體認(rèn)識(shí),如果你想學(xué)習(xí)具體的接口和類的使用方法,請(qǐng)參看Java API文檔。

      一、概述

      數(shù)據(jù)結(jié)構(gòu)對(duì)程序設(shè)計(jì)有著深遠(yuǎn)的影響,在面向過(guò)程的C語(yǔ)言中,數(shù)據(jù)庫(kù)結(jié)構(gòu)用struct來(lái)描述,而在面向?qū)ο蟮木幊讨?,?shù)據(jù)結(jié)構(gòu)是用類來(lái)描述的,并且包含有對(duì)該數(shù)據(jù)結(jié)構(gòu)操作的方法。

      在Java語(yǔ)言中,Java語(yǔ)言的設(shè)計(jì)者對(duì)常用的數(shù)據(jù)結(jié)構(gòu)和算法做了一些規(guī)范(接口)和實(shí)現(xiàn)(具體實(shí)現(xiàn)接口的類)。所有抽象出來(lái)的數(shù)據(jù)結(jié)構(gòu)和操作(算法)統(tǒng)稱為Java集合框架(Java Collection Framework)。

      Java程序員在具體應(yīng)用時(shí),不必考慮數(shù)據(jù)結(jié)構(gòu)和算法實(shí)現(xiàn)細(xì)節(jié),只需要用這些類創(chuàng)建出來(lái)一些對(duì)象,然后直接應(yīng)用就可以了。這樣就大大提高了編程效率。

      二、集合框架的層次結(jié)構(gòu)

      Collection是集合接口

      |————Set子接口:無(wú)序,不允許重復(fù)。

      |————List子接口:有序,可以有重復(fù)元素

      區(qū)別:Collections是集合類

      Set和List對(duì)比:

      Set:檢索元素效率低下,刪除和插入效率高,插入和刪除不會(huì)引起元素位置改變。

      List:和數(shù)組類似,List可以動(dòng)態(tài)增長(zhǎng),查找元素效率高,插入刪除元素效率低,因?yàn)闀?huì)引起其他元素位置改變。

      Set和List具體子類:

      Set

      |————HashSet:以哈希表的形式存放元素,插入刪除速度很快。

      List

      |————ArrayList:動(dòng)態(tài)數(shù)組

      |————LinkedList:鏈表、隊(duì)列、堆棧。

      Array和java.util.Vector

      Vector是一種老的動(dòng)態(tài)數(shù)組,是線程同步的,效率很低,一般不贊成使用。

      三、Iterator迭代器(接口)

      Iterator是獲取集合中元素的過(guò)程,實(shí)際上幫助獲取集合中的元素。

      迭代器代替了 Java Collections Framework 中的 Enumeration。迭代器與枚舉有兩點(diǎn)不同:

      迭代器允許調(diào)用方利用定義良好的語(yǔ)義在迭代期間從迭代器所指向的集合移除元素。方法名稱得到了改進(jìn)。

      Iterator僅有一個(gè)子接口ListIterator,是列表迭代器,允許程序員按任一方向遍歷列表、迭代期間修改列表,并獲得迭代器在列表中的當(dāng)前位置。ListIterator 沒(méi)有當(dāng)前元素;它的光標(biāo)位置 始終位于調(diào)用 previous()所返回的元素和調(diào)用 next()所返回的元素之間。在長(zhǎng)度為 n 的列表中,有 n+1 個(gè)有效的索引值,從 0 到 n(包含)。

      四、集合框架之外的Map接口

      Map將鍵映射到值的對(duì)象。一個(gè)映射不能包含重復(fù)的鍵;每個(gè)鍵最多只能映射一個(gè)值。Map接口是Dictionary(字典)抽象類的替代品。

      Map 接口提供三種collection 視圖,允許以鍵集、值集合或鍵-值映射關(guān)系集的形式查看

      某個(gè)映射的內(nèi)容。映射的順序 定義為迭代器在映射的 collection 視圖中返回其元素的順序。某些映射實(shí)現(xiàn)可明確保證其順序,如 TreeMap 類;某些映射實(shí)現(xiàn)則不保證順序,如 HashMap 類。

      有兩個(gè)常見(jiàn)的已實(shí)現(xiàn)的子類:

      HashMap:基于哈希表的 Map 接口的實(shí)現(xiàn)。此實(shí)現(xiàn)提供所有可選的映射操作,并允許使用 null 值和 null 鍵。(除了不同步和允許使用 null 之外,HashMap 類與 Hashtable 大致相同。)此類不保證映射的順序,特別是它不保證該順序恒久不變。

      TreeMap:它實(shí)現(xiàn)SortedMap 接口的基于紅黑樹(shù)的實(shí)現(xiàn)。此類保證了映射按照升序順序排列關(guān)鍵字,根據(jù)使用的構(gòu)造方法不同,可能會(huì)按照鍵的類的自然順序 進(jìn)行排序(參見(jiàn) Comparable),或者按照創(chuàng)建時(shí)所提供的比較器進(jìn)行排序。

      Hashtable:此類實(shí)現(xiàn)一個(gè)哈希表,該哈希表將鍵映射到相應(yīng)的值。任何非 null 對(duì)象都可以用作鍵或值。

      五、線程安全類

      在集合框架中,有些類是線程安全的,這些都是JDK1.1中的出現(xiàn)的。在JDK1.2之后,就出現(xiàn)許許多多非線程安全的類。

      下面是這些線程安全的同步的類:

      Vector:就比ArrayList多了個(gè)同步化機(jī)制(線程安全)。

      Statck:堆棧類,先進(jìn)后出。

      Hashtable:就比HashMap多了個(gè)線程安全。

      Enumeration:枚舉,相當(dāng)于迭代器。

      除了這些之外,其他的都是非線程安全的類和接口。

      線程安全的類其方法是同步的,每次只能一個(gè)訪問(wèn)。是重量級(jí)對(duì)象,效率較低。對(duì)于非線程

      安全的類和接口,在多線程中需要程序員自己處理線程安全問(wèn)題。

      六、其他一些接口和類介紹

      Dictionary和Hashtable類:

      Dictionary提供鍵值映射的功能,是個(gè)抽象類。一般使用它的子類HashTable類。遍歷Hashtable類要用到枚舉。

      Properties類

      Properties 繼承于 Hashtable,Properties 類表示了一個(gè)持久的屬性集。Properties 可保存在流中或從流中加載。屬性列表中每個(gè)鍵及其對(duì)應(yīng)值都是一個(gè)字符串。一般可以通過(guò)讀取properties配置文件來(lái)填充Properties對(duì)象。

      下載Java關(guān)鍵字final、static使用總結(jié)(共5篇)word格式文檔
      下載Java關(guān)鍵字final、static使用總結(jié)(共5篇).doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        VB關(guān)鍵字總結(jié)(★)

        1.編譯命令關(guān)鍵字總結(jié) 作用關(guān)鍵字 定義編譯常數(shù)。#Const 編譯程序碼中的選擇區(qū)塊。 #If...Then...#Else 計(jì)算當(dāng)前凈值。NPV, PV 7.控制流關(guān)鍵字總結(jié) 作用關(guān)鍵字 分支。 GoSu......

        實(shí)習(xí)個(gè)人總結(jié) final

        實(shí)習(xí)個(gè)人總結(jié) 教育實(shí)習(xí)是提高師范教育專業(yè)學(xué)生素質(zhì)和技能的重要途徑之一。通過(guò)教育實(shí)習(xí)可以進(jìn)一步培養(yǎng)鍛煉學(xué)生理論聯(lián)系實(shí)際和分析問(wèn)題、解決問(wèn)題的能力,使學(xué)生了解中學(xué)實(shí)際,......

        java總結(jié)[共5篇]

        將數(shù)據(jù)成員聲明為靜態(tài)的,那么每次調(diào)用的時(shí)候,靜態(tài)成員的值并不會(huì)因之而改變。 如果想在主函數(shù)調(diào)用函數(shù)(不是有對(duì)象進(jìn)行調(diào)用),比如while(test),那么test必須聲明為靜態(tài)的。 構(gòu)造器,在c......

        java實(shí)用總結(jié)(共5篇)

        java是一種解釋型語(yǔ)言,但它的源文件要編譯成java字節(jié)碼即.class文件,然后在java虛擬機(jī)里運(yùn)行. jsp是一種WEB開(kāi)發(fā)技術(shù),它在特定的WEB容器里運(yùn)行,WEB容器先把jsp轉(zhuǎn)化成Servlet文......

        VB關(guān)鍵字[共5篇]

        VB關(guān)鍵字總結(jié) 1.編譯命令關(guān)鍵字總結(jié) 作用 關(guān)鍵字 定義編譯常數(shù)。 #Const 編譯程序碼中的選擇區(qū)塊。 #If...Then...#Else 2.變量與常數(shù)關(guān)鍵字總結(jié) 作用 指定值。 Let 聲......

        使用java實(shí)現(xiàn)面向?qū)ο缶幊炭偨Y(jié)

        第一章:抽象和封裝 1,為什么使用面向?qū)ο?1.1:萬(wàn)事萬(wàn)物皆對(duì)象,面向?qū)ο缶褪遣捎谩艾F(xiàn)實(shí)模擬”的方法設(shè)計(jì)和開(kāi)發(fā)程序。 2,使用面向?qū)ο筮M(jìn)行設(shè)計(jì) 2.1:面向?qū)ο笤O(shè)計(jì)三部曲 1,發(fā)現(xiàn)類。 2......

        網(wǎng)絡(luò)搜索中,關(guān)鍵字的正確使用

        《網(wǎng)絡(luò)搜索中,關(guān)鍵字的正確使用》 【教案背景】 隨著網(wǎng)絡(luò)時(shí)代的到來(lái),互聯(lián)網(wǎng)事業(yè)迅猛發(fā)展,上網(wǎng)人數(shù)急劇增加,里面包括了相當(dāng)數(shù)量的小學(xué)生。小學(xué)生在這個(gè)包羅萬(wàn)象、生動(dòng)活潑的“虛......

        JAVA總結(jié)專題

        在這忙忙碌碌的這段時(shí)間里,經(jīng)過(guò)老師的輔導(dǎo),迅速的將一點(diǎn)沒(méi)有學(xué)的JAVA基礎(chǔ)搞定了!有了基礎(chǔ)學(xué)習(xí)還是好,萬(wàn)事開(kāi)頭難這句話說(shuō)的太對(duì)了,學(xué)計(jì)算機(jī)語(yǔ)言我覺(jué)得記憶好的方法就是多打代碼,課......