Java 中的 clone( ) 和 new,哪個(gè)效率更高?
點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號(hào)”
優(yōu)質(zhì)文章,第一時(shí)間送達(dá)

-? ? ?對(duì)象創(chuàng)建的幾種方法? ? -
1.使用new關(guān)鍵字
2.使用clone方法
3.反射機(jī)制
以上四種都可以產(chǎn)生java對(duì)象
1,3都會(huì)明確的顯式的調(diào)用構(gòu)造函數(shù)
2是在內(nèi)存上對(duì)已有對(duì)象的影印 所以不會(huì)調(diào)用構(gòu)造函數(shù)

-? ? ?何為clone()?? ? -

-? ? ?clone()和new那個(gè)更快?? ? -
package?com.miivii.javalib;
?
/**
?*?Created?by?ylWang?on?2018/6/20?16:36.
?*/
?
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;
?
/**
?*?Created?by?ylWang?on?2018/6/20?16:36.
?*/
?
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();
????}
}

? 作者?|??iblade
來(lái)源 |??csdn.net/iblade/article/details/80749148
加鋒哥微信:?java1239?? 圍觀鋒哥朋友圈,每天推送Java干貨!
評(píng)論
圖片
表情


