一些Java面試題深入分析

來源:互聯網
上載者:User

標籤:ram   main   get   javase   運算   keyword   targe   ase   異常   

一、&和&&的差別?


&和&&都能夠用作邏輯與的運算子。表示邏輯與(and),當運算子兩邊的運算式的結果都為true時。整個運算結果才為true,否則,僅僅要有一方為false,則結果為false。

&&還具有短路的功能,即假設第一個運算式為false,則不再計算第二個運算式,比如,對於if(str != null && !str.equals(“”))運算式,當str為null時,後面的運算式不會運行,所以不會出現NullPointerException假設將&&改為&,則會拋出NullPointerException異常。

If(x==33& ++y>0) y會增長,If(x==33 && ++y>0)不會增長

& 不具有短路性質,對於if(str != null && !str.equals(“”))運算式,當str為null時。後面的運算式 依舊會運行,所以 會出現NullPointerException,除此之外,&還能夠用作位元運算符。



二、switch語句是否能作用在byte上,是否能作用在long上,是否能作用在String上?

在switch(expr1)中。expr1能夠是 byte, char, short,int 以及它們的封裝類 Byte ,Character,  Short, Integer,還有enum(枚舉)、String(JavaSE 7添加的)

參考官網http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html


三、使用finalkeyword修飾一個變數時。是引用不能變,還是引用的對象不能變?

使用finalkeyword修飾一個變數時,是指引用變數不能變,引用變數所指向的對象中的內容還是能夠改變的。比如,對於例如以下語句:

 final StringBuffer a=new StringBuffer("immutable");
運行例如以下語句將報告編譯期錯誤:

a=new StringBuffer("");
可是,運行例如以下語句則能夠通過編譯:

a.append(" broken!"); 

 

有人在定義方法的參數時,可能想採用例如以下形式來阻止方法內部改動傳進來的參數對象:

public void method(final  StringBuffer param)

{

}

實際上,這是辦不到的,在該方法內部仍然能夠添加例如以下代碼來改動參數對象:

        param.append("a");


四、當運行String str=new String("abc")。時,究竟建立了多少個String對象?

假設再網上搜答案,差點兒都是這樣回答的:

假設String pool沒有abc這個字串 的話就在字串池建立abc的對象,再是在堆裡建立一個abc的對象,把堆裡的abc對象地址返回給str 這個情況是建立2個對象,否則就僅僅有在堆裡建立一個abc的對象


但是。我今天看到一個解說視頻。他說不論什麼情況都僅僅建立一個String對象。不論什麼情況都不會在字串池建立abc的對象。論據:

String s1="hjk";String s2=s1.intern();        //intern()的作用是假設在常量池中存在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

一些Java面試題深入分析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.