java中String s=new String() 创建了几个对象 - 面试宝典
【摘要】 在Java中,使用String s = new String()创建了两个对象。第一个对象是字符串常量池中的空字符串对象,它是在Java虚拟机启动时就被创建并放入常量池中的。当使用String s = new String()时,Java会在堆内存中创建一个新的字符串对象,内容与常量池中的空字符串一致。第二个对象是通过构造函数new String()在堆内存中创建的新...
在Java中,使用String s = new String()
创建了两个对象。
- 第一个对象是字符串常量池中的空字符串对象,它是在Java虚拟机启动时就被创建并放入常量池中的。当使用
String s = new String()
时,Java会在堆内存中创建一个新的字符串对象,内容与常量池中的空字符串一致。 - 第二个对象是通过构造函数
new String()
在堆内存中创建的新字符串对象。由于没有传入参数,所以该对象的内容也是空字符串。 因此,使用String s = new String()
创建了两个对象,一个位于常量池中,另一个位于堆内存中。
下面是一个示例的Java代码,展示了使用String s = new String()
创建了两个对象的情况:
javaCopy codepublic class Example {
public static void main(String[] args) {
String s = new String();
System.out.println(s); // 输出空字符串
// 判断两个对象是否相等
System.out.println(s == ""); // false,不是同一个对象
// 使用intern()方法将堆内存中的字符串对象放入常量池
String internedString = s.intern();
System.out.println(internedString == ""); // true,是同一个对象
}
}
在上面的代码中,使用new String()
创建了一个新的字符串对象,并将其赋值给变量s
。输出变量s
的值为一个空字符串。然后通过比较s
和""
(空字符串)的引用,可以看到它们并不是同一个对象。 接着使用intern()
方法将s
指向的字符串对象放入常量池中,并将返回的引用赋值给internedString
变量。通过比较internedString
和""
的引用,可以看到它们是同一个对象。 这样,通过String s = new String()
创建了两个对象,一个在堆内存中,一个在常量池中。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)