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