String value = "?";
        for (int i = 0; i < 5; i++) {
            value = value + ",";
        }
        System.out.println(value);
打印:?,,,,,为什么不是: ?,?,?,?,?,

解决方案 »

  1.   

    System.out.println(value);
    放里面试试
      

  2.   


    String value = "?";  //?
     value = value + ",";//?,
     value = value + ",";//?,,
     value = value + ",";//?,,,
     value = value + ",";//?,,,,
      

  3.   

    这个可以得到 ?,?,?,?,?, String value="?";
    String r="";
    for(int i=0;i < 5;i++){
    r=r + value + ",";
    }
    System.out.println(r);
      

  4.   

    String value = "?,";
            for (int i = 0; i < 5; i++) {
                value = value + "?,";
            }
            System.out.println(value);
    这样就打印?,?,?,?,?,
      

  5.   

    本身 value=?第一次循环得到"?,"  第二次在?,基础上加上",",类推下去,当然得不到你要的结果啦
      

  6.   

            
            String value = "?";
            for (int i = 0; i < 5; i++) {
                value = value + ",?";
            }
            System.out.println(value);
    这样就好了 啊
      

  7.   

    因为你只是循环增加了 " ," 这个字符串啦改成如下:public static void main(String[] args) { String value = "?";
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < 5; i++) {
    sb.append(value).append(",");
    }
    System.out.println(sb.toString());
    }
      

  8.   

    原因楼上的都分析了, 我要说的就是最好不要用String来做这样的操作因为会产生很多垃圾对象, 要改成StringBuffer.
      

  9.   

    String value = "?";  //?
     value = value + ",";//?,
     value = value + ",";//?,,
     value = value + ",";//?,,,
     value = value + ",";//?,,,,这个字符串相加 ? 只加了一次啊 。当然是 ?,,,,,
      

  10.   

    一楼解决问题了,将System那句放到循环内部就OK了
      

  11.   

    String 对象是不可改变的.
    为什么 value = value + ',';能生效?这不是已经修改了value值了吗?
      

  12.   

    你把每次循环后的value值写出来看看 再代进去看就知道了
      

  13.   

    public static void main(String[] args) {        String value = "?";
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < 5; i++) {
                sb.append(value).append(",");
            }
            System.out.println(sb.toString());
        }我要说的就是最好不要用String来做这样的操作因为会产生很多垃圾对象, 要改成StringBuffer.
      

  14.   

    package com.test;public class Test {
     String value="?";
     public void print(){
     for(int i=0;i<6;i++){
    StringBuffer st=new StringBuffer();
    st=st.append(value).append(",");
    System.out.print(st);
     }
     
     }
     
    public static void main(String[]args){
    Test t=new Test();
    t.print();
    }
    }我要说的就是最好不要用String来做这样的操作因为会产生很多垃圾对象, 要改成StringBuffer
      

  15.   

    debug 一下  就很清楚其中的过程了!
      

  16.   

    正解:String 内容是不可以改变的,你改变的只是它对堆内存的改变
    StringBuffer 内容可以改变,可以试试StringBuffer
      

  17.   


    哈哈!for循环执行的效果实际是value=value+","+","+","+","+","
      

  18.   

            String value="?,";
            for(int i=0;i < 5;i++){
               value+= "?,";
            }
            System.out.println(r);
      

  19.   

    楼主这个问题问得很好,在这里首先强调一点:
        String对象是不可变的。查看JDK文档你就会发现,String类中每一个看起来会修改String值的方法,实际上都是创建一个全新的String对象
        还有一个String value;这个value只是对象的引用,也就是一个名称而已,本来想回答仔细点的,不过觉得自己可能也说不好,给你一个链接,这哥们分析地很仔细:
        http://www.javaeye.com/topic/209904