一道簡單有趣的java題 輸出順序的問題

2021-06-01 22:55:06 字數 956 閱讀 2631

sep 8th, 2013 | comments

這道題來自 stackoverflow。

有如下**,求其輸出內容。

123

4567

891011

1213

14

public

class

test

static

public

static

void

main

(string

args)}

作為靜態區段的語句,容易知道,3 是會最先出現的。容易弄錯的一點是 到底是 1 和 2 的出現順序。

我們可以參考位元組碼來分析。在 eclipse 中使用 asm bytecode 外掛程式,得到相應的位元組碼:

123

4567

891011

1213

1415

1617

1819

2021

2223

2425

2627

2829

30

// class version 50.0 (50)  

// access flags 0x21

public

class

test

正如我們所想,3 是被放在類構造方法中,這是類的初始化函式,固然在類的初始化時出現。

而在構造方法中先出現 2,之後才是 1。問題的核心集中到物件構造方法的指令順序問題。實際上,在物件構造方法中,會先執行一些隱性的指令,比如父類的構造方法、{}區段的內容等,然後在執行顯性的構造方法中的指令:

一道有趣的演算法題

日前在網上看到一道演算法題。頗有意思,也細細的研究一番。現將該題發布於此,和各位交流一下。同時,本文也是筆者首次使用office2007的部落格功能,看看效果怎麼樣。某幢大樓有100層。你手裡有兩顆一模一樣的玻璃珠。當你拿著玻璃珠在某一層往下扔的時候,一定會有兩個結果,玻璃珠碎了或者沒碎。這幢大樓有...

一道有趣的構造題

題意 以下是三道證明題,均在平面上進行討論。以下 x0 y0 x1 y1 x 0,y 0 x 1,y 1 x0 y 0 x1 y1 表示一條從 x0 y0 x 0,y 0 x0 y 0 到 x1 y1 x 1,y 1 x1 y 1 的直線。其中,一條直線與乙個點集合相交表示這條直線上存在乙個點,這個...

一道有趣的非同步題

const delay ms new promise resolve settimeout resolve,ms const subflow createflow delay 1000 then log c createflow log a log b subflow,delay 1000 then...