Java基础String对象

String对象的特点

1、通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但地址不同

char[] chs = {'a','b','c'};
String s1 = new String(chs);
String s2 = new String(chs);

上面的代码中JVM首先会创建一个字符数组,然后每一new都会有一个新的地址,只不过S1和S2参考的字符串内容是相同的。

2、以" "给出的字符串,只要字符序列相同(顺序和大小相同),无论程序代码出现几次,JVM只会建立一个String对象,并在字符串池中维护。

String s3 = "abc";
String s4 = "abc";

在上面的代码中,针对第一行代码,JVM回建立一个String对象放在字符串池中,并给S3参考,第二行则是让S4直接参考字符串池中的String对象,也就说他们本质上是同一个对象。

package com.string;

public class StringDemo02 {
    public static void main(String[] args){
        //构造方法方式得到对象
        char[] chs ={'a','b','c'};
        String s1=new String(chs);
        String s2=new String(chs);
        //直接赋值方式得到对象
        String s3="abc";
        String s4="abc";
        //比较字符串地址是否相同
        System.out.println(s1==s2);
        System.out.println(s1==s3);
        System.out.println(s3==s4);

        //比较字符串内容是否相同
        System.out.println(s1.equals(s2));
        System.out.println(s1.equals(s3));
        System.out.println(s3.equals(s4));

    }
}
posted @ 2020-07-12 20:29  Tamias  阅读(14)  评论(0编辑  收藏