String的小小知识连带实际代码解析

public class TestString {
    
    
    public static void main(String[] args) {
    
    
        String a = "abc";
        String b = "abc";
        System.out.println(a == b);
        System.out.println(a.equals(b));
        a += 123;
        b += 123;
        //可以看String的源码 定义的是常量的所以不能更改,但如果一旦更改,就会重新NEW
        System.out.println(a == b);
    }
}

解析:因为这里的字符串没有进行NEW进行赋值,所以进行比较地址值都是一致的,为new,但是当进行相加的时候,就会重新进行new一个新的字符串,因为String底层源码定义为fial无法更改的,所以进行值的更改时,需要new一个新的字符串,所以哪怕相加相同的值,但已经不是同一个对象,所以是false。
在这里插入图片描述
下图是String的源码
在这里插入图片描述

おすすめ

転載: blog.csdn.net/wang5g/article/details/121281729