博客
关于我
String类对象两种实例化方式比较
阅读量:354 次
发布时间:2019-03-04

本文共 1043 字,大约阅读时间需要 3 分钟。

String类的实例化方式有两种,直接赋值和构造方法实例化,这两种方式在内存管理和字符串池中的处理上有显著差异。理解这两种方式的区别对于优化Java程序性能至关重要。

直接赋值实例化

直接赋值实例化是最常见且高效的方式。在这种模式下,只需将字符串直接赋值给String类对象即可完成实例化操作。这种方式的背后机制是Java的字符串池(String Pool)概念。具体来说:

  • 内存分配:当使用"mldn"这种形式赋值给String对象时,Java会自动将字符串内容存储在字符串池中。一旦字符串池中存在相同内容的字符串,系统会重复使用该内存块,避免重复分配。

  • 内存管理:这种方式会导致只分配一块内存空间,且该内存块会被字符串池统一管理,从而节省内存资源并提高程序性能。

  • 示例分析

    String strA = "mldn";String strB = "mldn";

    在上述代码中,strAstrB指向同一个内存块,因此strA == strB返回true

  • 构造方法实例化

    构造方法实例化则不同,它会导致内存的不一致分配:

  • 内存分配:使用new String("mldn")时,会创建一个新的String对象,独立占用一块内存空间。由于字符串池不会自动将新字符串存储到池中,Java会为每个String对象单独分配内存。

  • 内存管理:这种方式会导致内存浪费,因为每个String对象都有自己的独立内存块,无法利用字符串池的优势,可能导致内存占用增加。

  • 示例分析

    String strA = "mldn";String strB = new String("mldn");

    在上述代码中,strAstrB指向不同的内存块,因此strA == strB返回false

  • 内ern()方法的作用

    为了弥补构造方法实例化的不足,String类提供了intern()方法。调用该方法可以将String对象的内容提前加入字符串池,从而实现内存的共享。例如:

    String strA = "mldn";String strB = new String("mldn").intern();

    此时,strAstrB会指向同一个内存块,strA == strB返回true

    总结

    直接赋值实例化和构造方法实例化的主要区别在于内存管理方式:

    • 直接赋值:高效且自动入池,节省内存。
    • 构造方法:低效且不入池,可能导致内存浪费。

    在实际编码中,直接赋值是性能优越的选择,尤其是在涉及大量字符串操作的情况下。

    转载地址:http://qmwe.baihongyu.com/

    你可能感兴趣的文章
    Ormlite数据库
    查看>>
    orm总结
    查看>>
    os.path.join、dirname、splitext、split、makedirs、getcwd、listdir、sep等的用法
    查看>>
    os.system 在 Python 中不起作用
    查看>>
    OS2ATC2017:阿里研究员林昊畅谈操作系统创新与挑战
    查看>>
    OSCACHE介绍
    查看>>
    SQL--合计函数(Aggregate functions):avg,count,first,last,max,min,sum
    查看>>
    OSChina 周五乱弹 ——吹牛扯淡的耽误你们学习进步了
    查看>>
    SQL--mysql索引
    查看>>
    OSChina 周四乱弹 ——程序员为啥要买苹果手机啊?
    查看>>
    OSChina 技术周刊第十期,每周技术抢先看!
    查看>>
    OSError: no library called “cairo-2“ was foundno library called “cairo“ was foundno library called
    查看>>
    Osgi环境配置
    查看>>
    OSG中找到特定节点的方法(转)
    查看>>
    OSG学习:C#调用非托管C++方法——C++/CLI
    查看>>
    OSG学习:几何体的操作(二)——交互事件、Delaunay三角网绘制
    查看>>
    OSG学习:几何对象的绘制(三)——几何元素的存储和几何体的绘制方法
    查看>>
    OSG学习:几何对象的绘制(二)——简易房屋
    查看>>
    OSG学习:几何对象的绘制(四)——几何体的更新回调:旋转的线
    查看>>
    OSG学习:场景图形管理(一)——视图与相机
    查看>>