有关Java String常用方法的总结.docx

有关Java String常用方法的总结.docx

ID:59705024

大小:12.37 KB

页数:4页

时间:2020-11-13

有关Java String常用方法的总结.docx_第1页
有关Java String常用方法的总结.docx_第2页
有关Java String常用方法的总结.docx_第3页
有关Java String常用方法的总结.docx_第4页
资源描述:

《有关Java String常用方法的总结.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、有关JavaString常用方法的总结 本文首先讲述了JavaString的常用方法,用String常量池问题的四个例子对String对象的intern方法理解和分析。  String中的final用法和理解  1.finalStringBuffera=newStringBuffer("111");  2.finalStringBufferb=newStringBuffer("222");  3.a=b;//此句编译不通过  4.finalStringBuffera=newStringBuffer("111");  5.a.appen

2、d("222");//编译通过  6.  可见,final只对引用的"值"(即内存地址)有效,它迫使引用只能指向初始指向的那个对象,改变它的指向会导致编译期错误。至于它所指向的对象的变化,final是不负责的。  String常量池问题的四个例子  下面是几个常见例子的比较分析和理解:  1.[1]  2.Stringa="a1";  3.Stringb="a"+1;  4.System.out.println((a==b));//result=true  5.Stringa="atrue";  6.Stringb="a"+"true

3、";  7.System.out.println((a==b));//result=true  8.Stringa="a3.4";  9.Stringb="a"+3.4;  10.System.out.println((a==b));//result=true  11.  分析:JVM对于字符串常量的"+"号连接,将程序编译期,JVM就将常量字符串的"+"连接优化为连接后的值,拿"a"+1来说,经编译器优化后在class中就已经是a1。在编译期其字符串常量的值就确定下来,故上面程序最终的结果都为true。  1.[2]  2.Stri

4、nga="ab";  3.Stringbb="b";  4.Stringb="a"+bb;  5.System.out.println((a==b));//result=false  6.  分析:JVM对于字符串引用,由于在字符串的"+"连接中,有字符串引用存在,而引用的值在程序编译期是无法确定的,即"a"+bb无法被编译器优化,只有在程序运行期来动态分配并将连接后的新地址赋给b。所以上面程序的结果也就为false。  1.[3]  2.Stringa="ab";  3.finalStringbb="b";  4.Stringb="

5、a"+bb;  5.System.out.println((a==b));//result=true  6.  分析:和[3]中唯一不同的是bb字符串加了final修饰,对于final修饰的变量,它在编译时被解析为常量值的一个本地拷贝存储到自己的常量池中或嵌入到它的字节码流中。所以此时的"a"+bb和"a"+"b"效果是一样的。故上面程序的结果为true。  1.[4]  2.Stringa="ab";  3.finalStringbb=getBB();  4.Stringb="a"+bb;  5.System.out.println

6、((a==b));//result=false  6.privatestaticStringgetBB(){  7.return"b";  8.}  9.  分析:JVM对于字符串引用bb,它的值在编译期无法确定,只有在程序运行期调用方法后,将方法的返回值和"a"来动态连接并分配地址为b,故上面程序的结果为false。  通过上面4个例子可以得出得知:  1.Strings="a"+"b"+"c";  2.  就等价于Strings="abc";  1.Stringa="a";  2.Stringb="b";  3.Stringc="

7、c";  4.Strings=a+b+c;  5.  这个就不一样了,最终结果等于:  1.StringBuffertemp=newStringBuffer();  2.temp.append(a).append(b).append(c);  3.Strings=temp.toString();  4.  由上面的分析结果,可就不难推断出String采用连接运算符(+)效率低下原因分析,形如这样的代码:  1.publicclassTest{  2.publicstaticvoidmain(Stringargs[]){  3.Stri

8、ngs=null;  4.for(inti=0;i<100;i++){  5.s+="a";  6.}  7.}  8.}  9.  每做一次+就产生个StringBuilder对象,然后append后就扔掉。下次循环再

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

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

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