通过构造方法创建的字符串对象和直接赋值方式创建字符串对象有什么区别
咋们首先看代码:
package com.string.str;
/*
* 通过构造方法创建的字符串对象和直接赋值方式创建字符串对象有什么区别
* 通过构造方法创建字符串对象是在堆内存,,new的时候在堆内存;直接赋值是在方法区的常量池
* ==:
* 基本数据类型:比较的是基本数据类型的值是否相同
* 引用数据类型:比较的是引用数据类型的地址是否相同
*
*/
public class StringDemo02 {
public static void main(String[] args) {
String s1 = new String("hello");
String s2 = "hello";
System.out.println("s1:"+s1);
System.out.println("s2:"+s2);
System.out.println("s1 == s2:"+(s1 == s2));
//out:
/*
* s1:hello
s2:hello
s1 == s2:false*/
String s3 = "hello";
System.out.println("s1 == s3:"+(s1 == s3));
System.out.println("s2 == s3:"+(s2 == s3));
//out:
/*
* s1 == s3:false
s2 == s3:true ----------?*/
}
}
第一次看完代码我蒙圈。。。。。。。。。。
接下来我的理解画图: