论String类型值比较

Posted 姩澕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了论String类型值比较相关的知识,希望对你有一定的参考价值。

String 为什么不能被继承?

因为它被final 修饰,成为不可变类 , 类似的还有 Integer等其它包装类
    public static void main(String[] args) {
            String a = "hello2";
            final String b = "hello";
            String d = "hello";
            String c = b + 2;
            String e = d + 2;
            System.out.println(a == c);
            System.out.println(a == e);
        }

上述代码比较的时候为何第一次为true,第二次为false?

因为第一次和c比较,c是由b+2组成的,b是被final修饰的,它在程序编译期就可以被确定,所以通过查看编译后的程序就可以发现c在编译后成为了hello2
又因为字符串被缓存再常量池,所以两次hello2 指向的是同一地址。


第二次为false是因为,查看字节码发现在+2的时候,是实例化stringbuillder 通过apped去拼接的hello和2最后将其tostring
地址是stringbuiller实例化后的地址,所以比较时不相等。

以上是关于论String类型值比较的主要内容,如果未能解决你的问题,请参考以下文章

课外阅读亮剑小说片段 毕业论文

Swift和Java关于集合类型的比较

C89:论常用的字符串函数

论如何设计一款端对端加密通讯软件

字符串比较方法:“==”操作符;RefernceEquals;String.Equals方法;String.Compare方法;String.CompareOrdinal方法。

无法将 java.lang.String 类型的属性值转换为所需的 java.time.LocalDateTime 类型