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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© TS__likewise 中级黑马   /  2014-6-9 12:48  /  1389 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

StringBuffer sb = new StringBuffer();
sb = "welcome to here!";

String str = new String("welcome to ");
str += "here";
感觉string和stringbuffer用起来都差不多,在编程的时候,选择用哪个更好?有什么区别吗

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

4 个回复

倒序浏览
StringBuffer是字符串缓冲区。

是一个容器。
特点:
1,长度是可变化的。
2,可以字节操作多个数据类型。
3,最终会通过toString方法变成字符串。

提供了比较实用的方法,
比如,你可以做个练习 用用就知道了

"12 0 99 -7 30 4 100 13"
要求对字符串中的数值进行排序。生成一个数值从小到大新字符串。

"-7 0 4 12 13 30 99 100"

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
String定义完后是不可变的
回复 使用道具 举报
之前也遇过这个问题。给你看我的总结,差不多是百度的。
String:

是对象不是原始类型.
为不可变对象,一旦被创建,就不能修改它的值.
对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.
String 是final类,即不能被继承.

StringBuffer:
是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象
它只能通过构造函数来建立,
StringBuffer sb = new StringBuffer();
note:不能通过付值符号对他进行付值.
sb = "welcome to here!";//error
对象被建立以后,在内存中就会分配内存空间,并初始保存一个null.向StringBuffer
中付值的时候可以通过它的append方法.

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报

public class Test
{
    public static void main(String[] args)
        {
                       
            //从创建方式区别:
                String str1=new String("hello");
                String str2="hello";
                           
                    
                StringBuffer sb=new StringBuffer("hello");
                          
                //从连接字符串上看
                str1+="你好";   //实际上是先转换成StringBuffer对象,在执行append方法        
                sb.append("你好");
               
                //从使用方式的简单性看
                //sb.
               
               
                //从执行时间上看(效率)
                   long strTime1=System.currentTimeMillis();
                for(int i=1;i<5000;i++)
                {
                        str1+=i;
                }
                  long strTime2=System.currentTimeMillis();
                  
                 
                  
                    long sbTime1=System.currentTimeMillis();
                for(int i=1;i<5000;i++)
                {
                        sb.append(i);
                }
                        long sbTime2=System.currentTimeMillis();
                  
               
                   System.out.println("str连接字串时间大约:"+(strTime2-strTime1));
                   System.out.println("sb连接字串时间大约:"+(sbTime2-sbTime1));   
        }
}

无标题.png (216.45 KB, 下载次数: 13)

无标题.png

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马