A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 侯丛政 中级黑马   /  2013-2-7 17:45  /  2789 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 侯丛政 于 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);
        }

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

12 个回复

倒序浏览
楼主想表达什么 ...  不知道再说啥。。。
回复 使用道具 举报
楼主输出的是按顺序输出a-z所有字母吧。
使用StringBuilder 对象的append()方法,append()方法是在结尾处添加。

那么对于楼主的问题: // 循环时为什么需要自己创建StringBuilder减少垃圾?

简单的说:
如果不用StringBuilder而用String的话
    那么会大量使用String,那么在内存中就会创建大量的string对象,对象的创建是消耗性能的,
    同时创建的对象又要被垃圾回收器回收,这也是消耗性能的。
注意:
    而StringBuilder可以减少string对象的创建,从而提高性能

希望对楼主有所帮助

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
你这个程序复杂:
  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);
把信息打印到控制台,可以验证你的程序是否正确!

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
java语言的跨平台型
回复 使用道具 举报
通常计算机能够识别的是机器码,也就是二进制代码,这种二进制码只能在特定的机器上运行,也就是说,不同的机器都有不同的二进制码,我们用高级语言编写的源程序,必须要通过编译器编译成特定机器码,计算机才能识别和执行。
回复 使用道具 举报
计算机语言有编译型语言和解释型语言
回复 使用道具 举报
编译型语言,是把源程序员一次性的编译成特定的机器码,所以这种语言编写的程序的跨平台性差,但运行速度快。如C
回复 使用道具 举报
解释型语言,是边把一条源代码编译成特定的机器码运行,这种语言是边解释边运行,所以跨平台性好,但运行速度慢,如javascript
回复 使用道具 举报
java语言是编译和解释型结合的语言,所以java语言具有良好的跨平台性。
回复 使用道具 举报
用java语言编写好源程序,通过java编译器编译成统一的字节码文件,字节码文件计算机是不能直接识别执行的。需要通过JVM(java虚拟机)解释执行。所以,只要不同的平台实现相同的JVM,就能够实现跨平台。
回复 使用道具 举报
java语言的优势之一就是跨平台型好,只需要把java语言编写源程序编译成相同的字节码文件(*.class),通过不同平台上的JVM解释执行字节码文件,这种中介思想,在计算机和现实生活中都有很大的用处。
回复 使用道具 举报
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,有人可以。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马