Java面試查漏補缺

1、基礎

一、&&&的區別。 

【概述】html

&&能用做邏輯與(and)運算符(具備短路功能);可是&能夠做爲邏輯與運算符(是「無條件與」,即沒有短路的功能),也能夠做爲位的與運算符
java

【詳細】緩存

相同點:&&&均可以用做邏輯與的運算符,表示邏輯與(and),當運算符兩邊的表達式的結果都爲true時,整個運算結果才爲true,不然,只要有一方爲false,則結果爲falsepost

不一樣點:字體

一、&&具備短路的功能,即若是第一個表達式爲false,則再也不計算第二個表達式,編碼

  例如,對於if(str != null && !str.equals(「」))表達式,當strnull時,後面的表達式不會執行,因此不會出現NullPointerException;若是將&&改成&,則會拋出NullPointerException異常。url

二、&還能夠用做位運算符&操做符兩邊的表達式不是boolean類型時,&表示按位與操做,咱們一般使用0x0f來與一個整數進行&運算,來獲取該整數的最低4bit位,  例如,0x31 & 0x0f的結果爲0x01。 spa

【備註】:這道題先說二者的共同點,再說出&&&的特殊之處,並列舉一些經典的例子來代表本身理解透徹深刻、實際經驗豐富。code

 

 

二、String s = a+b+c+d+e;建立了幾個對象的詳細分析?

具體點擊博文String s = a+b+c+d+e;建立了幾個對象的詳細分析?htm

 

3java對象引用比較 

直接說出如下程序的輸出結果:
Integer a = 10;
Integer b = 10;
System.out.println(a == b);
Integer x = 156;
Integer y = 156;
System.out.println(x == y);

答案是:True、False

分析:
兩個Integer對象是不會自動拆包,Integer == Integer不會自動拆包比較的
Integer == int這纔會自動拆包。
可是JDK緩存了-128-127這些數字的對象(相似於一個pool)
因此a與b的存儲地址都指向同一對象

Integer a = new Integer(1);
Integer b = new Integer(1);
a == b 呢? 答案:False

緣由:new Integer()是強制
強制生成一個新對象

 三、switch語句可否做用在byte上,可否做用在long上,可否做用在String? 

  在switchexpr1)中,expr1只能是一個整數表達式(int類型或者能夠隱式轉化爲int類型的數據類型(short、byte等))、字符串或者枚舉常量(更大字體),整數表達式能夠是int基本類型或Integer包裝類型,因爲,byte,short,char均可以隱含轉換爲int因此,這些類型以及這些類型的包裝類型也是能夠的。

  【注意】顯然,long類型都不符合switch的語法規定,而且不能被隱式轉換成int類型,因此,它們不能做用於swtich語句中。 

 

 四、Java基本數據類型及其類型轉換:

 

類型名稱 類型定義 類型取值
boolean 布爾值,做二元判斷 truefalse
byte 8位有符號整數 最小值-128,最大值127
short 16位有符號整數 最小值-32768,最大值32767
int 32位有符號整數 最小值-2147483648(-231),最大值2147483647(231-1)
long 64位有符號整數 -263~(263-1)
float 32位浮點數 1.4E-45~3.4028235E38
double 64位浮點數 4.9E-324~1.7976931348623157E308
char 16位Unicode字符 不適用

 

【注意】float a=1.0  //********編譯錯誤,1.0默認是double類型,轉換爲float會出現錯誤異常。

 

 

5short s1 = 1; s1 = s1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯? 

對於short s1 = 1; s1 = s1 + 1; 因爲s1+1運算時會自動提高表達式的類型因此結果是int,再賦值給short類型s1時,編譯器將報告須要強制轉換類型的錯誤。

對於short s1 = 1; s1 += 1;因爲 += java語言規定的運算符,java編譯器會對它進行特殊處理,所以能夠正確編譯。

 

6char型變量中能不能存貯一箇中文漢字?爲何? 

 

【同第5題是同種類型題】Java中char型變量是用來存儲Unicode編碼的字符的,unicode編碼字符集中包含了漢字,因此,char型變量中固然能夠存儲漢字啦。不過,若是某個特殊的漢字沒有被包含在unicode編碼字符集中,那麼,這個char型變量中就不能存儲這個特殊漢字。補充說明:unicode編碼佔用兩個字節,因此,char類型的變量也是佔用兩個字節。

 

備註:後面一部分回答雖然不是在正面回答題目,可是,爲了展示本身的學識和表現本身對問題理解的透徹深刻,能夠回答一些相關的知識,作到知無不言,言無不盡。 

相關文章
相關標籤/搜索