当前位置:首页 > JAVA > 正文内容

String str="i"与 String str=new String(“i”)一样吗

高老师1年前 (2023-07-05)JAVA310
在大多数情况下,String str = "i"String str = new String("i") 是等效的,它们都创建了一个包含字符 "i" 的字符串对象。然而,在细微的方面上,它们之间存在一些差异。
1.字符串池:在Java中,字符串池(String Pool)是一块特殊的内存区域,用于存储字符串常量。当使用
String str = "i" 时,编译器首先检查字符串池中是否存在相同内容的字符串,如果存在,则直接将变量 str 指向池中的字符串对象。因此,如果你再次使用相同的字符串,编译器将重用池中的对象,而不会创建新的对象。而使用 String str = new String("i") 时,它将始终创建一个新的字符串对象,无论池中是否存在相同的字符串。
2.对象引用:在第一种情况下,str 变量直接指向字符串池中的对象。而在第二种情况下,str 变量指向通过 new 关键字创建的新的字符串对象。这意味着两者在内存中引用的是不同的对象,即使它们的内容相同。
下面是一个示例,演示了上述差异:
String str1 = "i";
String str2 = "i";

String str3 = new String("i");
String str4 = new String("i");

System.out.println(str1 == str2); // true
System.out.println(str3 == str4); // false
在这个示例中,str1str2 引用的是相同的字符串对象,因为编译器重用了字符串池中的对象。而 str3str4 引用的是不同的字符串对象,因为它们是通过 new 关键字创建的。
总结起来,尽管 String str = "i"String str = new String("i") 在大多数情况下会产生相同的结果,但它们在内部的处理方式上有所不同,这可能会对一些特定的使用场景产生影响。通常情况下,推荐使用第一种形式来创建字符串对象,因为它更具效率并利用了字符串池的特性。


扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.5b1.cn/post/449.html

分享给朋友:

“String str="i"与 String str=new String(“i”)一样吗” 的相关文章

java一个类可以有多个构造方法

java一个类可以有多个构造方法

java一个类可以有多个构造方法,根据传参类型和个数来匹配执行哪个构造方法。public class Member {     public Member(){      ...

java增强型for循环

java增强型for循环

Java5 引入了一种主要用于数组的增强型 for 循环,类似js中的for inpublic class Member {     public static void main(String[]&...

java Character 类,java判断字符是否是一个字母,java判断字符是否是一个数字,java判断字符是否是一个空白,java判断字符是否是小写字母,java判断字符是否是大写字母,java转换字符为大写,java转换字符为小写

java Character 类,java判断字符是否是一个字母,java判断字符是否是一个数字,java判断字符是否是一个空白,java判断字符是否是小写字母,java判断字符是否是大写字母,java转换字符为大写,java转换字符为小写

java判断字符是否是一个字母System.out.println(Character.isLetter('a'));java判断字符是否是一个数字System.out.println(Character.isDigit('0'));java判断字符是否是一个空白Sy...

java String 类 ,java 字符串类,java创建字符串,java获取字符串长度,java连接字符串,java格式化字符串

java String 类 ,java 字符串类,java创建字符串,java获取字符串长度,java连接字符串,java格式化字符串

在java中字符串属于对象,刚开始我就疑惑为什么int char等类型都是小写,结果String是大写,java太反人类,后来才知道String是对象。(1).java创建字符串String text = "net"; String tex...

java数组,java创建数组,java创建数组并赋值,java数组元素个数,java foreach 循环数组,java数组排序

java数组,java创建数组,java创建数组并赋值,java数组元素个数,java foreach 循环数组,java数组排序

(1).创建数组double[] myList = new double[size];  //推荐创建方式 double myList[] = new double[size];  ...

java日期和时间

java日期和时间

(1).java获取当前日期时间Date date = new Date();  System.out.println(date.toString());输出Fri Jul 02 10:29:55 CST 2021(2).java获取时间戳秒/毫秒D...