Java:数据结构-再谈String类

devtools/2024/11/8 11:59:49/

字符串常量池

首先我们来思考这段代码,为什么运行结果一个是true,一个是false呢?

java">public class Test {public static void main(String[] args) {String s1="123";String s2="123";String s3=new String("555");String s4=new String("555");System.out.println(s1==s2);System.out.println(s3==s4);}
}

 

在Java程序中,类似于:1, 2, 3,3.14,“hello”等字面类型的常量经常频繁使用,为了使程序的运行速度更快、 更节省内存,Java为8种基本数据类型和String类都提供了常量池。

常量池的存储方法

通过用new来创建String类的对象 

java">public class Test {public static void main(String[] args) {char[] ch =new char[]{'a','b','c'};String s1=new String(ch);String s2="abc";System.out.println(s1==s2);}

 

intern方法

intern 是一个native方法(Native方法指:底层使用C++实现的,看不到其实现的源代码),该方法的作用是手动将创建的String对象添加到常量池中。

java">public class Test {public static void main(String[] args) {char[] ch =new char[]{'a','b','c'};String s1=new String(ch);s1.intern();String s2="abc";System.out.println(s1==s2);}

 

 s1.intern();调用之后,会将s1对象的引用放入到常量池中,"abc" 在常量池中存在了,s2创建时直接用常量池中"abc"的引用,所以运行的结果为true。

希望能对大家有所帮助!!!!


http://www.ppmy.cn/devtools/132301.html

相关文章

Java Map介绍及实现原理

一、Map 介绍 在 Java 中,Map是一个接口,用于存储键值对(key-value pairs)。它提供了一系列方法来操作键值对,如添加、获取、删除等。Map的主要特点是可以根据键快速查找对应的值,非常适合需要通过特定标识…

Oracle Sql查询和性能优化(持续更新)

目录 索引优化 查询重写 EXISTS vs. IN 避免全表扫描 合理使用UNION操作符 优化子查询 执行计划分析 表设计优化 规范化与反规范化 分区表 存储参数调整 SGA配置 共享池 数据缓冲区 SGA自动管理 PGA配置 RAID配置 日志文件优化 性能诊断工具 AWR ASH 定期…

lua入门教程:lua函数

1. 定义函数 在 Lua 中,你可以使用 function 关键字来定义一个函数。以下是一个简单的例子: -- 定义一个名为 add 的函数,接受两个参数 a 和 b function add(a, b)return a b end你也可以使用匿名函数(lambda 函数)…

Ethernet 系列(8)-- 基础学习::ARP

目录 1. ARP的目的: 1.1 什么是ARP 1.2 什么时候用ARP 2. ARP如何工作: 2.1 主机-主机的直接通信 2.2 主机-路由-主机的间接通信 3. ARP header: 1. ARP的目的: 1.1 什么是ARP: ARP-地址解析协议,是第3层地址&#xff…

80后聊架构:架构设计中两个重要指标,延时与吞吐量(Latency vs Throughput) | 架构师之路...

《架构师之路:架构设计中的100个知识点》 3.延时与吞吐量 有朋友问我说,架构优化时,什么时候要重点优化延时,什么时候要重点优化吞吐量? 画外音:补充阅读材料在最后。 延时(Latency)…

【NOIP提高组】合唱队形

【NOIP提高组】合唱队形 C语言Java 💐The Begin💐点点关注,收藏不迷路💐 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设…

LeetCode :150. 逆波兰表达式求值(含求后缀表达式和中缀转后缀表达式)

目录 题目描述: 代码: 拓展: 中缀表达式转后缀表达式代码: 题目描述: 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为 、-、* 和 / 。每个操作数…

adb 命令查看设备存储占用情况

有时会要用adb 命令查看设备存储占用情况。 一般使用df、du 命令去排查。但要注意 adb shell 和linux中的命令参数是有些区别的。 可以通过du --help 看支持哪些参数。 下面是在Android 下测试成功的指令。 首先df 查看整体占用分布情况。 假设要排查/data 目录下的文件占用…