Java中clone( )和new效率哪個(gè)更高?
閱讀本文大概需要 2.8 分鐘。
來自:blog.csdn.net/iblade/article/details/80749148/
使用new關(guān)鍵字 使用clone方法 反射機(jī)制 反序列化
1,3都會(huì)明確的顯式的調(diào)用構(gòu)造函數(shù) 2是在內(nèi)存上對已有對象的影印 所以不會(huì)調(diào)用構(gòu)造函數(shù) 4是從文件中還原類的對象 也不會(huì)調(diào)用構(gòu)造函數(shù)
何為clone()?
拷貝對象返回的是一個(gè)新的對象,而不是一個(gè)對象的引用地址; 拷貝對象已經(jīng)包含原來對象的信息,而不是對象的初始信息,即每次拷貝動(dòng)作不是針對一個(gè)全新對象的創(chuàng)建。
推薦下自己做的 Spring Boot 的實(shí)戰(zhàn)項(xiàng)目: https://github.com/YunaiV/ruoyi-vue-pro
clone()和new那個(gè)更快?
答案:不是。顯然jvm的開發(fā)者也意識(shí)到通過new方式來生成對象占據(jù)了開發(fā)者生成對象的絕大部分,所以對于利用new操作生成對象進(jìn)行了優(yōu)化。
package?com.miivii.javalib;
?
public?class?Bean?implements?Cloneable?{
????private?String?name;
?
????public?Bean(String?name)?{
????????this.name?=?name;
????}
?
????@Override
????protected?Bean?clone()?throws?CloneNotSupportedException?{
????????return?(Bean)?super.clone();
????}
}
package?com.miivii.javalib;
?
?
public?class?TestClass?{
????private?static?final?int?COUNT?=?10000?*?1000;
?
????public?static?void?main(String[]?args)?throws?CloneNotSupportedException?{
?
????????long?s1?=?System.currentTimeMillis();
?
????????for?(int?i?=?0;?i?????????????Bean?bean?=?new?Bean("ylWang");
????????}
?
????????long?s2?=?System.currentTimeMillis();
?
????????Bean?bean?=?new?Bean("ylWang");
????????for?(int?i?=?0;?i?????????????Bean?b?=?bean.clone();
????????}
?
????????long?s3?=?System.currentTimeMillis();
?
????????System.out.println("new??=?"?+?(s2?-?s1));
????????System.out.println("clone?=?"?+?(s3?-?s2));
????}
}

package?com.miivii.javalib;
?
public?class?Bean?implements?Cloneable?{
????private?String?name;
????private?String?firstSign;//獲取名字首字母
?
????public?Bean(String?name)?{
????????this.name?=?name;
????????if?(name.length()?!=?0)?{
????????????firstSign?=?name.substring(0,?1);
????????????firstSign?+=?"abc";
????????}
????}
?
????@Override
????protected?Bean?clone()?throws?CloneNotSupportedException?{
????????return?(Bean)?super.clone();
????}
}

推薦閱讀:
SpringBoot 定時(shí)任務(wù)動(dòng)態(tài)管理通用解決方案
內(nèi)容包含Java基礎(chǔ)、JavaWeb、MySQL性能優(yōu)化、JVM、鎖、百萬并發(fā)、消息隊(duì)列、高性能緩存、反射、Spring全家桶原理、微服務(wù)、Zookeeper、數(shù)據(jù)結(jié)構(gòu)、限流熔斷降級......等技術(shù)棧!
?戳閱讀原文領(lǐng)取!? ? ? ? ? ? ? ??? ??? ? ? ? ? ? ? ? ? ?朕已閱?

