黑马程序员技术交流社区
标题:
谁能帮我把这条语句解释一下?
[打印本页]
作者:
李月
时间:
2012-4-24 19:18
标题:
谁能帮我把这条语句解释一下?
在书中看到String s1=new String(new StringBuffer("abcd"));这样一条语句。
这条语句的非简写形式是什么样子的?
StringBuffer是一个容器,它能直接传给String类型吗?
作者:
岳伟伟
时间:
2012-4-24 19:23
这里用到了String类的构造方法。
String(StringBuffer buffer) ;
作者:
杨华威
时间:
2012-4-24 19:24
本帖最后由 杨华威 于 2012-4-24 19:26 编辑
String s1=new String(new StringBuffer("abcd"));
分解如下:
String s tr1= "abcd";
StringBuffer sb = new Stringbuffer(str1);
String str2 = sb.toString();
String s1 =new String(str2);
作者:
褚代江
时间:
2012-4-24 19:32
StringBuffer sb=new StringBuffer("abcd");
String s1=new String(sb);
z这个样子相当于是将StringBuffer转型成为String
不能懂得话,给你举个例子
public class a
{
public static void main(String args[])
{
String s="abc";
s+="def";//String操作字符串实际上是让程序创建了四个对象:
//两个待拼接的String,一个临时StringBuffer,和最后
//将StringBuffer转型成为的String.
System.out.println(s);
}
}
这个里面就是先拼接成StringBuffer,拼接好后再转型成为String的
作者:
周海诚
时间:
2012-4-24 19:34
String的内容不能改变,使String更近似于基本类型数据(如int,double等),在参数传递中使用传值方式,提高效率。
StringBuffer(StringBuilder)其实可以看做“基本数据类型”String的包装类(Wrapper)。
就像int与之对应的Integer等关系。(他们的关系不是完全相同,但在这点是一样的!)
作者:
应佳锋
时间:
2012-4-24 19:35
StringBuffer就类似是 String 的字符串缓冲区 它返回的是一个字符串呀 会自动转型 所以 是可以的
作者:
xiwangliujiao
时间:
2012-4-24 19:46
学习了,只知其一,不知其二,
作者:
杨红
时间:
2012-4-24 20:11
new String
(new StringBuffer("abcd"))就已经是把括号里的内容转换成String型的了
作者:
林德燚
时间:
2012-4-24 20:26
在书中看到String s1=new String(new StringBuffer("abcd"));这样一条语句。
这条语句的非简写形式是什么样子的?
StringBuffer是一个容器,它能直接传给String类型吗?
这个String s1=new String(new StringBuffer("abcd"));与String s1=new String("abcd")和String s1="abcd";都一样的,
String是常量不能被修改的,StringBuffer缓冲数组可以修改,比如字符串串联是通过StringBuffer实现的,
StringBuffer调用toString方法返回的结果类型就是String。
作者:
徐鑫
时间:
2012-4-24 20:35
String s1=new String(new StringBuffer("abcd"));
分解代码:new StringBuffer("abcd")是创建一个StringBuffer对象
new String(new StringBuffer("abcd"));是用StringBuffer对象作为参数调用String的构造函数,创建String对象,可以查查API
作者:
李震 李震 李震
时间:
2012-4-24 20:46
String s1=new String(new StringBuffer("abcd")); String和StringBuffer都是能操作字符串的,String是长度不可改变,而StringBuffer则可以动态操作,这句话的意思就是,把StringBuffer转成String类型,你可以做下比较,StringBuffer和String的字节码是不一样的,你把StringBuffer用toString方法转成String类型后,就相等了。
作者:
真真姐
时间:
2012-4-24 20:54
在语法中:String类是字符串
常量
,是不可更改的常量。而StringBuffer是字符串
变量
,它的对象是可以扩充和修改的。
看分析:
StringBuffer str = new StringBuffer("abcd"); // 构建一个字符串缓冲区,里面存放的是有特定字符序列的字符串,通过某些方法调用可以改变该序列的长度和内容。
String s1=new String(str); // 产生一个新字符串,里面是缓冲区中的字符序列
作者:
高彰谦
时间:
2012-4-25 08:57
直接贴个你源代码,让你看个清楚
public String(StringBuffer buffer) {
String result = buffer.toString();
this.value = result.value;
this.count = result.count;
this.offset = result.offset;
}
复制代码
虽然接收的是StringBuffer但是已经通过toString转换成String类型了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2