String对象总结

String对象总结

ID:37713088

大小:39.50 KB

页数:5页

时间:2019-05-29

String对象总结_第1页
String对象总结_第2页
String对象总结_第3页
String对象总结_第4页
String对象总结_第5页
资源描述:

《String对象总结》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、String对象总结作者:zangxtString类是Java中很重要的一个类,在此总结一下这个类的特别之处。下面的相关资料翻译自《java语言规范》(第三版)和《java虚拟机规范》(第二版),有的直接摘引了原文。下面的代码都是用SUNjdk1.6javac来编译。1.Stringliteral,这里将它翻译为字面常量,它由双引号包围的0个或多个字符组成,比如"abc","HelloWorld"等等。一个String字面常量总是引用相同的String实例,比如"abc","abc"两个常量引用的是同一个对象。程序测试:package

2、testPackage;classTest{    publicstaticvoidmain(String[]args){        Stringhello="Hello",lo="lo";        System.out.print((hello=="Hello")+"");        System.out.print((Other.hello==hello)+"");        System.out.print((other.Other.hello==hello)+"");        System.out.pr

3、int((hello==("Hel"+"lo"))+"");        System.out.print((hello==("Hel"+lo))+"");        System.out.println(hello==("Hel"+lo).intern());    }}classOther{staticStringhello="Hello";}另一个包:packageother;publicclassOther{staticStringhello="Hello";}输出:truetruetruetruefalsetrue结论

4、有六点:1) 同一个包下,同一个类中的相同的String字面常量表示对同一个String对象的引用。2) 同一个包下,不同的类中的相同的String字面常量表示对同一个String对象的引用。3) 不同包下,不同类中的相同String字面常量同样表示对同一个String对象的引用。4) 通过常量表达式计算的String,计算在编译时进行,并将它作为String字面常量对待。5) 通过连接操作得到的String(非常量表达式),连接操作是运行时进行的,会新创建对象,所以它们是不同的。6) 显式的对一个计算得到的String调用inter

5、n操作,得到的结果是已经存在的相同内容的String字面常量。补充说明:1)像这样的问题,Stringstr="a"+"b"+"c"+"d";运行这条语句会产生几个String对象?1个。参考上面第5条,通过常量表达式得到的String是编译时计算的,因此执行这句话时只有"abcd"着一个String对象存在。常量表达是的定义可以参考java语言规范。另例:   finalStringstr1="a";   Stringstr2=str1+"b";执行第二句话会有几个String对象产生?1个。因为str1是常量,所以str1+"b"

6、也是常量表达式,在编译时计算。  遇到这种问题时,不要说它依赖于具体的编译器或者虚拟机实现,因为这就是规范里有的。一般的说,java的编译器实现应该遵守《java语言规范》,而java虚拟机实现应该遵守《java虚拟机规范》。2)不要这样使用字符串:Stringstr=newString("abc"); 参考文档中的说明:StringpublicString(Stringoriginal)  初始化一个新创建的String对象,使其表示一个与参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的副本。由于String是不可变的,

7、所以无需使用此构造方法,除非需要original的显式副本。参数:original-一个String。注意:无需使用此构造方法!!!3)单独的说明第6点:Stringstr=newString("abc");str=str.intern();  当调用intern方法时,如果池已经包含一个等于此String对象的字符串(用equals(Object)方法确定),则返回池中的字符串引用。否则,将此String对象添加到池中,并返回此String对象的引用。  很明显,在这个例子中"abc"引用的对象已经在字符串池中了,再调用intern

8、返回的是已经存在池中内容为"abc"的字符换对象的引用。在上面的例子中也说明了这个问题。2.String类的实例表示表示Unicode字符序列。String字面常量是指向String实例的引用。(字面常量是“引用”!)3

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。