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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
有关Java String常用方法的总结 本文首先讲述了Java String的常用方法,用String 常量池问题的四个例子对String对象的intern方法理解和分析。 String中的final用法和理解 1. final StringBuffer a = new StringBuffer(111); 2. final StringBuffer b = new StringBuffer(222); 3. a=b;//此句编译不通过 4. final StringBuffer a = new StringBuffer(111); 5. a.append(222);//编译通过 6. 可见,final只对引用的值(即内存地址)有效,它迫使引用只能指向初始指向的那个对象,改变它的指向会导致编译期错误。至于它所指向的对象的变化,final是不负责的。 String常量池问题的四个例子 下面是几个常见例子的比较分析和理解: 1. [1] 2. String a = a1; 3. String b = a + 1; 4. System.out.println((a == b)); //result = true 5. String a = atrue; 6. String b = a + true; 7. System.out.println((a == b)); //result = true 8. String a = a3.4; 9. String b = a + 3.4; 10. System.out.println((a == b)); //result = true 11. 分析:JVM对于字符串常量的+号连接,将程序编译期,JVM就将常量字符串的+连接优化为连接后的值,拿a + 1来说,经编译器优化后在class中就已经是a1。在编译期其字符串常量的值就确定下来,故上面程序最终的结果都为true。 1. [2] 2. String a = ab; 3. String bb = b; 4. String b = a + bb; 5. System.out.println((a == b)); //result = false 6. 分析:JVM对于字符串引用,由于在字符串的+连接中,有字符串引用存在,而引用的值在程序编译期是无法确定的,即a + bb无法被编译器优化,只有在程序运行期来动态分配并将连接后的新地址赋给b。所以上面程序的结果也就为false。 1. [3] 2. String a = ab; 3. final String bb = b; 4. String b = a + bb; 5. System.out.println((a == b)); //result = true 6. 分析:和[3]中唯一不同的是bb字符串加了final修饰,对于final修饰的变量,它在编译时被解析为常量值的一个本地拷贝存储到自己的常量池中或嵌入到它的字节码流中。所以此时的a + bb和a + b效果是一样的。故上面程序的结果为true。 1. [4] 2. String a = ab; 3. final String bb = getBB(); 4. String b = a + bb; 5. System.out.println((a == b)); //result = false 6. private static String getBB() { 7. return b; 8. } 9. 分析:JVM对于字符串引用bb,它的值在编译期无法确定,只有在程序运行期调用方法后,将方法的返回值和a来动态连接并分配地址为b,故上面程序的结果为false。 通过上面4个例子可以得出得知: 1. String s = a + b + c; 2. 就等价于String s = abc; 1. String a = a; 2. String b = b; 3. String c = c; 4. String s = a + b + c; 5. 这个就不一样了,最终结果等于: 1. StringBuffer temp = new StringBuffer(); 2. temp.append(a).append(b).append(c); 3. String s = temp.toString(); 4. 由上面的分析结果,可就不难推断出String 采用连接运算符(+)效率低下原因分析,形如这样的代码: 1. public class Test { 2. public static void main(String args[]) { 3. String s = null; 4. for(int i = 0; i 100; i

文档评论(0)

fuyuecheng + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档