字符串pool 引用相加和字面量相加

xiaoxiao2021-02-27  213

public static final String AB = "ab"; public static final String C = "c"; public static void main(String[] args) { String s1 = "abc"; String s2 = "ab"; String s3 = "c"; System.out.println(s1 == (s2+s3)); System.out.println(s1 == (AB+C)); System.out.println(s1 == ("ab"+"c")); } 开始我以为三个都是输出 true,然而,运行后却是 false true true

第十行所比较的不是同一个内存指向!

找了些资料,原来字符串在做“+”操作,

如果是字面量(“abc”这样,或者static final 修饰的字符串)那“+”号两边比较的字符串都是pool中的字符串;

如果“+”两边有一边不是字面量,那比较的字符串一个是pool中的一个是堆中的,这样比较内存指向的话,显然是false了

转载请注明原文地址: https://www.6miu.com/read-10888.html

最新回复(0)