public class Yabao {
    public static void main(String[] args) {
        String ss[]=new String[2];
        Scanner ar=new Scanner(System.in);
        ss[0]=ar.next();
        ss[1]=ar.next();
        int w = new Integer(ss[0]).intValue();
        int h=Integer.parseInt(ss[1]);
        for(int i=0;i<h;i++){
            StringBuffer sb=new StringBuffer();
            for(int j=0;j<w;j++){
                sb.append('*');
            }
            System.out.println(sb.toString());//此处转不转成String型有什么不同吗,StringBuffer转成String类型输出有优势吗?
        }       
    }}
谢谢解答

解决方案 »

  1.   

    没有必要toString()方法,在开发过程中StringBuffer用的还是比较多的
      

  2.   

    输出类的实例时,类定义的toString()方法会自动调用。所以说在这里没什么区别
      

  3.   

    前面漏了一点。先调用String.valueOf(sb),然后 sb.toString()被调用。
    对性能的影响基本可以忽略。不放心可以写代码测一下。
      

  4.   

    StringBuffer 是 线程安全的,所以如果不是多线程,会影响效率,而 StringBuilder 则不是纯种安全的,效率会有所提高,java api 建议把 StringBuilder   作为 StringBuffer 的替代实现。
      

  5.   

    StringBuffer.append 方法 要比 String str += "";效率很多 可以打个这个比方吧。
    public static void main(String[] args) {
    String testStr = "";
    long start = System.currentTimeMillis(); 
    for (int i = 0; i < 10000; i++) {
    testStr+="我是字符串";
    }
    long end = System.currentTimeMillis();
    System.out.println("testStr用时:"+(end - start)+"毫秒");

    start = System.currentTimeMillis();
    StringBuffer testSb = new StringBuffer();
    for (int i = 0; i < 100000; i++) {
    testSb.append("我是字符串");
    }
    end = System.currentTimeMillis();
    System.out.println("testSb用时:"+(end - start)+"毫秒"); }
    estStr用时:782毫秒
    testSb用时:15毫秒
      

  6.   

    注意,,testStr 是循环10000 testSb是循环100000 你看看 所耗时间,知道两个差距有多大了
      

  7.   

    to deeply discuss. I 服了YOU
      

  8.   


    编译器自动优化 StringBuffer