Java基礎 構造對象初始設定變數的順序淺見

來源:互聯網
上載者:User
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner cin = new Scanner(System.in);A b = new B(8);System.out.println(A.aa + " " + B.bb);}}class A {int a = f();static int aa = sf();static {aa = 11;System.out.println("A kuai static " + aa);}{aa = 111;a = 1;System.out.println("A kuai " + a);}A() {System.out.println("A constract begin. " + a);}A(int r) {System.out.println("A constract begin. " + a);}int f() {System.out.println("A kuai f");return 2;}static int sf() {System.out.println("A kuai sf");return 22;}}class B extends A {static int bb = sfun();int b = fun();static {bb = 44;System.out.println("B kuai static " + bb);}{b = 4;System.out.println("B kuai " + b);}B() {System.out.println("B constract begin. " + b);}B(int r) {System.out.println("B constract begin." + b);}int fun() {System.out.println("B kuai fun");return 3;}static int sfun() {System.out.println("B kuai sfun");return 33;}}/*A kuai sfA kuai static 11B kuai sfunB kuai static 44A kuai fA kuai 1A constract begin. 1B kuai funB kuai 4B constract begin.4111 44*/

 初始化順序:

父類的靜態變數、子類的靜態變數、父類的執行個體變數、父類的構造方法、子類的執行個體變數、子類的構造方法

其中靜態變數的初始化:

1)。定義時,2)。靜態塊;初始化順序按照他們在代碼中的順序初始化;

執行個體變數的初始化:

1)。定義時,2)。靜態塊,3)。構造方法;

其中1、2先於3)執行,對於1、2按照其在代碼中的順序執行。

都是先定義,開闢記憶體,賦給其初始值(null,0等),最後按照指派陳述式賦值,就是最終的值。

 

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner cin = new Scanner(System.in);System.out.println(A.sf());}}class A {static A Aa = new A(2);static int aa = 11;int a = 1;static {System.out.println("static " + aa);}{System.out.println("A kuai " + a);}A() {sf();System.out.println("A constract begin. " + a + " " + aa + " " + " "+ sf());}A(int r) {sf();System.out.println("A constract begin. " + a + " " + aa + " " + " "+ sf());}int f() {System.out.println("A kuai f " + a);return a;}static int sf() {System.out.println("A kuai sf " + aa);return aa;}}/*A kuai 1A kuai sf 0A kuai sf 0A constract begin. 1 0  0static 11A kuai sf 1111 */

A kuai 1

為什麼會輸出來呀?為什麼靜態變數是0,而執行個體變數卻有值呀! 

這樣是不是和上面的描述有了矛盾呀?不懂?請路過的大牛指導!謝謝!

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.