1. 程式人生 > >java程序員面試金典--i++

java程序員面試金典--i++

static 分配 順序 system 靜態成員 fun blog -i 局部變量

下列程序的輸出結果是什麽

public class program2 {
    static {
        int x = 5;
    }
    static int x,y;
    public static void main(String[] args) {
        x--;
        myMethod();
        System.out.println(x + y++ + x);
    }

    private static void myMethod() {
        y=x++ + ++x;
    }
}
結果是2。這道題如果不懂以下知識點很難做對啊,不信可以運行試試
static變量(全局變量)的特性
各種屬性的加載順序
i++,++i的區別
static變量的特性
一.靜態成員變量

    1.屬於整個類而不是某個對象實例,所以可以直接通過類名和對象名去調用。

  2.靜態成員屬於整個類,當系統第一次使用該類時,就會為其分配內存空間直到該類被卸載才會進行資源回收

二.屬性加載順序
一般的,執行順序如下:
父類靜態變量、父類靜態代碼塊、子類靜態變量、子類靜態代碼塊、父類非靜態變量、父類非靜態代碼塊、父類構造方法、
子類非靜態變量、子類非靜態代碼塊、子類構造方法。

三.i++,++i的區別
這個就百度吧

接下來說說代碼流程
 public class program2 {
        static {
            int x = 5;//聲明一個局部變量,對後面沒有影響
        }
        static int x,y;//默認0
        public static void main(String[] args) {
            x--;//x=-1
            myMethod();
            System.out.println(x + y++ + x);//1+0+1
        }
    
        private static void myMethod() {
            y=x++ + ++x;//等價於y=(x++)+(++x)從右向左y = 0+ 0 x = 1;
        }
    }


歡迎加入學習交流群569772982,大家一起學習交流。

java程序員面試金典--i++