s1=s1+1與s1+=1的區別

剛看到一面試題,題目是這樣的:short s1=1;s1=s1+1;有什麼錯?short s1=1;s1+=1;有什麼錯?java

初看之下就是s1=s1+1和s1+=1的區別。在開發中咱們基本上是使用後一種方式,也不太去追究具體的區別,由於效果出來都是同樣的,因此就會很天然的認爲沒什麼區別。我一開始也就是這麼認爲,可是做爲一道面試題老是有點用意的,若是沒區別就不會拿出來了,因而我就有這種疑惑。有疑惑就解決嘛,細看一下,有個short,而1是int類型,那麼應該是跟類型轉換有關的了。那麼具體是怎麼轉的呢?從大腦這深海里調出有關類型轉換的知識點過一遍,原來s1=s1+1;是先把s1轉換成int類型,而後再執行s1+1運算,那麼運算出來的結果就是int類型了,可是以前定義的s1是short類型哦,因此int類型賦值給short就會出錯了,咱們知道short是能夠隱式轉換成int的,而int轉short就須要強制轉換了;s1+=1呢?+=是大多數高級語言(java,c#)既定的運算符,相似s1+=1這樣的運算,在執行完s1+1運算以後會強制轉換成+=符號前面的表達式的類型 ,因此就不會出錯了。總結一句話就是s1+=1比s1=s1+1多了一步強制轉換的過程呢!面試

相關文章
相關標籤/搜索