【概述】html
&&只能用做邏輯與(and)運算符(具備短路功能);可是&能夠做爲邏輯與運算符(是「無條件與」,即沒有短路的功能),也能夠做爲位的與運算符。
java
【詳細】緩存
相同點:&和&&均可以用做邏輯與的運算符,表示邏輯與(and),當運算符兩邊的表達式的結果都爲true時,整個運算結果才爲true,不然,只要有一方爲false,則結果爲false。post
不一樣點:字體
一、&&具備短路的功能,即若是第一個表達式爲false,則再也不計算第二個表達式,編碼
例如,對於if(str != null && !str.equals(「」))表達式,當str爲null時,後面的表達式不會執行,因此不會出現NullPointerException;若是將&&改成&,則會拋出NullPointerException異常。url
二、&還能夠用做位運算符,當&操做符兩邊的表達式不是boolean類型時,&表示按位與操做,咱們一般使用0x0f來與一個整數進行&運算,來獲取該整數的最低4個bit位, 例如,0x31 & 0x0f的結果爲0x01。 spa
【備註】:這道題先說二者的共同點,再說出&&和&的特殊之處,並列舉一些經典的例子來代表本身理解透徹深刻、實際經驗豐富。code
具體點擊博文【String s = a+b+c+d+e;建立了幾個對象的詳細分析?】htm
直接說出如下程序的輸出結果:
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上?
在switch(expr1)中,expr1只能是一個整數表達式(int類型或者能夠隱式轉化爲int類型的數據類型(short、byte等))、字符串或者枚舉常量(更大字體),整數表達式能夠是int基本類型或Integer包裝類型,因爲,byte,short,char均可以隱含轉換爲int,因此,這些類型以及這些類型的包裝類型也是能夠的。
【注意】顯然,long類型都不符合switch的語法規定,而且不能被隱式轉換成int類型,因此,它們不能做用於swtich語句中。
四、Java基本數據類型及其類型轉換:
類型名稱 | 類型定義 | 類型取值 |
---|---|---|
boolean | 布爾值,做二元判斷 | true, false |
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會出現錯誤異常。
對於short s1 = 1; s1 = s1 + 1; 因爲s1+1運算時會自動提高表達式的類型,因此結果是int型,再賦值給short類型s1時,編譯器將報告須要強制轉換類型的錯誤。
對於short s1 = 1; s1 += 1;因爲 += 是java語言規定的運算符,java編譯器會對它進行特殊處理,所以能夠正確編譯。
【同第5題是同種類型題】Java中char型變量是用來存儲Unicode編碼的字符的,unicode編碼字符集中包含了漢字,因此,char型變量中固然能夠存儲漢字啦。不過,若是某個特殊的漢字沒有被包含在unicode編碼字符集中,那麼,這個char型變量中就不能存儲這個特殊漢字。補充說明:unicode編碼佔用兩個字節,因此,char類型的變量也是佔用兩個字節。
備註:後面一部分回答雖然不是在正面回答題目,可是,爲了展示本身的學識和表現本身對問題理解的透徹深刻,能夠回答一些相關的知識,作到知無不言,言無不盡。