Java中字符串内存位置
2017-09-06 20:40
429 查看
前言
总结一下:基本类型的变量数据和对象的引用都是放在栈里面的,对象本身放在堆里面,显式的String常量放在常量池,String对象放在堆中。常量池的说明
常量池之前是放在方法区里面的,也就是在永久代里面的,从JDK7开始移到了堆里面。String内存位置说明
显式的String常量String a = "test"; String b = "test";
第一句代码执行后就在常量池中创建了一个值为test的String对象;
第二句执行时,因为常量池中存在test所以就不再创建新的String对象了。
此时该字符串的引用在虚拟机栈里面。
String对象
String a = new String("testObj"); String b = new String("testObj");
Class被加载时就在常量池中创建了一个值为testObj的String对象,第一句执行时会在堆里创建new String("testObj")对象;
第二句执行时,因为常量池中存在testObj所以就不再创建新的String对象了,直接在堆里创建new String("testObj")对象。
验证一下
/** * */ public class Client { public static void main(String[] args){ String str1 = "abcd"; String str2 = "abcd"; System.out.println(str1==str2);//true String str3 = new String("abcdabcd"); String str4 = new String("abcdabcd"); System.out.println(str3==str4);//false } }
返回结果:
true false
相关文章推荐
- Java中字符串内存位置浅析
- Java中字符串内存位置浅析
- Java中字符串内存位置浅析
- 基于Java中字符串内存位置详解
- Java中字符串内存位置浅析
- java+内存分配及变量存储位置的区别
- java 找出一个字符在 一个字符串中的位置
- JAVA中关于字符串在内存的存储
- java+内存分配及变量存储位置的区别
- JAVA内存存储数据的位置
- Java笔记13:StringBuffer字符(字符串1.insert(位置,参数))
- <Java>使用String读取文件名称获取得定位置的字符串
- java+内存分配及变量存储位置的区别
- ROM,RAM,Android存储目录,Java代码中对内存的使用,ART的运行位置
- java移动字符串显示位置
- Java 实例 - 查找字符串最后一次出现的位置
- 字符串内存理解和js加密解密与java后端解密对应方法
- Bash字符串处理(与Java对照) - 20.查找子串的位置
- java按指定的字节Byte的起始位置截取长度截取字符串
- Java 类中各成分加载顺序 和 内存中的存放位置