一些Java面试题深入分析
一、&和&&的差別?
&和&&都能夠用作邏輯與的運(yùn)算符。表示邏輯與(and),當(dāng)運(yùn)算符兩邊的表達(dá)式的結(jié)果都為true時(shí)。整個(gè)運(yùn)算結(jié)果才為true,否則,僅僅要有一方為false,則結(jié)果為false。
&&還具有短路的功能,即假設(shè)第一個(gè)表達(dá)式為false,則不再計(jì)算第二個(gè)表達(dá)式,比如,對于if(str != null && !str.equals(“”))表達(dá)式,當(dāng)str為null時(shí),后面的表達(dá)式不會運(yùn)行,所以不會出現(xiàn)NullPointerException假設(shè)將&&改為&,則會拋出NullPointerException異常。
If(x==33& ++y>0) y會增長,If(x==33 && ++y>0)不會增長
&不具有短路性質(zhì),對于if(str != null && !str.equals(“”))表達(dá)式,當(dāng)str為null時(shí)。后面的表達(dá)式依舊會運(yùn)行,所以會出現(xiàn)NullPointerException,除此之外,&還能夠用作位運(yùn)算符。二、switch語句是否能作用在byte上,是否能作用在long上,是否能作用在String上?
在switch(expr1)中。expr1能夠是 byte, char,?short,int 以及它們的包裝類 Byte ,Character,? Short, Integer,還有enum(枚舉)、String(JavaSE 7添加的)
參考官網(wǎng)http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html
三、使用finalkeyword修飾一個(gè)變量時(shí)。是引用不能變,還是引用的對象不能變?
使用finalkeyword修飾一個(gè)變量時(shí),是指引用變量不能變,引用變量所指向的對象中的內(nèi)容還是能夠改變的。比如,對于例如以下語句:
?final?StringBuffer?a=new?StringBuffer("immutable");
運(yùn)行例如以下語句將報(bào)告編譯期錯(cuò)誤:
a=new?StringBuffer("");
可是,運(yùn)行例如以下語句則能夠通過編譯:
a.append("?broken!");?
?
有人在定義方法的參數(shù)時(shí),可能想採用例如以下形式來阻止方法內(nèi)部改動傳進(jìn)來的參數(shù)對象:
public void method(final ?StringBuffer?param)
{
}
實(shí)際上,這是辦不到的,在該方法內(nèi)部仍然能夠添加例如以下代碼來改動參數(shù)對象:
??????? param.append("a");
四、當(dāng)運(yùn)行String str=new String("abc")。時(shí),究竟創(chuàng)建了多少個(gè)String對象?
假設(shè)再網(wǎng)上搜答案,差點(diǎn)兒都是這樣回答的:
假設(shè)String pool沒有abc這個(gè)字符串 的話就在字符串池創(chuàng)建abc的對象,再是在堆里創(chuàng)建一個(gè)abc的對象,把堆里的abc對象地址返回給str?這個(gè)情況是創(chuàng)建2個(gè)對象,否則就僅僅有在堆里創(chuàng)建一個(gè)abc的對象
但是。我今天看到一個(gè)解說視頻。他說不論什么情況都僅僅創(chuàng)建一個(gè)String對象。不論什么情況都不會在字符串池創(chuàng)建abc的對象。論據(jù):
String s1="hjk";String s2=s1.intern(); //intern()的作用是假設(shè)在常量池中存在s1的字符串值“hjk”,則//返回該字符串對象。否則在常量池加入“hjk”,并把該字符串對象返回。System.out.println(s2==s1); //trueString s3=new String("abc");String s4=s3.intern();System.out.println(s3==s4); //falseString s5=s3.intern();System.out.println(s5==s4); //true另可參考:Java面試題視頻解說http://study.163.com/course/courseMain.htm?courseId=519065#/courseMain
posted on 2017-04-24 14:29 mthoutai 閱讀(...) 評論(...) 編輯 收藏轉(zhuǎn)載于:https://www.cnblogs.com/mthoutai/p/6756731.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的一些Java面试题深入分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android攻城狮GestureDet
- 下一篇: 201521123007《Java程序设