择善JAVA的学习关于String与内存
2015-07-17 22:26
218 查看
String st="abc";
String st2="abc";
System.out.pringln(st==st2); //输出true
String sd=new String("abc");
String sd2=new String("abc");
System.out.println(sd==sd2); //这里输出false
String sd3=sd2.intern();
System.out.println(sd3==sd2); //这里输出的是true
上面的是JAVA面试的常出的题,
没有new的时候,abc放到常量池里,常量池里面一个值得常量只能有一个,就是说常量池每个个体都是不同值的,所以st和st2指向的是相同的常量池的个体,所以第一个是true;第二个用new虽然是相同的值,但是他们是用new的,所以都会在推内存分别建立两个个体,但值一样。
如果new的时候常量池没有这个值,那么常量池也会放一个,等于new后在堆和常量池都建立了相同值的个体。
String st2="abc";
System.out.pringln(st==st2); //输出true
String sd=new String("abc");
String sd2=new String("abc");
System.out.println(sd==sd2); //这里输出false
String sd3=sd2.intern();
System.out.println(sd3==sd2); //这里输出的是true
上面的是JAVA面试的常出的题,
没有new的时候,abc放到常量池里,常量池里面一个值得常量只能有一个,就是说常量池每个个体都是不同值的,所以st和st2指向的是相同的常量池的个体,所以第一个是true;第二个用new虽然是相同的值,但是他们是用new的,所以都会在推内存分别建立两个个体,但值一样。
如果new的时候常量池没有这个值,那么常量池也会放一个,等于new后在堆和常量池都建立了相同值的个体。
相关文章推荐
- java中的enum枚举类型的适用范围
- Java_Iterator-------迭代器配合Listarray使用,具有更多的功能(转载)
- Java中多态性的实现
- Struts2入门:struts2环境配置和一个小例子
- JAVA--图形界面化
- [LeetCode][Java] Search a 2D Matrix
- Java学习笔记-------布局管理器
- Java中,什么是实现对象序列化?如何实现对象序列化?
- JAVA--多线程(很重要的呀)
- Java基础
- 使用Eclipse构建Maven的SpringMVC项目
- Java中流的分类
- Java学习之static关键字(下)
- [LeetCode][Java] Set Matrix Zeroes
- java回调机制学习
- [JDK]什么是JDK
- 内存大小设置 Java heap space错误
- 提高Java代码质量的Eclipse插件之Checkstyle的使用详解
- 提高Java代码质量的Eclipse插件之Checkstyle的使用详解
- Maven-Mac-Java