一. new String("a") + new String("b") 會創建幾個對象?
對象1:new StringBuilder()
對象2:new String("a")
對象3:常量池中的"a"
對象4:new String("b")
對象5:常量池中的"b"
深入剖析:StringBuilder中的toString():
對象6:new String("ab")
強調一下,toString()的調用,在字符串常量池中,沒有生成"ab"
二. 普通類和抽象類有哪些區別?
抽象類不能被實例化;
抽象類可以有抽象方法,只需申明,無須實現;
有抽象方法的類一定是抽象類;
抽象類的子類必須實現抽象類中的所有抽象方法,否則子類仍然是抽象類;
抽象方法不能聲明為靜態、不能被static、final修飾。
三. 什么是反射?
所謂反射,是java在運行時進行自我觀察的能力,通過class、constructor、field、method四個方法獲取一個類的各個組成部分。
在Java運行時環境中,對任意一個類,可以知道類有哪些屬性和方法。這種動態獲取類的信息以及動態調用對象的方法的功能來自于反射機制。
四. 什么是Java序列化?什么情況下需要序列化?
序列化就是一種用來處理對象流的機制。將對象的內容流化,將流化后的對象傳輸于網絡之間。
序列化是通過實現serializable接口,該接口沒有需要實現的方法,implement Serializable只是為了標注該對象是可被序列化的,使用一個輸出流(FileOutputStream)來構造一個ObjectOutputStream對象,接著使用ObjectOutputStream對象的writeObejct(Object object)方法就可以將參數的obj對象到磁盤,需要恢復的時候使用輸入流。
序列化是將對象轉換為容易傳輸的格式的過程。
例如,可以序列化一個對象,然后通過HTTP通過Internet在客戶端和服務器之間傳輸該對象。在另一端,反序列化將從流中心構造成對象。
一般程序在運行時,產生對象,這些對象隨著程序的停止而消失,但我們想將某些對象保存下來,這時,我們就可以通過序列化將對象保存在磁盤,需要使用的時候通過反序列化獲取到。
對象序列化的最主要目的就是傳遞和保存對象,保存對象的完整性和可傳遞性。
譬如通過網絡傳輸或者把一個對象保存成本地一個文件的時候,需要使用序列化。
更多關于“Java培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓經驗,課程大綱更科學更專業,有針對零基礎的就業班,有針對想提升技術的好程序員班,高品質課程助力你實現java程序員夢想。