黑马程序员技术交流社区
标题:
循环时为什么需要自己创建StringBuilder
[打印本页]
作者:
侯丛政
时间:
2013-2-7 17:45
标题:
循环时为什么需要自己创建StringBuilder
本帖最后由 侯丛政 于 2013-2-8 08:13 编辑
public static void main(String[] args){
StringBuilder sb = new StringBuilder();
// 循环时为什么需要自己创建StringBuilder减少垃圾?
for(char ch = 'a'; ch <= 'z'; ch++){
sb.append(ch);
}
System.out.println(sb);
}
作者:
刘凯
时间:
2013-2-7 17:57
楼主想表达什么 ... 不知道再说啥。。。
作者:
pzfpang449
时间:
2013-2-7 19:31
楼主输出的是按顺序输出a-z所有字母吧。
使用StringBuilder 对象的append()方法,append()方法是在结尾处添加。
那么对于楼主的问题: // 循环时为什么需要自己创建StringBuilder减少垃圾?
简单的说:
如果不用StringBuilder而用String的话
那么会大量使用String,那么在内存中就会创建大量的string对象,对象的创建是消耗性能的,
同时创建的对象又要被垃圾回收器回收,这也是消耗性能的。
注意:
而StringBuilder可以减少string对象的创建,从而提高性能
希望对楼主有所帮助
作者:
吴在强
时间:
2013-2-7 20:55
你这个程序复杂:
public static void main(String[] args){
StringBuilder sb = new StringBuilder();
// 循环时为什么需要自己创建StringBuilder减少垃圾?
for(char ch = 'a'; ch <= 'z'; ch++){
sb.append(ch);
}
System.out.println(sb);
}
循环创建StringBuffer是为了有一个字符缓冲区,方便你把a-z的字符信息,你用System.out.println(sb);
把信息打印到控制台,可以验证你的程序是否正确!
作者:
黑马-周建
时间:
2013-2-14 00:08
java语言的跨平台型
作者:
黑马-周建
时间:
2013-2-14 00:08
通常计算机能够识别的是机器码,也就是二进制代码,这种二进制码只能在特定的机器上运行,也就是说,不同的机器都有不同的二进制码,我们用高级语言编写的源程序,必须要通过编译器编译成特定机器码,计算机才能识别和执行。
作者:
黑马-周建
时间:
2013-2-14 00:09
计算机语言有编译型语言和解释型语言
作者:
黑马-周建
时间:
2013-2-14 00:09
编译型语言,是把源程序员一次性的编译成特定的机器码,所以这种语言编写的程序的跨平台性差,但运行速度快。如C
作者:
黑马-周建
时间:
2013-2-14 00:09
解释型语言,是边把一条源代码编译成特定的机器码运行,这种语言是边解释边运行,所以跨平台性好,但运行速度慢,如javascript
作者:
黑马-周建
时间:
2013-2-14 00:09
java语言是编译和解释型结合的语言,所以java语言具有良好的跨平台性。
作者:
黑马-周建
时间:
2013-2-14 00:10
用java语言编写好源程序,通过java编译器编译成统一的字节码文件,字节码文件计算机是不能直接识别执行的。需要通过JVM(java虚拟机)解释执行。所以,只要不同的平台实现相同的JVM,就能够实现跨平台。
作者:
黑马-周建
时间:
2013-2-14 00:10
java语言的优势之一就是跨平台型好,只需要把java语言编写源程序编译成相同的字节码文件(*.class),通过不同平台上的JVM解释执行字节码文件,这种中介思想,在计算机和现实生活中都有很大的用处。
作者:
郝强勇
时间:
2013-2-14 15:01
public static void main(String[] args){
StringBuilder sb = new StringBuilder();
for(char ch = 'a'; ch <= 'z'; ch++){
sb.append(ch);
}
System.out.println(sb);
}
对于上面的代码,实质的缓冲区就是给出一片空间可以陆续的向其中追加内容,我们都知道String类型一旦创建就不会改变,在用“+”进行连接的时候实质也是创建了新的String,用StringBuilder可以陆续追加新内容而不用创建新的东西,当然节省空间啊,其实在StringBuilder出来之前,用的都是StringBuffer,有人可以。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2