一. 為什么要使用克隆?如何實現(xiàn)對象克隆?深拷貝和淺拷貝區(qū)別是什么?
1. 什么要使用克隆?
想對一個對象進行復(fù)制,又想保留原有的對象進行接下來的操作,這個時候就需要克隆了。
2. 如何實現(xiàn)對象克隆?
實現(xiàn)Cloneable接口,重寫clone方法;
實現(xiàn)Serializable接口,通過對象的序列化和反序列化實現(xiàn)克隆,可以實現(xiàn)真正的深克隆。
BeanUtils,apache和Spring都提供了bean工具,只是這都是淺克隆。
3. 深拷貝和淺拷貝區(qū)別是什么?
淺拷貝:僅僅克隆基本類型變量,不克隆引用類型變量;
深克?。杭瓤寺』绢愋妥兞?,又克隆引用類型變量;
4. 代碼實例
二. Java中操作字符串都有哪些類?它們之間有什么區(qū)別?
1. String
String是不可變對象,每次對String類型的改變時都會生成一個新的對象。
2. StringBuilder
線程不安全,效率高,多用于單線程。
3. StringBuffer
線程安全,由于加鎖的原因,效率不如StringBuilder,多用于多線程。
不頻繁的字符串操作使用String,操作頻繁的情況不建議使用String。
StringBuilder > StringBuffer > String。
三. 在Java中為什么不允許從靜態(tài)方法中訪問非靜態(tài)變量?
靜態(tài)變量屬于類本身,在類加載的時候就會分配內(nèi)存,可以通過類名直接訪問;
非靜態(tài)變量屬于類的對象,只有在類的對象產(chǎn)生時,才會分配內(nèi)存,通過類的實例去訪問;
靜態(tài)方法也屬于類本身,但是此時沒有類的實例,內(nèi)存中沒有非靜態(tài)變量,所以無法調(diào)用
四. 說說Java的命名規(guī)范
JavaBean類必須是一個公共類,并將其訪問屬性設(shè)置為 public
JavaBean 類必須有一個空的構(gòu)造函數(shù):類中必須有一個不帶參數(shù)的公用構(gòu)造器,此構(gòu)造器也應(yīng)該通過調(diào)用各個特性的設(shè)置方法來設(shè)置特性的缺省值。
一個javaBean類不應(yīng)有公共實例變量,類變量都為private
持有值應(yīng)該通過一組存取方法(getXxx 和 setXxx)來訪問:對于每個特性,應(yīng)該有一個帶匹配公用 getter 和 setter 方法的專用實例變量。
屬性為布爾類型,可以使用 isXxx() 方法代替 getXxx() 方法。
通常屬性名是要和 包名、類名、方法名、字段名、常量名作出區(qū)別的:
首先:必須用英文,不要用漢語拼音。
1. 包(package)
用于將完成不同功能的類分門別類,放在不同的目錄(包)下,包的命名規(guī)則:將公司域名反轉(zhuǎn)作為包名,比如www.qf.com 對于包名:每個字母都需要小寫。比如:com.qf.test;該包下的Test類的全名是:com.qf.Test.Java
如果定義類的時候沒有使用package,那么java就認為我們所定義的類位于默認包里面(default package)。
2. 類
首字母大寫,如果一個類由多個單詞構(gòu)成,那么每個單詞的首字母都大寫,而且中間不使用任何的連接符。盡量使用英文,如ConnectionFactory。
3. 方法
首單詞全部小寫,如果一個方法由多個單詞構(gòu)成,那么從第二個單詞開始首字母大寫,不使用連接符。addPerson。
4. 字段
與方法相同,如ageOfPerson。
5. 常量
所有單詞的字母都是大寫,如果有多個單詞,那么使用下劃線鏈接即可。如:
更多關(guān)于“Java培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓(xùn)經(jīng)驗,課程大綱更科學(xué)更專業(yè),有針對零基礎(chǔ)的就業(yè)班,有針對想提升技術(shù)的好程序員班,高品質(zhì)課程助力你實現(xiàn)java程序員夢想。