一个示例:
package cn.it_01;
/*
* 字符串对象用构造方法创建和直接赋值有什么区别呢?
* 通过构造方法创建的字符串对象是在堆内存
* 直接赋值创建的字符串对象是在方法区的常量池
*
* ==:
* 基本数据类型:比较的是基本数据类型的值是否相等
* 引用数据类型:比较的是引用数据类型的地址值是否相等
*/
public class StringDemo2 {
public static void main(String[] args) {
//字符串对象用构造方法创建
String s1=new String("hello");
System.out.println("s1:"+s1);
//字符串对象用直接赋值创建
String s2="hello";
System.out.println("s2:"+s2);
System.out.println("s1==s2:"+(s1==s2));
String s3="hello";
System.out.println("s3:"+s3);
System.out.println("s2==s3:"+(s2==s3));
}
}
结果:

内存示意图:

本文探讨了Java中通过构造方法和直接赋值创建字符串对象的区别,解释了它们在内存中的位置(堆与常量池),并展示了使用`==`进行比较时的不同结果。示例代码演示了字符串对象的创建和比较,强调了Java字符串对象的特性。


被折叠的 条评论
为什么被折叠?



