zoukankan      html  css  js  c++  java
  • java 中 String 类的几个问题

    首先,我们要搞清楚,在java中,引用和基本数据类型是存储在栈中的。而对象是存储在堆中的。

    只有一个例外,就是String对象。

    例如:

    String str1="test";
    String str2="test";
    String str3=new String("test1");
    String str4=new String("test1");
    System.out.println(str1==str2);	
    System.out.println(str3==str4);
    

     对于str1和str2来说,他们所引用的对象"test"既不在栈中,也不在堆中。而是存储在String池中。

    String中只有一个"test",也就是说,无论你声明多少个str="test",String池中只存储了一份,所有str都指向同一个地址。

    而str3,str4的情况就不一样了。

    str3和str4用new关键字生成新对象,而new关键字所生成的对象都存储在堆中,因此str3和str4是指向两个不同的对象。

    所以,以上程序的输出为

    true

    false

    参考:http://sarin.iteye.com/blog/603684/

  • 相关阅读:
    C++ 的查漏补缺
    Model元数据解析
    Controller
    路由
    win8系统 Reflect 破解
    MVC运行原理
    源代码Log
    linq 分类
    EF 实体关系
    第二十六章 计算限制的异步操作
  • 原文地址:https://www.cnblogs.com/elnino/p/4595814.html
Copyright © 2011-2022 走看看