記錄一次別人的面試題
阿新 • • 發佈:2018-11-22
1. 下面程式的執行結果是什麼?
static class HelloA { public HelloA() { System.out.println("HelloA"); } { System.out.println("I m A class"); } static { System.out.println("static A"); } } static class HelloB extends HelloA { public HelloB() { System.out.println("HelloB"); } { System.out.println("I m B class"); } static{ System.out.println("static B"); } public static void main(String[] args) { new HelloB(); } }
這個考察的是類的初始化順序,一般是父類的靜態變數,靜態程式碼塊->子類的靜態成員,靜態程式碼塊->父類的成員變數->父類的初始化塊(就是直接用大括號擴起來的,平時不常見)->父類的建構函式->子類的成員變數->子類的初始化塊->子類的建構函式
執行結果如下:
static A
static B
I m A class
HelloA
I m B class
HelloB
2.用最有效率的方法計算5*32
我能想到的只有使用位移了
5 << 5
測試一下
int n1 = 5 * 32; int n2 = 5 << 5; System.out.println(n1); System.out.println(n2);
執行結果
160
160