当前位置: 首页 > news >正文

String intern()方法

String intern 方法有什么作用?

    String.intern() 是一个 native(本地)方法,其作用是将指定的字符串对象的引用保存在字符串常量池中,并返回常量池中对应的字符串引用。

        当使用字面量创建字符串时,Java 会在编译期间自动将其添加到字符串常量池中。而使用 new String() 创建的字符串对象则会在堆中创建,不会自动添加到常量池中。

       通过调用 intern() 方法可以手动将字符串对象添加到常量池中,可以简单分为两种情况:

  1. 如果字符串常量池中保存了对应的字符串对象的引用,就直接返回该引用。
  2. 如果字符串常量池中没有保存了对应的字符串对象的引用,那就在常量池中创建一个指向该字符串对象的引用并返回。

使用 intern() 方法可以带来如下的好处:

  1. 节省内存:由于常量池中的字符串是唯一的,因此可以共享使用。使用 intern() 方法可以避免重复创建相同值的字符串对象,从而节省内存空间。

  2. 提高字符串比较效率:由于字符串常量池中的字符串是唯一的,使用引用比较两个字符串的相等性会比使用值比较更高效。通过将字符串对象添加到常量池中,可以通过引用比较来判断字符串的相等性,提高比较效率。

        需要注意的是,在常规的开发中,并不需要频繁地使用 intern() 方法,因为字符串常量池有一定的开销。只有在需要明确使用字符串常量池的特性时,或者在处理大量字符串时需要优化内存和比较效率时,才需要使用 intern() 方法。

示例代码(JDK 1.8) :

// 在堆中创建字符串对象”Java“
// 将字符串对象”Java“的引用保存在字符串常量池中
String s1 = "Java";
// 直接返回字符串常量池中字符串对象”Java“对应的引用
String s2 = s1.intern();
// 会在堆中在单独创建一个字符串对象
String s3 = new String("Java");
// 直接返回字符串常量池中字符串对象”Java“对应的引用
String s4 = s3.intern();
// s1 和 s2 指向的是堆中的同一个对象
System.out.println(s1 == s2); // true
// s3 和 s4 指向的是堆中不同的对象
System.out.println(s3 == s4); // false
// s1 和 s4 指向的是堆中的同一个对象
System.out.println(s1 == s4); //true

更多消息资讯,请访问昂焱数据。

http://www.lryc.cn/news/278080.html

相关文章:

  • springboot 物业管理系统
  • K8S--- kubectl auth
  • HarmonyOS 开发基础(九)forEach
  • 【小黑嵌入式系统第十四课】μC/OS-III程序设计基础(三)——信号量(任务同步资源同步)、事件标记组(与或多个任务)
  • PMP报考流程?
  • 【EI会议征稿通知】2024年机器学习与智能计算国际学术会议(MLIC 2024)
  • 第八篇 提升网页性能:深入解析HTTP请求优化策略(三)
  • 高版本ant-design动态引用icon
  • 【SQL】delete 与 truncate 命令的区别
  • 【ITK库学习】使用itk库进行图像分割(四):水平集分割
  • Kali Linux——aircrack-ng无线教程
  • 15.vdo管理
  • 安全漏洞周报(2024.01.01-2023.01.08)
  • msckf-vio 跑Euroc数据集,并用evo进行评估
  • 大模型LLM在 Text2SQL 上的应用实践
  • 数据库:园林题库软件(《城市绿地设计规范》答题卷一 )
  • MySQL之视图外连接、内连接和子查询的使用
  • MoE模型性能还能更上一层楼?一次QLoRA微调实践
  • Java线程学习笔记
  • 平面光波导_三层均匀平面光波导_射线分析法
  • IPV6学习记录
  • 使用proteus进行主从JK触发器仿真失败原因的分析
  • Golang基础入门及Gin入门教程(2024完整版)
  • 202312 青少年软件编程(C/C++)等级考试试卷(四级)电子学会真题
  • leetcode-合并两个有序数组
  • 网站怎么做google搜索引擎优化?
  • TDengine 签约西电电力
  • 赛门铁克OV代码签名证书一年多少钱?
  • Dockerfile详解
  • 零基础小白如何自学sql?