通过构造方法创建的字符串对象和直接赋值方式创建字符串对象有什么区别

咋们首先看代码:

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   ----------?*/
    }
}

第一次看完代码我蒙圈。。。。。。。。。。

接下来我的理解画图:

猜你喜欢

转载自blog.csdn.net/weixin_42698882/article/details/81879541
今日推荐