<em id="0a85b"><option id="0a85b"></option></em>

<abbr id="0a85b"></abbr>

      <nobr id="0a85b"></nobr>
        <tr id="0a85b"></tr>
        9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
        學習啦>知識大全>知識百科>百科知識>

        Java中static 和final的區別

        時間: 映芳735 分享

          Java中用final定義的變量可以看做一個常量,那么static與final之間有什么區別呢?下面小編告訴你。

          static 和final的區別

          一、static

          什么情況下我們要使用static呢?

          1、只想用一個存儲區域來保存一個特定的數據——無論要創建多少個對象,甚至根本不創 建對象。

          2、我們需要一個特殊的方法,它沒有與這個類的任何對象關聯。也就是說,即使沒有創建對象,也需要一個能調用的方法。

          為滿足這兩方面的要求,可使用static(靜態)關鍵字。

          下面我先舉個例子:

          一旦將什么東西設為static,數據或方法就不會同那個類的任何對象實例聯系到一起。所以盡管從未創建那個類的一個對象,仍能調用一個static方法,或訪問一些static數據。

          為了將數據成員或方法設為static,只需在定義前置和這個關鍵字即可。

          例如,下述代碼能生成一個static數據成員,并對其初始化:

          class StaticTest {

          Static int i = 47;

          }

          現在,盡管我們制作了兩個StaticTest對象,但它們仍然只占據StaticTest.i的一個存儲空間。這兩個對象都共享同樣的i。請考察下述代碼:

          StaticTest st1 = new StaticTest();

          StaticTest st2 = new StaticTest();

          此時,無論st1.i還是st2.i都有同樣的值47,因為它們引用的是同樣的內存區域。

          有兩個辦法可引用一個static變量。正如上面展示的那樣,可通過一個對象命名它,如st2.i。亦可直接用它的類名引用,而這在非靜態成員里是行不通的(最好用這個辦法引用static變量,因為它強調了那個變量的“靜態”本質)。

          StaticTest.i++;

          其中,++運算符會使變量增值。此時,無論st1.i還是st2.i的值都是48。

          類似的邏輯也適用于靜態方法。既可象對其他任何方法那樣通過一個對象引用靜態方法,亦可用特殊的語法格式“類名.方法()”加以引用。靜態方法的定義是類似的:

          class StaticFun {

          static void incr() { StaticTest.i++; }

          }

          從中可看出,StaticFun的方法incr()使靜態數據i增值。可用典型的方法調用incr():

          StaticFun sf = new StaticFun();

          sf.incr();

          或者,由于incr()是一種靜態方法,所以可通過它的類直接調用:

          StaticFun.incr();

          對方法來說,static一項重要的用途就是幫助我們在不必創建對象的前提下調用那個方法。

          舉簡單一例如下:

          public class TestStatic {

          public static void main(String args[]){

          PhoneCard mycard_1 = new PhoneCard();//創建第一張卡對象

          PhoneCard mycard_2 = new PhoneCard();//創建第二張卡對象

          mycard_1.addFee = 0.8;//給第一張卡的附加費addFee賦值為0.8

          //注意到我們沒有給第二張卡賦值

          System.out.println("第一張卡的附加費:" + mycard_1.addFee);

          System.out.println("第二張卡的附加費:" + mycard_2.addFee);

          //發現沒有?輸出結果中第二張卡的附加費也是0.8 了。

          System.out.println("卡的附加費:" + PhoneCard.addFee);

          //該句的打印輸出表明卡類的附加費都是0.8

          }

          }

          class PhoneCard{

          static double addFee;//靜態域addFee

          }

          該例創建了兩個類,PhoneCard類只定義了一個變量,TestStatic類里創建了兩個PhoneCard類對象,并給其中的一個對象的附加費addFee賦值,而另一個對象沒賦值。

          由上例可以看出,靜態域保存在類的公共存儲單元,而不是保存在對象的存儲單元內。

          static 修飾方法時是同理。

          二、final

          final可修飾類、域(變量和常量)、方法 (而static不修飾類)

          1、final修飾類,表示該類不可被繼承。

          如定義了一個final類:

          final class SnowBird{

          int i;

          String s;

          static void fly(){

          System.out.println("snowbird is flying");

          }

          }

          //現在定義一個類,試圖繼承SnowBird類:

          public class Bird extends SnowBird{

          public static void main(String[] args){

          SnowBird.fly();

          }

          }

          把上面的兩個類拷貝到文件中,文件名保存為Bird.java ,現在編譯看看會出現什么問題?

          出錯信息是:cannot inherit from final SnowBird

          表明final 類不可被繼承。

          那么,final修飾變量是怎么樣呢?

          2、final修飾變量

          程序中經常需要定義各種類型的常量,如:3.24268,"201"等等。這時候我們就用final來修飾一個類似于標志符名字。如:

          final String connectNumber = "201";

          final表明 connectNumber是一個常量,它的取值在整個過程都不會改變。

          如果把final 去掉則connectNumber就成為變量了。

          有時我們為了節省空間,常量通常聲明為 static .因為如上所說的 static 用的是類的內存空間。

          3、修飾方法:

          final修飾的方法,稱為最終方法。最終方法不可被子類重新定義,即不可被覆蓋。

          如父類定義了public void fly(){ ....}

          則子類就不能定義

          public void fly(){。。。。。。}

          但注意覆蓋與重載的區別。不能被覆蓋并不是不能被重載,如你還可以定義

          public void fly(int i){.....},

          舉個例子如下:

          class FinalValue {

          static final int i = 1;

          final void fly(){

          System.out.println("SnowBird is flying over FinalValue ");

          }

          }

          class TestFinal extends FinalValue {

          int i = 2;

          void fly(){

          System.out.println("SnowBird is flying over TestFinal");

          System.out.println("In class FinalValue static Final i = "+ FinalValue.i);

          System.out.println("In class TestFinal i = "+ i);

          }

          void fly(String s){

          System.out.println("fly("+ s + ")");

          }

          }

          public class Test {

          public static void main(String args[]){

          TestFinal tf = new TestFinal();

          tf.fly();

          tf.fly("ok");

          System.out.println(tf.i);

          }

          }

          把上面的程序保存為Test.java編譯看看,出現什么錯誤?

          然后,把TestFinal類中的 void fly(){ ... } 注解掉

          即 如下

          /* void fly(){

          System.out.println("SnowBird is flying over TestFinal");

          System.out.println("In class FinalValue static Final i = "+ FinalValue.i);

          System.out.println("In class TestFinal i = "+ i);

          }*/

        Java中static 和final的區別

        Java中用final定義的變量可以看做一個常量,那么static與final之間有什么區別呢?下面小編告訴你。 static 和final的區別 一、static 什么情況下我們要使用static呢? 1、只想用一個存儲區域來保存一個特定的數據無論要創建多少個對象,甚
        推薦度:
        點擊下載文檔文檔為doc格式

        精選文章

        • 注冊會計師報考條件
          注冊會計師報考條件

          從會計職業規劃的角度來說,注冊會計師是每個會計學子的終極目標。其豐厚的薪資和高檔的辦公樓深深吸引著會計人的心。下面小編就來說說注冊會計師

        • Java中對象和引用的具體區別
          Java中對象和引用的具體區別

          初學Java的人,可能在在很長一段時間里,對對象和引用的基本概念都是很模糊的,老是分不清楚兩者的區別。下面,學習啦小編給你整理一些有關對象和引

        • 會計專業受捧的原因
          會計專業受捧的原因

          具小編了解,目前會計學可謂是人氣最高的一門學科之一,有學妹告訴我,她們學校,會計專業開設8個班,總人數300多人,幾乎達到一個系的人數,那么為

        • Java中int和integer的區別
          Java中int和integer的區別

          Java中有兩個數據類型,一個是int,一個是integer,這兩個數據類型是一樣的嗎?其實,它們是不同的數據類型,具體有哪些不同。下面,小編來跟大家分享

        537534 主站蜘蛛池模板: 国产中文字幕一区二区| 日韩一卡二卡三卡四卡五卡| 日本一本正道综合久久dvd| 亚洲日韩AV秘 无码一区二区 | 国产精品无码在线看| 国产精品三级黄色小视频| 天堂影院一区二区三区四区| 熟妇人妻av中文字幕老熟妇 | 粉嫩一区二区三区国产精品| 国产免费久久精品44| 亚洲第一无码AV无码专区| 91精品国产吴梦梦在线观看永久 | 亚洲AV国产福利精品在现观看| 欧美成人片在线观看| 人妻激情视频一区二区三区| 久久av无码精品人妻出轨| 国产日女人视频在线观看| 国产11一12周岁女毛片| 一二三三免费观看视频| 久久精品人人槡人妻人人玩| 国产av一区二区三区天堂综合网| 久久天天躁狠狠躁夜夜婷 | 女同亚洲精品一区二区三| 欧美成人午夜在线观看视频| 成人无码无遮挡很H在线播放| 亚洲精品毛片一区二区| 欧美午夜精品久久久久久浪潮| 自拍偷自拍亚洲精品情侣| 一区二区三区在线观看日本视频 | 日韩精品三区二区三区| 日韩中文字幕v亚洲中文字幕| 国产嫩草精品网亚洲av| 国产精品久久久久无码网站| 成人福利国产午夜AV免费不卡在线| 免费夜色污私人影院在线观看| 一道本AV免费不卡播放| 韩国V欧美V亚洲V日本V| 国产网友愉拍精品| 国产精品第二页在线播放| 国产肉丝袜在线观看| 日本精品videossex黑人|