String value = "?"; //? value = value + ",";//?, value = value + ",";//?,, value = value + ",";//?,,, value = value + ",";//?,,,,这个字符串相加 ? 只加了一次啊 。当然是 ?,,,,,
一楼解决问题了,将System那句放到循环内部就OK了
String 对象是不可改变的. 为什么 value = value + ',';能生效?这不是已经修改了value值了吗?
你把每次循环后的value值写出来看看 再代进去看就知道了
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.
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
放里面试试
String value = "?"; //?
value = value + ",";//?,
value = value + ",";//?,,
value = value + ",";//?,,,
value = value + ",";//?,,,,
String r="";
for(int i=0;i < 5;i++){
r=r + value + ",";
}
System.out.println(r);
for (int i = 0; i < 5; i++) {
value = value + "?,";
}
System.out.println(value);
这样就打印?,?,?,?,?,
String value = "?";
for (int i = 0; i < 5; i++) {
value = value + ",?";
}
System.out.println(value);
这样就好了 啊
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 5; i++) {
sb.append(value).append(",");
}
System.out.println(sb.toString());
}
value = value + ",";//?,
value = value + ",";//?,,
value = value + ",";//?,,,
value = value + ",";//?,,,,这个字符串相加 ? 只加了一次啊 。当然是 ?,,,,,
为什么 value = value + ',';能生效?这不是已经修改了value值了吗?
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 5; i++) {
sb.append(value).append(",");
}
System.out.println(sb.toString());
}我要说的就是最好不要用String来做这样的操作因为会产生很多垃圾对象, 要改成StringBuffer.
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
StringBuffer 内容可以改变,可以试试StringBuffer
哈哈!for循环执行的效果实际是value=value+","+","+","+","+","
for(int i=0;i < 5;i++){
value+= "?,";
}
System.out.println(r);
String对象是不可变的。查看JDK文档你就会发现,String类中每一个看起来会修改String值的方法,实际上都是创建一个全新的String对象
还有一个String value;这个value只是对象的引用,也就是一个名称而已,本来想回答仔细点的,不过觉得自己可能也说不好,给你一个链接,这哥们分析地很仔细:
http://www.javaeye.com/topic/209904