
StringTable
文章平均质量分 50
StringTable
小丁学Java
这个作者很懒,什么都没留下…
展开
-
关于intern()的面试难题
【代码】关于intern()的面试难题。原创 2023-08-21 20:15:42 · 359 阅读 · 0 评论 -
new String()到底创建了几个对象
【代码】new String()到底创建了几个对象。new String("a")+new String("b")会创建几个对象?原创 2023-08-18 21:31:37 · 286 阅读 · 4 评论 -
intern()的使用和理解
如果不是用双引号声明的String对象,可以使用String提供的intern方法:intern方法会从字符串常量池中查询当前字符串是否存在,若不存在就会将当前字符串放入常量池中。原创 2023-08-18 19:34:47 · 261 阅读 · 0 评论 -
为什么String字符串拼接的效率要比append操作的效率低?
因为每次使用字符串拼接方式,都会创建一个新的StringBuilder对象和一个新的String对象。而使用StringBuilder只需要创建一个对象,然后在该对象上不断追加字符串即可。由于创建对象需要时间,因此使用StringBuilder拼接字符串的速度更快。原创 2023-08-18 18:06:00 · 315 阅读 · 2 评论 -
字符串变量拼接操作的底层原理
在java中,字符串变量拼接操作使用的是StringBuilder或StringBuffer类,这两个类都是可变的字符串缓冲区。java中的字符串是不可变的,因此在进行字符串拼接时需要使用可变的字符串缓冲区,以避免不必要的内存分配和复制。具体来说,当使用 "+" 运算符连接两个字符串时,Java会创建一个StringBuilder对象,把第一个字符串添加到StringBuilder中,然后再把第二个字符串添加到StringBuilder中。最后,调用StringBuilder的toString()方法原创 2023-08-18 17:34:36 · 400 阅读 · 2 评论 -
字符串拼接操作的面试题讲解
字符串拼接操作通常会产生新的字符串对象,这个新的字符串对象通常不会被放入常量池中,而是放在堆内存中的一个新的内存位置。这个因为字符串是不可变的,所以为了避免在常量池中创建过多的字符串对象,Java虚拟机规范不会对字符串拼接进行优化。因此,每次进行字符串拼接操作时,都会创建一个新的字符串对象,即使两个字符串的值相同,也会产生新的对象。如果想让字符串拼接的值在常量池中,可以使用字符串常量拼接或者使用StringBuilder类的append方法。原创 2023-08-18 00:08:21 · 632 阅读 · 0 评论 -
两个案例熟悉String的基本操作
Java语言规范要求完全相同的字符串字面量,应该包含同样的Unicode字符序列(包含同一份码点序列的常量),并且必须是指向同一个String类实例。原创 2023-08-17 20:50:04 · 188 阅读 · 0 评论 -
String内存结构的分配位置
在Java语言中有8种基本数据类型和一种比较特殊的类型String。这些类型为了使它们在运行过程中速度更快、更节省内存,都提供了一种常量池的概念。常量池就类似一个Java系统级别提供的缓存。8种基本数据类型的常量池都是系统协调额,String类型的常量池比较特殊。它的主要使用方法有两种直接使用双引号出来的String对象会直接存储在常量池中。比如:String info=”坚持“;如果不是用双引号声明出来的String对象,可以使用String提供的intern()方法。原创 2023-08-17 19:26:59 · 267 阅读 · 0 评论 -
String底层Hashtable结构的说明
字符串常量池中是不会存储相同的字符串的。原创 2023-08-17 18:48:15 · 193 阅读 · 0 评论 -
为什么String在jdk8以前内部定义final char[ ] value 用于存储字符串数据,但是jkd9时却改为byte[ ]存储呢?(最详细解答疑惑)
String的不可变性原创 2023-08-17 14:23:35 · 174 阅读 · 1 评论