JavaSE 6.0学习(字符串-----优异的内存组织机制)
来源:互联网 发布:美版iphone有4g网络 编辑:程序博客网 时间:2024/04/30 13:19
1. 对象的创建有两种方式:
String 引用变量名 = “字符串内容”
String 引用变量名 = new String(<参数序列>)
说明: 字符串为空串表示字符串中什么内容也没有,这与null值是不同的,null表示引用没有指向对象。
2. String对象的内存机制
使用简单语法创建字符串对象时,按如下步骤进行:
⑴首先检验字符串常量池中是否存在与要创建的字符串内容相同的对象;
⑵若不存在,则新创建一个包含该内容的字符串对象,并让引用变量指向该对象;
若存在,则将字符串引用直接指向该对象;
使用new语法创建字符串对象时,按如下步骤进行:
⑴首先在堆(不是常量池)中创建一个包含指定内容的字符串对象,并将字符串引用指向该对象;
⑵去字符串常量池中查看,是否存在与该内容相同的对象;
⑶若存在,将new方法创建的字符串对象与已存在的对象联系起来;
⑷若不存在,则在字符串常量池中再创建一个包含该内容的字符串对象,并将堆中的对象与字符串中新创建的字符串对象联系起来。
public String intern()
该方法将返回指定字符串在字符串常量池中对应对象的引用,若其本身就在字符串常量池中,则直接返回自己的引用,若在堆中,则返回字符串常量池中其联系对象的引用。
3. String类的对象内容永远不可变,因而要更改字符串内容,只有将引用指向新的对象,这将浪费内存,StringBuffer类允许对其对象内容进行修改,而不产生冗余的中间对象,,因而可以弥补String类的不足。尤其是在进行大量连接操作的时候。
4. StringBuilder类与StringBuffer类具有同样的功能,不过StringBuilder类的字符串编辑方法并没有同步,在多线程同时操作时可能会产生问题,因此适合单线程操作。
- JavaSE 6.0学习(字符串-----优异的内存组织机制)
- <JavaSE学习笔记>面向对象(2):Java内存机制
- JavaSE 学习参考:反射机制(1)
- wcf 宿主不通的优异(NETTCP协议)
- JavaSE学习笔记之类的加载机制与反射
- [javase学习笔记]-4.3 函数的内存加载过程
- [javase学习笔记]-5.2 数组的内存分配及特点
- [javase学习笔记]-6.3 对象的内存体现
- [javase学习笔记]-7.4 构造函数的内存加载
- [javase学习笔记]-8.6 静态的内存加载
- JavaSE 学习参考:反射机制(2)Class类
- JavaSE 学习参考:反射机制(3)Constructor类
- JavaSE 学习参考:反射机制(2)Field类
- JAVASE(字符串)
- JavaSE 6.0学习(封装类---鸿沟上的桥梁)
- JavaSE 6.0 学习(内部类----java世界的多面手)
- 字符串内存驻留机制
- JavaSE-smecking的学习笔记一()
- const 的使用
- JavaSE 6.0学习(封装类---鸿沟上的桥梁)
- 绘制灰度图像
- VC制作使用图片做为背景的对话框
- xvid setup guide
- JavaSE 6.0学习(字符串-----优异的内存组织机制)
- linux 下安装JBOSS
- CDC类
- oracle table()函数用法
- Working with ADO.NET Schema APIs
- 不良市民:Struts项目手把手(三)——合同管理系统
- Oracle 数据库锁机制
- Flash网站:2006年初做的一个Flash+ASP网站
- UL-LI 标签结合CSS的运用