java 中 String 类的几个问题
2015-06-23 16:54
495 查看
首先,我们要搞清楚,在java中,引用和基本数据类型是存储在栈中的。而对象是存储在堆中的。
只有一个例外,就是String对象。
例如:
对于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/
只有一个例外,就是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概念
- java中Map,List与Set的区别
- Java代码访问Hbase测试
- java根据本地Ip获取mac地址
- java正则实现.,*
- Eclipse中设置在创建新类时自动生成注释
- Struts2核心工作原理解析
- 在OS X上使用eclipse远程连接Hadoop遇到的问题总结
- java中file目录管理(三)walk与local应用实例,及walk与local的区别
- 【这是一个JAVA开发者的博客~】
- java并发编程——基本线程机制1
- Java RTTI与反射
- fastJson在java后台转换json格式数据探究(一)
- struts2移除标签button的id传统的价值观念问题
- 生成条形码,java操作word文档
- Java并发编程:volatile关键字解析
- Eclipse更新的那点事
- 字符串通配符匹配*,?算法
- Java多线程编程— 概念以及常用控制
- 24、java操作xml方法