String s = "xyz" 和 String s = new String("xyz") 比较
时间: 2023-11-12 09:38:59 浏览: 67
在 Java 中,String s = "xyz" 和 String s = new String("xyz") 都可以创建一个包含字符串 "xyz" 的 String 对象。但是它们之间有一些细微的差别。
1. 在内存中的存储方式不同:String s = "xyz" 是通过字符串常量池存储的,而String s = new String("xyz")则是通过堆内存存储的。
2. 字符串常量池中只会存在一个 "xyz" 对象,而通过 new 关键字创建的 String 对象则会在堆内存中新开辟一个存储空间,不管该字符串是否已经存在于字符串常量池中。
3. 对于只有 String s = "xyz" 的情况,Java 会在编译时就将其转换为常量,因此它的效率更高;而对于 String s = new String("xyz") 的情况,Java 在运行时才会创建一个新的对象,因此效率相比前者要低一些。
因此,推荐使用 String s = "xyz" 来创建字符串对象,除非你确实需要在新的堆内存空间中创建一个新的 String 对象,才使用 String s = new String("xyz")。
相关问题
string s = new string(“xyz”);创建了几个字符串对象
这行代码创建了一个包含字符串 "xyz" 的字符串对象。这个字符串对象被存储在变量 s 中。字符串对象是一个不可变的序列,可以用来存储文本数据。字符串字面量可以用单引号或双引号表示,也可以用 Unicode 编码表示。
下面代码中创建了几个String对象 public static void main(String[] args){ String s = new String("xyz"); } A.4个 B.3个 C.1个 D.2个
B. 3个。在这段代码中,创建了 3 个 String 对象。
- 第一个是常量池中的字符串"xyz",它是编译时就已经存在的。
- 第二个是使用 new 关键字创建的字符串对象,它在堆内存中分配空间,并将常量池中的字符串"xyz"复制一份到堆内存中。
- 第三个是变量 s 引用的字符串对象,它指向堆内存中的字符串对象。
阅读全文