字符串对象用构造方法创建和直接赋值的区别(java)

字符串对象用构造方法创建和直接赋值的区别(java)

一个示例:

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 if中String数组赋值 java给字符串赋值_java if中String数组赋值

内存示意图:

java if中String数组赋值 java给字符串赋值_构造方法_02

字符串对象用构造方法创建和直接赋值的区别