zoukankan      html  css  js  c++  java
  • String与new String()的区别

    JVM为了提升性能和减少内存开销,避免字符串的重复创建,维护了一块特殊的内存空间——字符串实例池。

    String赋值的两种方式。

    1、String str = "test";

    以这种方式赋值时,JVM会先从字符串实例池中查询是否存在"test"这个对象,

    如果存在,直接把实例池中"test"的地址返回给str。如果不存在,则会在实例池中创建"test"对象,并把该对象的地址返回给str。

    所以通过==比较是,str1,str2指向的是同一地址,所以返回true;

    2、String str = new String("test");

    以这种方式赋值时,JVM会先从字符串实例池中查询是否存在"test"这个对象,

    若不存在则会在实例池中创建"test"对象,同时在堆中创建"test"这个对象,然后将堆中的这个对象的地址返回赋给引用str。

    若实例池存在则直接在堆中创建"test"这个对象,然后将堆中的这个对象的地址返回赋给引用str。

    这时str1和str2分别指向堆中不同的地址,所以返回false; 

  • 相关阅读:
    ACM_“IP地址”普及(进制转换)
    goj 堆箱子咯(栈)
    ACM_夏天到了,又到了出游的季节
    ACM_迟到的祝福(四)
    ACM_梦中的函数
    ACM_ZHANGZHANG喜欢手表
    ACM_出题人这样不好吧
    ACM_Mystery
    ACM_Repeating Characters
    P1160 队列安排 luogu洛谷
  • 原文地址:https://www.cnblogs.com/wdfordream/p/9449710.html
Copyright © 2011-2022 走看看