返回顶部
首页 > 资讯 > 精选 >Java中clone( ) 和 new效率更高的是哪个
  • 215
分享到

Java中clone( ) 和 new效率更高的是哪个

2023-06-21 23:06:55 215人浏览 独家记忆
摘要

这篇文章主要介绍Java中clone( ) 和 new效率更高的是哪个,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!对象创建的几种方法:使用new关键字使用clone方法反射机制反序列化

这篇文章主要介绍Java中clone( ) 和 new效率更高的是哪个,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

对象创建的几种方法:

  1. 使用new关键字

  2. 使用clone方法

  3. 反射机制

  4. 反序列化

以上四种都可以产生java对象

  • 1,3都会明确的显式的调用构造函数

  • 2是在内存上对已有对象的影印 所以不会调用构造函数

  • 4是从文件中还原类的对象 也不会调用构造函数

何为clone()?

  1. 拷贝对象返回的是一个新的对象,而不是一个对象的引用地址;

  2. 拷贝对象已经包含原来对象的信息,而不是对象的初始信息,即每次拷贝动作不是针对一个全新对象的创建。

clone()和new那个更快?

利用clone,在内存中进行数据块的拷贝,复制已有的对象,也是生成对象的一种方式。前提是类实现Cloneable接口,Cloneable接口没有任何方法,是一个空接口,也可以称这样的接口为标志接口,只有实现了该接口,才会支持clone操作。有的人也许会问了,java中的对象都有一个默认的父类Object。

Object中有一个clone方法,为什么还必须要实现Cloneable接口呢,这就是cloneable接口这个标志接口的意义,只有实现了这个接口才能实现复制操作,因为JVM在复制对象的时候,会检查对象的类是否实现了Cloneable这个接口,如果没有实现,则会报CloneNotSupportedException异常。类似这样的接口还有Serializable接口、RandoMaccess接口等。

还有值得一提的是在执行clone操作的时候,不会调用构造函数。还有clone操作还会面临深拷贝和浅拷贝的问题。关于这方面的问题,网上有很多的相关知识了,不再累述了。由于通过复制操作得到对象不需要调用构造函数,只是内存中的数据块的拷贝,那是不是拷贝对象的效率是不是一定会比new的时候的快。

答案:不是。显然jvm的开发者也意识到通过new方式来生成对象占据了开发者生成对象的绝大部分,所以对于利用new操作生成对象进行了优化

例如:

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 < COUNT; i++) {            Bean bean = new Bean("ylWang");        }        long s2 = System.currentTimeMillis();        Bean bean = new Bean("ylWang");        for (int i = 0; i < COUNT; i++) {            Bean b = bean.clone();        }        long s3 = System.currentTimeMillis();        System.out.println("new  = " + (s2 - s1));        System.out.println("clone = " + (s3 - s2));    }}

打印结果:

Java中clone( ) 和 new效率更高的是哪个

new完胜clone,真的是这样吗?

下面在构造函数里做点简单的事情,例如字符串截取试试。只是修改Bean,其他不变再看打印

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();    }}

Java中clone( ) 和 new效率更高的是哪个

结论:轻量级的对象可以使用new,其他对象可以使用clone。

以上是“Java中clone( ) 和 new效率更高的是哪个”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Java中clone( ) 和 new效率更高的是哪个

