那些隱藏的比較深的JAVA基本功裝逼姿勢,要面試的來看看
阿新 • • 發佈:2019-02-03
float f=3.4;是否正確?
答:不正確。3.4是雙精度數,將雙精度型(double)賦值給浮點型(float)屬於下轉型(down-casting,也稱為窄化)會造成精度損失,因此需要強制型別轉換float f =(float)3.4; 或者寫成float f =3.4F;。
訪問修飾符public,private,protected,以及不寫(預設)時的區別?
答:
修飾符 當前類 同 包 子 類 其他包
public √ √ √ √
protected √ √ √ ×
default √ √ × ×
private √ × × ×
按位與 a & b 相同位的兩個數字都為1,則為1;若有一個不為1,則為0。 按位或 a | b 相同位只要一個為1即為1。 按位異或 a ^ b 相同位不同則為1,相同則為0 按位取反 ~a 記憶體中的0和1全部取反 左移 a << b 乘a * 2的b次方 帶符號右移 a >> b a除以2的b次方(取整)</span> 無符號右移 a>>> b
是否可以繼承String類?
答:String 類是final類,不可以被繼承。
補充:繼承String本身就是一個錯誤的行為,對String型別最好的重用方式是關聯關係(Has-A)和依賴關係(Use-A)而不是繼承關係(Is-A)。
過載(Overload)和重寫(Override)的區別。過載的方法能否根據返回型別進行區分? 答:方法的過載和重寫都是實現多型的方式,區別在於前者實現的是編譯時的多型性,而後者實現的是執行時的多型性。過載發生在一個類中,同名的方法如果有不同的引數列表(引數型別不同、引數個數不同或者二者都不同)則視為過載;重寫發生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的返回型別,比父類被重寫方法更好訪問,不能比父類被重寫方法宣告更多的異常(里氏代換原則)。過載對返回型別沒有特殊的要求。
String s = new String("xyz");建立了幾個字串物件?
答:兩個物件,一個是靜態區的"xyz",一個是用new建立在堆上的物件。
解釋記憶體中的棧(stack)、堆(heap)和靜態區(static area)的用法。 stack: 通常我們定義一個基本資料型別的變數,一個物件的引用,還有就是函式呼叫的現場儲存都使用記憶體中的棧空間 heap: 而通過new關鍵字和構造器建立的物件放在堆空間 Math.round(11.5) 等於多少?Math.round(-11.5)等於多少? 答:Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四捨五入的原理是在引數上加0.5然後進行下取整。