三分钟理解Java中字符串(String)的存储和赋值原理
来源:互联网 发布:夺命call软件 编辑:程序博客网 时间:2024/05/16 07:59
可能很多java的初学者对String的存储和赋值有迷惑,以下是一个很简单的测试用例,你只需要花几分钟时间便可理解。
1.在看例子之前,确保你理解以下几个术语:
栈 :由JVM分配区域,用于保存线程执行的动作和数据引用。栈是一个运行的单位,Java中一个线程就会相应有一个线程栈与之对应。
堆 :由JVM分配的,用于存储对象等数据的区域。
常量池 :在编译的阶段,在堆中分配出来的一块存储区域,用于存储显式 的String,float或者integer.例如String str="abc"; abc这个字符串是显式声明,所以存储在常量池。
2.看这个例子,用JDK5+junit4.5写的例子,完全通过测试
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertSame;
import org.junit.Test;
/**
* @author Heis
*
*/
public class StringTest{
@Test
public void testTheSameReference1(){
String str1="abc";
String str2="abc";
String str3="ab"+"c";
String str4=new String(str2);
//str1和str2引用自常量池里的同一个string对象
assertSame(str1,str2);
//str3通过编译优化,与str1引用自同一个对象
assertSame(str1,str3);
//str4因为是在堆中重新分配的另一个对象,所以它的引用与str1不同
assertNotSame(str1,str4);
}
}
- 三分钟理解Java中字符串(String)的存储和赋值原理
- 三分钟理解Java中字符串(String)的存储和赋值原理
- 三分钟理解Java中字符串(String)的存储和赋值原理
- 三分钟理解Java中字符串(String)的存储和赋值原理
- 三分钟理解Java中字符串(String)的存储和赋值原理
- 三分钟理解Java中字符串(String)的存储和赋值原理
- 三分钟理解Java中字符串(String)的存储和赋值原理
- 三分钟理解Java中字符串(String)的存储和赋值原理
- Java中字符串(String)的存储和赋值原理
- Java中字符串(String)的存储和赋值原理
- Java中字符串(String)的存储和赋值原理
- 理解Java中字符串(String)的存储和赋值原理
- 理解Java中字符串(String)的存储和赋值原理
- Java中字符串(String)的存储和赋值原理以及String\StringBuffer\StringBiulder的异同
- Java字符串(String)的存储和赋值原理
- 三分钟理解Java继承和多态原理
- java中String 的==和equals;String直接赋值和使用new String()
- Java中String类通过new创建和直接赋值字符串的区别
- 设计模式笔记(16)---解释器模式(行为型)
- Assert - 断言
- 使用集合
- 快乐也需要有人分享
- google撤出事件是在演戏吗?
- 三分钟理解Java中字符串(String)的存储和赋值原理
- 珍惜世上的五个人
- 无需工具修改文件创建时间
- PCB设计注意事项
- 巧妙利用博客来推广网站的方法
- linux 0.11 内核学习 -- main.c,调用函数而已。
- webgame
- 理解J2ME应用模型之MIDlet Model
- 白领副业价值超正职 8小时外或能一夜暴富