<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      有關String的性能問題 0.2版

      [摘要]相信大家對String都非常熟悉,我們也經常要用它來做字符串的連接什么的,例如:String a =b+c file://b,c 都是String 但是在實際的編譯中卻是這樣: String a=n...
      相信大家對String都非常熟悉,我們也經常要用它來做字符串的連接什么的,例如:
      String a =b+c file://b,c 都是String
      但是在實際的編譯中卻是這樣:
      String a=new StringBuffer().append(b).append(c).toString() 顯然,在一個簡單的語句中卻意外的多生成了2個對象:
      .StringBuffer()
      .toString返回的一個String
      我們比較一下這兩段程序的性能:
      程序片斷一:
      StringBuffer s=new StringBuffer();
      long start = System.currentTimeMillis();
      for (int i=0;i<10000;i++){
      s1+="a";
      }
      long stop = System.currentTimeMillis();
      System.out.println(stop-start);
      程序片斷二:
      StringBuffer s=new StringBuffer();
      long start=System.currentTimeMillis();
      for (int i=0;i<10000;i++){
      s.append("a");
      }
      long stop=System.currentTimeMillis();
      System.out.println(stop-start);
      比較一下結果,差距很明顯。
      至于為什么String的連接這么做,因為String無法直接改變其長度,而必須采用StringBuffer的用法。
       我們看這個例子:
      片斷1;
      printWriter.print(x+y);//x,y為String
      片斷2;
      printWriter.print(x);
      printWriter.print(y);
      你覺得那個效率高一些。自己試驗一下,想想為什么。

      參考:Java Performance and Scalability vol.1.
      Think in java.





      日韩精品一区二区三区高清