日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

问题与思考3

發布時間:2023/12/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 问题与思考3 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

靜態初始化塊的執行順序是:

? ? 先初始化父類(最高層次的)的靜態初始化塊,父類的無參構造器,在進行子類的靜態初始化塊,子類的無參構造器;

然后是父類的普通初始化塊,子類的普通初始化塊;父類的帶參構造器,子類的帶參構造器。

靜態初始化塊只執行一次。?創建子類型的對象時,也會導致父類型的靜態初始化塊的執行。

?

可以查詢創建了多少個類

public class Test{

??? public static void main( String args[]){

??????? Test a= new Test();

??????? a.OutputInformation();

??????? Test b= new Test();

??????? b.OutputInformation();

??????? Test c= new Test();

??????? c.OutputInformation();

??????? Test d= new Test();

??????? d.OutputInformation();

??? }

?

??????? static int num=0;

??????? public Test(){

?????????? num++;

??????? }

??????? public void OutputInformation(){

?????????? System.out.println("已經創建了"+num+"個對象!");

??????? }

??? }

?

思考:

?

一、對象變量也可以直接使用“==”判等嗎?

運行以下代碼將得到什么結果

?

運行結果

?

對象變量在比較是比較多是兩個變量的地址,所以無法對兩個變量內容直接進行比較,但是可以重寫調用基類中的equals();方法。

一、以下代碼無法編譯,哪里出錯了

運行結果

未定義函數Foo();如果類提供了一個自定義的構造方法,將導致系統不再提供默認構造方法。

?

三、如果一個類中既有初始化塊,又有構造方法,同時還設定了字段的初始值,誰說了算?

?

?

?

運行結果

可以在類中使用“{”和“}”將語句包圍起來,直接將其作為類的成員。類的這種“沒有名字”的“成員”,多用于初始化類的字段。

1)所有類的變量都默認初始化null,數字類的原始數據類型默認初始化為0。

2)執行類成員定義的默認值或初始化塊,優先于最新的那個,如上式的100。

3)執行類的構造函數,有多個構造函數,通過參數區分執行,創建類的對象時,就會立即執行。因此,適合于封裝那些“對象創建時必須執行的代碼”。

四、請運行TestStaticInitializeBlock.java示例,觀察輸出結果,總結出“靜態初始化塊的執行順序”。

運行結果

  • 所有的靜態初始化塊都優先執行,其次才是非靜態的初始化塊和構造函數,它們的執行順序是:
  • 父類的靜態初始化塊
  • 子類的靜態初始化塊
  • 父類的初始化塊
  • 父類的構造函數
  • 子類的初始化塊
  • 子類的構造函
  • ?

    靜態初始化塊的輸出只出現了一次,也就是說每個類的靜態初始化塊都只在第一次實例化該類對象時執行一次。

    五、

    如何在靜態方法中訪問類的實例成員?

    public class Example

    {

    ?int x = 3;//類的實例變量,初始化值為3

    ?static int? y = 4;//類的靜態變量,初始化值為4

    ?public static void method()//靜態方法

    ? {??

    ?? System.out.println("實例變量x = " + new Example().x);//在靜態方法中訪問類的實例變量需首先進行類的實例化

    ?? System.out.println("靜態變量y = " + y);//在靜態方法中可直接訪問類的靜態變量

    ? }

    ?

    ?public static void main(String[] args)

    ??? {

    ???????? Example.method();

    ???????? Example ex = new Example();

    ?? ?????System.out.println("x = " + ex.x);

    ??? }

    }

    在外部調用靜態方法時,可以使用"類名.方法名"的方式,也可以使用"對象名.方法名"的方式。而實例方法只有后面這種方式。也就是說,調用靜態方法可以無需創建對象。 靜態方法在訪問本類的成員時,只允許訪問靜態成員(即靜態成員變量和靜態方法),而不允許訪問實例成員變量和實例方法;實例方法則無此限制

    ?

    轉載于:https://www.cnblogs.com/wjwjs/p/7700688.html

    總結

    以上是生活随笔為你收集整理的问题与思考3的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。