標籤:定義 運行 ++ 組成 分享圖片 屬性 電腦 == 分享
當做了這些題感覺自己的java基礎都是假的,坑太多
坑一,關於封裝類的
Integer num1=127;integet num2=127;System.out.println(num1==num2);
此題答案是
但是當我們把範圍放到小於-128 和 大於 127,那麼答案又不一樣了
坑二,關於java類屬性載入和記憶體模型
package test;public class Demo1 { int i=getJ(); int j=0; public int getJ() { j=10; System.out.println(i); return j; } public static void main(String[] args) { Demo1 demo=new Demo1(); System.out.println(demo.j); }}
選項A,能否正確運行 B,一個輸出結果 C, 0和10 D,0和0
看看答案
看看另一種情況j在前面定義的時候
坑三,
package test;public class Demo1 { public static void main(String[] args) { int num=0; for(int i=0;i<100;i++) { num=num++; } System.out.println("num="+num); }}
不知大家第一次有沒有被這道題坑過,很多人的答案可能是100反正我是很糾結,看看答案吧
但我們換個參數去接它,再看看結果
坑四,關於與或非的
public static void main(String[] args) { int n=100; int m=20; if(m<=20 && n==n++) System.out.println(n); System.out.println(m); }
請說出結果,這個相對比較簡單,應該不會有太多人被坑
當我們把等號去掉
載變換一下,結果又不一樣了
public static void main(String[] args) { int n=100; int m=20; if(m<=20 || n==n++) System.out.println(n); System.out.println(m);}
再看看結果
再變化一下,再看看結果
還有種坑,就是考眼神和細心的了,不注意看就會說m=20
坑五,關於基本類型的轉換的
public static void main(String[] args) { short s=10; s=s+2; System.out.println(s);}
這個稍微仔細看,對基本類型理解的人就容易看出來,這是編譯器會報錯的,輸不出結果的,這裡的2預設是int類型,short+int自動轉換為int型
大家再仔細看看這個細節,因為這些變數類型我們還是很少用,可能不是很注意,這麼寫就不報錯了
還有一個就是關於byte的,看圖
這裡是一個迴圈(-128~~127),好像是關於補碼的一個轉換,電腦群組成原理好像可以解釋通,我忘得差不多了,
java面試基礎題---遇到的坑