本文链接: https://lsjlt.com/news/301422.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java中clone( ) 和 new效率更高的是哪个
    这篇文章主要介绍Java中clone( ) 和 new效率更高的是哪个,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!对象创建的几种方法:使用new关键字使用clone方法反射机制反序列化...
    99+
    2023-06-21
  • Java 中的 clone( ) 和 new哪个效率更高
    对象创建的几种方法: 使用new关键字 使用clone方法 反射机制 反序列化 以上四种都可以产生java对象 1,3都会明确的显式的调...
    99+
    2024-04-02
  • Linux大文件重定向和管道的效率哪个更高
    这篇文章主要讲解了“Linux大文件重定向和管道的效率哪个更高”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux大文件重定向和管道的效率哪个更高”吧!# 命令1,管道导入&n...
    99+
    2023-06-16
  • Python中的字符串查找和替换效率最高的方法是哪个?
    Python中的字符串查找和替换效率最高的方法是哪个?在Python中,字符串是常用的数据类型之一,我们经常需要对字符串进行查找和替换操作。那么,在进行字符串查找和替换时,有哪些方法是效率最高的呢?本文将为你介绍Python中字符串查找和替...
    99+
    2023-10-22
    字符串查找和替换
  • 比较Golang和Python的性能:哪个更高效?
    Golang和Python的性能对比:谁更胜一筹? 随着软件开发行业的迅猛发展,选择一种既高效又适用的编程语言变得尤为重要。本文将探讨两种流行的编程语言——Golang和Python的性能对比,旨在帮助读者了...
    99+
    2024-01-20
    Python Golang 性能比较
  • 文件处理中,Python的Numpy和Django的哪个更为高效?
    Python作为一种高级编程语言,可以在许多应用程序中使用。文件处理是其中一个常见的应用程序,它涉及到读取和写入文件,处理文件中的数据和信息等。在Python中,Numpy和Django是两个常用的库,它们都可以用于文件处理。但是,哪一个更...
    99+
    2023-06-01
    numpy django 文件
  • Python Shell和IDE:哪个能够提高Windows用户的效率?
    Python作为一种流行的编程语言,已经成为了许多程序员的首选。在Windows操作系统上,Python提供了两种主要的编程环境:Python Shell和Python IDE。那么,哪一种环境能够更有效地提高Windows用户的效率呢?...
    99+
    2023-08-02
    shell ide windows
  • ASP、Bash、Linux 和 NumPy:哪个能够提高您的编程效率?
    ASP、Bash、Linux和NumPy:哪个能够提高您的编程效率? 在当今的技术领域中,有很多编程语言和工具可以用来提高您的编程效率。在这篇文章中,我们将比较ASP、Bash、Linux和NumPy这四个工具的优劣,以帮助您决定哪个工具最...
    99+
    2023-09-09
    bash linux numpy
  • 10个提高效率的UNIX和Linux技巧分别是什么
    这期内容当中小编将会给大家带来有关10个提高效率的UNIX和Linux技巧分别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。如果您的服务也部署在 Linux 机器上,并且您每天有...
    99+
    2023-06-28
  • 哪个 MongoDB 库更有效率:"gopkg.in/mgo.v2" 还是 "go.mongodb.org/mongo-driver/mongo"?
    目前编程网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《哪个 MongoDB 库更有效率:"gopkg.in/mgo.v2" 还是 "go.mon...
    99+
    2024-04-04
  • Java架构师与开发者提高效率的10个工具分别是哪些
    Java架构师与开发者提高效率的10个工具分别是哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java 受到全球百万计开发者的追捧,已经演变为一门出色的编程语言。最终,...
    99+
    2023-06-17
  • 分布式计算中,Python和NumPy究竟哪个更加高效?
    随着数据量和计算规模的不断增加,分布式计算已经成为了当今计算领域的重要研究方向。在分布式计算中,选择合适的编程语言和工具是至关重要的,因为它们直接关系到计算效率和性能。Python和NumPy是两个非常流行的工具,它们在分布式计算中的性能如...
    99+
    2023-10-20
    numpy leetcode 分布式
  • Java和JavaScript:如何在Shell编程中提高效率?
    Shell编程是一种常用的脚本编程语言,它可以在Linux和Unix系统上自动化执行命令和任务。然而,由于Shell本身的限制,编写复杂的脚本可能会变得比较困难。在这种情况下,使用Java和JavaScript可以提高Shell编程的效率...
    99+
    2023-11-11
    javascript shell 关键字
  • 让你效率更高的CSS代码技巧有哪些
    这篇文章主要为大家展示了“让你效率更高的CSS代码技巧有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“让你效率更高的CSS代码技巧有哪些”这篇文章吧。 1...
    99+
    2024-04-02
  • Java中LinkedList和ArrayList的效率分析
    在 Java 中,LinkedList 和 ArrayList 的性能是不同的,具体取决于你所需要的操作。 对于频繁的插入和删除操作,LinkedList 的性能通常更好,因为它使用...
    99+
    2023-02-10
    Java LinkedList和ArrayList效率 Java LinkedList ArrayList
  • 提高效率的Java代码小技巧有哪些
    提高效率的Java代码小技巧有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言代码优化 ,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改...
    99+
    2023-06-16
  • 怎样提高mysql中or和in的效率
    怎样提高mysql中or和in的效率,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。前言今天遇到了一个网站卡死的问题,过了几分钟...
    99+
    2024-04-02
  • Java 和 Unix:如何提高同步响应的效率?
    Java 和 Unix 都是广泛使用的编程语言和操作系统。在编写高效的应用程序时,同步响应的效率是非常重要的因素。本文将介绍一些技巧和最佳实践,帮助您提高 Java 和 Unix 中同步响应的效率。 一、Java 中的同步响应 Java ...
    99+
    2023-09-27
    unix 同步 响应
  • Java和Unix Shell:哪个更适合高负载环境?
    Java和Unix Shell:哪个更适合高负载环境? 在高负载环境下,选择正确的编程语言和工具非常重要。Java和Unix Shell都是广泛使用的编程语言和工具,但是它们在高负载环境下的表现如何呢?本文将探讨Java和Unix Shel...
    99+
    2023-08-02
    unix load shell
  • Java中的clone()和Cloneable接口使用方法是什么
    本篇内容介绍了“Java中的clone()和Cloneable接口使用方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!clone()...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作