免费试听课程
干货等你来拿
姓名: 联系电话: 试听课程:
官方微信:官方微博:
就业明星
联系我们
信息详细您现在的位置:首页>>就业明星>>信息详细
Java String常用方法详解
浏览次数:959  添加时间:2016/5/30 9:43:00
     前几篇文章中提到过“Java String的常用方法及使用注意事项”,下面清美教育河北盛邦校区专业老师给大家讲述下Java String的常用方法,用String 常量问题的三个例子对String对象的intern方法理解和分析。
      String中的final用法和理解
finalStringBuffera=newStringBuffer("111"); a=b;//此句编译不通过 a.append("222");//编译通过 [/ol]
     可见,final只对引用的"值"(即内存地址)有效,它迫使引用只能指向初始指向的那个对象,改变它的指向会导致编译期错误。至于它所指向的对象的变化,final是不负责的。
String常量池问题的四个例子
下面是几个常见例子的比较分析和理解:
     [1] Stringb="a"+1; Stringa="atrue"; System.out.println    ((a==b));//result=trueStringb="a"+3.4; [/ol]
    分析:JVM对于字符串常量的"+"号连接,将程序编译期,JVM就将常量字符串的"+"连接优化为连接后的值,拿"a" + 1来说,经编译器优化后在class中就已经是a1。在编译期其字符串常量的值就确定下来,故上面程序最终的结果都为true。
    [2] Stringbb="b"; System.out.println((a==b));//result=false[/ol]
    分析:JVM对于字符串引用,由于在字符串的"+"连接中,有字符串引用存在,而引用的值在程序编译期是无法确定的,即"a" + bb无法被编译器优化,只有在程序运行期来动态分配并将连接后的新地址赋给b。所以上面程序的结果也就为false。
     [3] finalStringbb=getBB(); System.out.println((a==b));//result=false return"b"; [/ol]
    析:JVM对于字符串引用bb,它的值在编译期无法确定,只有在程序运行期调用方法后,将方法的返回值和"a"来动态连接并分配地址为b,故上面程序的结果为false。
通过上面3个例子可以得出得知:
    Strings="a"+"b"+"c"; [/ol]
    就等价于String s = "abc";
    StringBuffertemp=newStringBuffer(); Strings=temp.toString(); [/ol]
    由上面的分析结果,可就不难推断出String 采用连接运算符(+)效率低下原因分析,形如这样的代码:
    publicclassTest{ Strings=null; s+="a"; } [/ol]

    每做一次 + 就产生个StringBuilder对象,然后append后就扔掉。下次循环再到达时重新产生个    StringBuilder对象,然后 append 字符串,如此循环直至结束。 如果我们直接采用 StringBuilder 对象进行 append 的话,我们可以节省 N - 1 次创建和销毁对象的时间。所以对于在循环中要进行字符串连接的应用,一般都是用StringBuffer或StringBulider对象来进行append操作




友情提示:如果您正在为就业难而烦恼,如果您想跳槽转行而不知该如何决择,如果您因激烈的职业竞争而想充电学习,请点击在线客服,或者拨打咨询电话 我们会有专业的职业规划老师为您解除困惑!



版权所有:石家庄盛初邦元商务信息咨询有限责任公司
邮箱:1903497188@qq.com 网址:http://www.tsingmei.net/ 冀ICP备16001955号-2
电话:400-136-1816 0311-87162121 87162112
清美简介|课程详情|学员就业|强大师资|校园新闻
-->