知识大全 深入了解String

Posted

篇首语:学向勤中得,萤窗万卷书。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 深入了解String相关的知识,希望对你有一定的参考价值。

深入了解String  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

一 从根本上认识java lang String类和String池   首先 我建议先看看String类的源码实现 这是从本质上认识String类的根本出发点 从中可以看到 String类是final的 不可被继承 public final class String String类是的本质是字符数组char[] 并且其值不可改变 private final char value[]; 然后打开String类的API文档 可以发现 String类对象有个特殊的创建的方式 就是直接指定比如String x = abc abc 就表示一个字符串对象 而x是 abc 对象的地址 也叫做 abc 对象的引用 String对象可以通过 + 串联 串联后会生成新的字符串 也可以通过concat()来串联 这个后面会讲述 Java运行时会维护一个String Pool(String池) JavaDoc翻译很模糊 字符串缓冲区 String池用来存放运行时中产生的各种字符串 并且池中的字符串的内容不重复 而一般对象不存在这个缓冲池 并且创建的对象仅仅存在于方法的堆栈区 下面是个系统内存示意图   创建字符串的方式很多 归纳起来有三类 其一 使用new关键字创建字符串 比如String s = new String( abc ); 其二 直接指定 比如String s = abc ; 其三 使用串联生成新的字符串 比如String s = ab + c ;   二 String对象的创建   String对象的创建也很讲究 关键是要明白其原理 原理 当使用任何方式来创建一个字符串对象s时 Java运行时(运行中JVM)会拿着这个X在String池中找是否存在内容相同的字符串对象 如果不存在 则在池中创建一个字符串s 否则 不在池中添加   原理 Java中 只要使用new关键字来创建对象 则一定会(在堆区或栈区)创建一个新的对象   原理 使用直接指定或者使用纯字符串串联来创建String对象 则仅仅会检查维护String池中的字符串 池中没有就在池中创建一个 有则罢了!但绝不会在堆栈区再去创建该String对象   原理 使用包含变量的表达式来创建String对象 则不仅会检查维护String池 而且还会在堆栈区创建一个String对象   另外 String的intern()方法是一个本地方法 定义为public native String intern(); intern()方法的价值在于让开发者能将注意力集中到String池上 当调用 intern 方法时 如果池已经包含一个等于此 String 对象的字符串(该对象由 equals(Object) 方法确定) 则返回池中的字符串 否则 将此 String 对象添加到池中 并且返回此 String 对象的引用     最后 有几点问题请大家注意 String a; 与String a=null在作为类变量时候是等价的 在局部变量则不同 null表示一个空引用 String a=null意思是在栈中声明了a 但是这个a没有指向任何地址 此时我们注意到String a 在栈中声明了a 但是也没有指向任何地址 但是java的语法检查如果在局部变量中 String a;是不能直接使用的 String a=null中的这个a可以直接使用 cha138/Article/program/Java/ky/201311/28607

相关参考

知识大全 java中String的一些方法深入解析

java中String的一些方法深入解析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!以下是对ja

知识大全 深入了解Struts Validator

开发框架:深入了解StrutsValidator  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 深入了解 Struts Validator

开发框架:深入了解StrutsValidator  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!St

知识大全 深入了解Oracle数据字典

深入了解Oracle数据字典  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  首先Oracle的字

知识大全 深入了解JVM内存结构

深入了解JVM内存结构  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  你对JVM内存结构是否熟悉

知识大全 超想打!怎么样可以入门(深入了解) 除了看nba呢

我是女生,最近喜欢上了篮球!超想打!怎么样可以入门(深入了解)除了看nba呢找个会打篮球的朋友教,从网上查一些篮球教学视频,看看怎样深入了解喜欢的女生?日常观察,加上了解她周围人对她的了解,她这样说的

知识大全 深入了解PowerBuilder的数据窗口

深入了解PowerBuilder的数据窗口  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Pow

知识大全 深入了解ASP.NET运行内幕

深入了解ASP.NET运行内幕  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  事情要知道根本所在

知识大全 深入了解ASP.NET中的“空”

深入了解ASP.NET中的“空”  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  空对于许多开发人

深入了解牛皮癣常识

在生活中牛皮癣是一个令人很讨厌的疾病,影响人的身体健康、心理健康,最重要的就是影响人们美观。生活中有很多牛皮癣患者,那么对于牛皮癣常识您了解多少呢?在临床上一定要在牛皮癣的护理上多下功夫,才能降低其发