首先,我们要搞清楚,在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/

java 中 String 类的几个问题的更多相关文章

  1. Java中String类的方法及说明

    String : 字符串类型 一.      String sc_sub = new String(c,3,2);    //      String sb_copy = new String(sb) ...

  2. java中String类学习

    java中String类的相关操作如下: (1)初始化:例如,String s = “abc”; (2)length:返回字符串的长度. (3)charAT:字符操作,按照索引值获得字符串中的指定字符 ...

  3. 在java中String类为什么要设计成final

    在java中String类为什么要设计成final? - 胖胖的回答 - 知乎 https://www.zhihu.com/question/31345592/answer/114126087

  4. 【转载】Java中String类的方法及说明

    转载自:http://www.cnblogs.com/YSO1983/archive/2009/12/07/1618564.html String : 字符串类型 一.      String sc_ ...

  5. 在java中String类为什么要设计成final?

    大神链接:在java中String类为什么要设计成final? - 程序员 - 知乎 我进行了重新排版,并且更换了其中的一个例子,让我们更好理解. String很多实用的特性,比如说“不可变性”,是工 ...

  6. Java中String类为什么被设计为final?

    Java中String类为什么被设计为final   首先,String是引用类型,也就是每个字符串都是一个String实例.通过源码可以看到String底层维护了一个byte数组:private f ...

  7. java中String类、StringBuilder类和StringBuffer类详解

    本位转载自http://www.cnblogs.com/dolphin0520/p/3778589.html  版权声明如下: 作者:海子 出处:http://www.cnblogs.com/dolp ...

  8. java 中String类的常用方法总结,带你玩转String类。

    String类: String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.String类对象创建后不能修改,StringBuffer & St ...

  9. java中String类为什么不可变?

    在面试中经常遇到这样的问题:1.什么是不可变对象.不可变对象有什么好处.在什么情景下使用它,或者更具体一点,java的String类为什么要设置成不可变类型? 1.不可变对象,顾名思义就是创建后的对象 ...

  10. 在Java中String类为什么要设计成final?String真的不可变吗?其他基本类型的包装类也是不可变的吗?

    最近突然被问到String为什么被设计为不可变,当时有点懵,这个问题一直像bug一样存在,竟然没有发现,没有思考到,在此总结一下. 1.String的不可变String类被final修饰,是不可继承和 ...

随机推荐

  1. Win7中隐藏的上帝模式——GodMode

    Win7中隐藏的上帝模式——GodMode ~ Windows7中的隐藏模式 ~   随意新建一个文件夹吧,然后重命名为:   GodMode.{ED7BA470-8E54-465E-825C-997 ...

  2. 什么是WEB服务器?

    简单的理解:  一个公用的服务器,你可以放置网站文件,让全世界浏览,可以放文件,全世界下载.web服务器一般指网站服务器.  web服务器是基于网站架设的服务器,我们平时可以浏览的网页都是在别人的服务 ...

  3. yaf运行错误:Class 'Yaf_Application' not found

    提示:致命错误 Yaf_Application 基类没有加载进去 一检查:phpinfo() 里yaf 扩展有没有安装上 扩展也安装进去了 这时在分布式配置文件的重写 也是正确 这时百思不得其解,没办 ...

  4. linux系统启动流程

    BIOS: (Basic Input Output System)基本输入输出系统,一般保存在主板上的BIOS芯片中 BIOS是计算机启动时运行的第一个程序,负责检查硬件并且查找可启动设备. 可启动设 ...

  5. 例题6-4 Broken Keyboard UVa11988

    题目分析: 起初这道题目没有做出来,原因是我一直想把整块区域一并插入,而不是逐个插入.今后做题应该注意这个问题,把问题分解去考虑,也许会少走许多弯路. 下边附上AC代码 #include <cs ...

  6. jQuery 遍历用法

    jQuery 遍历 DOM 树 parent() 方法返回被选元素的直接父元素(找爸爸). parents() 方法返回被选元素的所有祖先元素,它一路向上直到文档的根元素 (找长辈). parents ...

  7. 51nod1270 数组的最大代价(简单dp)

    ---恢复内容开始--- 1270 数组的最大代价 题目来源: HackerRank 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 数组A包含N个 ...

  8. Python-Day2 Python基础进阶之数据类型

    一.数据类型 Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Sets(集合) Dictionary(字典) Python ...

  9. iOS 进阶 第三天(0326)

    0326 Xib:描述软件界面,轻量级,一般用来描述局部界面 Xib的获取,如下图所示: xib在我们开发的时候叫xib,但如果运行在我们手机里会生成nib.所以xib和nib两种方法来访问xib

  10. 删除word文档中表格后的空行

    处理办法为: 方法1:使上.下页边距数值缩小,从而使页面扩大能容纳下这一段落行.   方法2:光标处于最后段落行符号前,右键→段落→缩进和间距→间距→行距→固定值→设置值→1磅→确定.