面試題之String s="a"+"b"+"c"+"d";

今天遇到了一個面試題的選擇,我當時真的沒怎麼在乎,其實挺好玩的。java

1.這條語句String s="a"+"b"+"c"+"d";一共建立了多少個對象()
A.1
B.4
C.6
D.7
這道題放在了第一題 沒動腦子數了數 感受是八個 可是沒有選項 又數了數 難道是五個 仍是沒有選項 而後我就選了B... 
純屬瞎寫了(主要是誰沒事這麼聲明變量啊)
個人答案確定不對啊 回來的路上仔細想了想 感受應該是選擇D.7個
由於:
  "a" "b" "c" "d" 各爲一個,一共四個 而後 "ab" "abc" "abcd" 一共三個 我把s給算上了一個 因此是八個 若是不算 就是七個。
可是感受仍是有點彆扭 後面的"a" "b" "c" "d"頂多算是常量,對於常量,編譯時就直接存儲它們的字面值而不是它們的引用,我感受我想複雜了,感受就一個對象(主要是看到這題也不可能直接選擇A呀確定會想的多一些)。
而後我回去試了試 而後查看編譯後的class文件,呵,瞬間感受本身當時太傻了,真的是沒想到,編譯器仍是很聰明的,本身把這個很長(傻)的聲明總結起來了,直接提取成String s = "abcd";而後根據這個想一下,當執行到這個變量的時候,會先去String常量池裏找,若是沒有的話確定就會建立一個對吧,因此這道題我以爲應該選擇A。
image image image 
最重要的來了,我去網上搜了一下,好多人都在討論這個問題。。。問題討論傳送(我以爲我確定是和社會脫節了,主要當時看見這個題天然而然的和String s="a"+"b"+new String("c");這類題目聯想到一塊兒了,再加上本身有點緊張,哈哈,不能解釋,這就是本身技術不行)
最後我查了幾篇文章,感受就是本身太自做聰明瞭,一看題就以爲面試官出的題目會有坑,而後就自做的想不少,其實這道題也是一種坑,只怪本身基礎知識不紮實,看了這篇文章感受明白了 文章傳送
這道題雖然很小 可是仍是記錄一下吧 很容易就懵了 感受這道題是很基礎的一道面試題 我第一次遇到 是否是很幸運同時又很可悲呢。。。
基礎啊~真的很重要!!!菜鳥要進步!!!
相關文章
相關標籤/搜索