new一個對象的過程和clone一個對象的區別?


new 操作符的本意是分配內存。程序執行到 new 操作符時,首先去看 new 操作符后面的類型,因為知道了類型,才能知道要分配多大的內存空間。分配完內存之后,再調用構造函數,填充對象的各個域,這一步叫做對象的初始化,構造方法返回后,一個對象創建完畢,可以把他的引用(地址)發布到外部,在外部就可以使用這個引用操縱這個對象。

clone 在第一步是和 new 相似的,都是分配內存,調用 clone 方法時,分配的內存和原對象 (即調用 clone 方法的對象)相同,然后再使用原對象中對應的各個域,填充新對象的域,填 充完成之后,clone方法返回,一個新的相同的對象被創建,同樣可以把這個新對象的引用發布到外部。

區別總結:

  1. clone()不會調用構造方法;new會調用構造方法
  2. clone()更快。clone()能快速創建一個已有對象的副本,即創建對象並且將已有對象中所有屬性值克隆;new只能在JVM中申請一個空的內存區域,對象的屬性值要通過構造方法賦值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM