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