61.為什麼要使用轉殖?
想對乙個物件進行處理,又想保留原有的資料進行接下來的操作,就需要轉殖了。轉殖分淺轉殖和深轉殖,淺轉殖後的物件中非基本物件和原物件指向同一塊記憶體,因此對這些非基本物件的修改會同時更改轉殖前後的物件。深轉殖可以實現完全的轉殖,可以用反射的方式或序列化的方式實現。
62.如何實現物件轉殖?
有兩種方式:
實現cloneable介面並重寫object類中的clone()方法。
實現serializable介面,通過物件的序列化和反序列化實現轉殖,可以實現真正的深度轉殖。
63.深拷貝和淺拷貝區別是什麼?
淺拷貝:淺拷貝是會將物件的每個屬性進行依次複製,但是當物件的屬性值是引用型別時,實質複製的是其引用,當引用指向的值改變時也會跟著變化。
深拷貝:深拷貝複製變數值,對於引用資料,則遞迴至基本型別後,再複製。
深拷貝後的物件與原來的物件是完全隔離的,互不影響,對乙個物件的修改並不會影響另乙個物件。
區別:
淺拷貝當第一層的屬性值是基本資料型別時,新的物件和原物件互不影響,但是如果第一層的屬性值是引用資料型別時,那麼新物件和原物件的屬性值其指向的是同一塊記憶體位址。
深拷貝會另外創造乙個一模一樣的物件,新物件跟原物件不共享記憶體,修改新物件不會改到原物件。
208面試題 網路
79.http 響應碼 301 和 302 代表的是什麼?有什麼區別?301 moved permanently 被請求的資源已永久移動到新位置,並且將來任何對此資源的引用都應該使用本響應返回的若干個 uri 之一。如果可能,擁有鏈結編輯功能的客戶端應當自動把請求的位址修改為從伺服器反饋回來的位址。...
python面試題 深拷貝與淺拷貝
1.賦值拷貝 2.copy淺拷貝 3.deepcopy深拷貝 import copya 1,2,3,4 賦值拷貝,預設淺拷貝,傳遞物件的引用而已,原始列表改變,被賦值的b也會做相同的改變 b a5 print a,adress id a 1,2,3,4 5 adress 2670537167752 ...
面試題 PHP面試題
建議 比如是系統配置,缺少了無法執行,自然使用 require 如果某一段程式少了,只是少了統計 訪問的,不是必不可少的。可以使用 include 而加不加 once 就是效率上的區別,雖然系統會幫你考慮只包含一次,但系統的判斷會降低效率,因此,更應該在開發之初,把目錄結構調整高好,盡量不使用 on...