Chinaunix首页 | 论坛 | 博客
  • 博客访问: 580474
  • 博文数量: 748
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-08 12:36
文章分类

全部博文(748)

文章存档

2011年(1)

2008年(747)

我的朋友

分类:

2008-09-08 18:18:42

    一、从根本上认识java.lang.String类和String池

    首先,我建议先看看String类的源码实现,这是从本质上认识String类的根本出发点。从中可以看到:
    1、String类是final的,不可被继承。public final class String。

    2、String类是的本质是字符数组char[], 并且其值不可改变。private final char value[];
    然后打开String类的API文档,可以发现:

    3、String类对象有个特殊的创建的方式,就是直接指定比如String x = "abc","abc"就表示一个字符串对象。而x是"abc"对象的地址,也叫做"abc"对象的引用。

    4、String对象可以通过“+”串联。串联后会生成新的字符串。也可以通过concat()来串联,这个后面会讲述。

    5、创建字符串的方式很多,归纳起来有三类:
    其一,使用new关键字创建字符串,比如String s1 = new String("abc");
    其二,直接指定。比如String s2 = "abc";
    其三,使用串联生成新的字符串。比如String s3 = "ab" + "c";

    6、运行时会维护一个String Pool(String池),Doc翻译很模糊“字符串缓冲区”。String池用来存放运行时中产生的各种字符串,并且池中的字符串的内容不重复。而一般对象不存在这个缓冲池,并且创建的对象仅仅存在于方法的堆栈区。下面是个系统内存示意图:

[1]  

【责编:Zenghui】

--------------------next---------------------

阅读(249) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~