java程序員面試金典--i++
阿新 • • 發佈:2018-01-14
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++