美文网首页
java中关于String的一个小细节

java中关于String的一个小细节

作者: 电竞三傻 | 来源:发表于2018-05-30 09:53 被阅读0次

    我们知道,String是不可变的字符串,可以直接用字面量赋值。

    String str = "ABCD";

    也可以调用构造器创建对象

    String str1 = new String("ABCD");

    那么这两种方式有什么区别呢?

    Object类中有equals()方法,代码如下:

    简单粗暴的用==运算符,比较两个对象的hashcode(内存地址)是否相等。

    String类中覆写了equals方法,我们很明显的看出来,str和str1是“相等”的,更严格来讲,是内容的相等,而不是地址的相等。

    所以str == str1;//false

    str.equals(str1);//true

    还有,String str = "ABCD";

    最多创建一个对象,存放在常量池中,如果常量池中已经有该字面量了,就不会在创建。

    String str1 = new String("ABCD");

    new 肯定会在堆内存分配空间创建对象,所以至多创建两个对象。

    相关文章

      网友评论

          本文标题:java中关于String的一个小细节

          本文链接:https://www.haomeiwen.com/subject/xgqtsftx.html