定义了一个字符串str="1234";
现在想在字符串后面加5个空格  怎么写效率高些
已经知道的方式
    for(int i =0 ,i<5,i++){
       str=str+" ";
     }
这样写循环效率太低了

解决方案 »

  1.   

    str="1234"; 
    str=str+"     ";    //"     "为五个空格不行嘛?
    System.out.println(str.length());
    结果:9
      

  2.   

                    String str="1234"; 

    StringBuffer sb=new StringBuffer(str);
    sb.append("     5个空格");

    System.out.println("sb="+sb);                sb=1234     5个空格
      

  3.   

    楼主你的结贴率太低了,先结一些帖子吧。关于这个问题,你可以试试专门写一个方法,用char[]数组的方式填充空格,这样应该效率是比较高的,大致代码如下public String generateSpaceStr( int number )
    {
        char[] spaceChars = new char[number];
        for( int i = 0; i < spaceChars.length; i++ )//这样写比1.5添加的for...each循环效率要高些
        {
             spaceChars[i] = ' ';
        }
        
        return new String(spaceChars);
    }
      

  4.   

    public class Test {
            
        public static void main(String[] args) {
            String str = "abc";
            long t0, t1;
            t0 = System.nanoTime();
            str = appendSpace(str, 5, false);
            t1 = System.nanoTime();
            System.out.println("|" + str + "|");
            System.out.println((t1 - t0) + " ns");
        }    private static String appendSpace(String str, int spaceCount, boolean appendHead) {
            char[] chs = new char[str.length() + spaceCount]; 
            for(int i = appendHead ? 0 : str.length(), j = 0; j < spaceCount; j++) {
                chs[i++] = ' ';
            }
            System.arraycopy(str.toCharArray(), 0, chs, appendHead ? spaceCount : 0, str.length());
            return new String(chs);
        }
    }
      

  5.   

    public class Test {
            
        public static void main(String[] args) {
            String str = "abc";
            long t0, t1;
            t0 = System.nanoTime();
            str = appendSpace(str, 5, false);
            t1 = System.nanoTime();
            System.out.println("|" + str + "|");
            System.out.println((t1 - t0) + " ns");
        }    private static String appendSpace(String str, int spaceCount, boolean appendHead) {
            char[] chs = new char[str.length() + spaceCount]; 
            for(int i = appendHead ? 0 : str.length(), j = 0; j < spaceCount; j++) {
                chs[i++] = ' ';
            }
            System.arraycopy(str.toCharArray(), 0, chs, appendHead ? spaceCount : 0, str.length());
            return new String(chs);
        }
    }
      

  6.   

    给个简单的,用JDK自带的API        char[] blankArr=new char[10];
    Arrays.fill(blankArr, ' ');
    String str="start";
            str+=new String(blankArr);
            str+="end";
            System.out.println(str);
      

  7.   


    查了一下源码,发现本质还是for循环一个一个填,不过多了一个边界检查。
    小小自豪下:)