本帖最后由 曲终烟尽 于 2015-5-28 11:08 编辑
- public void reader() throws IOException {
- BufferedReader br = new BufferedReader(new FileReader(fileName));
-
- int x = 1 ;
- String str = null;
- while((str=br.readLine())!=null){
- StringBuilder sb = new StringBuilder(); //这里 new 了一个 StringBuilder对象,sb引用了这个新的对象
- sb = sb.append(x).append(":").append(str); //这里sb添加,添加第x个字符串,我很纳闷,你都new 了一个对象了,怎么还能继续累加x再添加进这个新的对象sb里。添加的位置似乎不对。
-
- String s = sb.toString();//这里转换成文本,似乎没问题
- System.out.println(s);//这里输出文本,没问题
- x++;//这里 x++,语句没问题,逻辑有问题,你为何要++,你++的目的和之前sb.append(x)的位置是对应的吗?,你之前是new了一个新对象,每次循环都new 一遍,new 的新对象里边是空的,而你直接用append(x)往一个空的对象里向一个超过0的位置追加内存,逻辑上来说是错的!
-
- }
- }
复制代码
StringBuilder sb = new StringBuilder(); //这里 new 了一个 StringBuilder对象,sb引用了这个新的对象
sb = sb.append(x).append(":").append(str); //这里sb添加,添加第x个字符串,我很纳闷,你都new 了一个对象了,怎么还能继续累加x再添加进这个新的对象sb里。添加的位置似乎不对。
x++;//这里 x++,语句没问题,逻辑有问题,你为何要++,你++的目的和之前sb.append(x)的位置是对应的吗?,你之前是new了一个新对象,每次循环都new 一遍,new 的新对象里边是空的,而你直接用append(x)往一个空的对象里向一个超过0的位置追加内存,逻辑上来说是错的! |