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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Emperors 中级黑马   /  2014-4-18 11:28  /  1692 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package cn.itcom;

public class Test02 {

        public static void main(String[] args) {
                    //创建对象
                StringBuffer sd = new StringBuffer();
               
                sd.append("hello");   //添加元素
                sd.append("zuguo");
                sd.append(12345);
       //      sd.append(true);

        System.out.println("sd:"+sd);
    }
}
     我想问一下,为什么12345不加 "",也能打印出来呢?而上面的hello如果不加"",会报错,这是怎么回事呢?这跟返回值有关吗???
而又如果在添加      //      sd.append(true);,也会打印出来,而这又是怎么回事呢?这个也没带 "" 这号啊,难道这又和关键字有关呀??????

  请大神指教   谢谢

10 个回复

倒序浏览
StringBuffer append(boolean b)
          将 boolean 参数的字符串表示形式追加到序列。
StringBuffer append(char c)
          将 char 参数的字符串表示形式追加到此序列。
StringBuffer append(char[] str)
          将 char 数组参数的字符串表示形式追加到此序列。
StringBuffer append(char[] str, int offset, int len)
          将 char 数组参数的子数组的字符串表示形式追加到此序列。
StringBuffer append(CharSequence s)
          将指定的 CharSequence 追加到该序列。
StringBuffer append(CharSequence s, int start, int end)
          将指定 CharSequence 的子序列追加到此序列。
StringBuffer append(double d)
          将 double 参数的字符串表示形式追加到此序列。
StringBuffer append(float f)
          将 float 参数的字符串表示形式追加到此序列。
StringBuffer append(int i)
          将 int 参数的字符串表示形式追加到此序列。
StringBuffer append(long lng)
          将 long 参数的字符串表示形式追加到此序列。
StringBuffer append(Object obj)
          追加 Object 参数的字符串表示形式。
StringBuffer append(String str)
          将指定的字符串追加到此字符序列。
StringBuffer append(StringBuffer sb)
          将指定的 StringBuffer 追加到此序列中。
StringBuffer appendCodePoint(int codePoint)
          将 codePoint 参数的字符串表示形式追加到此序列。


重载 亲  

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报 1 0
本帖最后由 sanguodouble1 于 2014-4-18 12:22 编辑

亲,请仔细看下API文档,
StringBuffer的append方法重载了N个
append(12345); 就自动调用append(int i)
同理,append(true);就自动调用append(boolean b)

而如果你写成append(hello),就调用append(Object obj),
但这时编译器会发现,Y的,没有hello这个对象啊,所以就报错


补充一下,append(Object obj),就是把对象obj的toString()返回值放进去

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报
因为它们都是字面量。
sd.append("hello");   //字符串字面量,必须添加“”;若没有添加,会被视为标识符,也就是变量
sd.append(12345);    //十进制字面量
sd.append(true);       //布尔型字面量
另外还有,字符字面量'c',十六进制字面量0x123A等等。
这些字面量都可以赋值给变量,添加进StringBuffer中不会有问题。

回复 使用道具 举报
StringBuffer中的append()和System.out.print()很类似,都重载了很多次,所以在括号里面的东西如果是基本数据类型(数字,字符,布尔值等)就按照基本数据类型读取,如果是合法的标识符变量就按照对象处理,print()打印对象时会默认调用Object对象的toString()方法用于对象信息的输出,append()处理对象时,追加的是Object 参数的字符串表示形式,也是调用toString()方法
回复 使用道具 举报
亲, 我表示最开始也很纠结这个问题. 举个简单的例子就很能说明问题, StringBuffer就相当于一口可以炒菜的锅, 它里面可以放进去肉, 蔬菜, 调料, 这里就是boolean char char[] int  String等数据类型,只要符合数据类型规范, 就是可以存进去的哦, 12345很明显是属于int类型的数据,当然不需要加 "" 的啊,但是 hello 属于字符串的, 那自然是需要加 "" 的.
回复 使用道具 举报
孙旌棋 发表于 2014-4-20 10:05
亲, 我表示最开始也很纠结这个问题. 举个简单的例子就很能说明问题, StringBuffer就相当于一口可以炒菜的锅 ...

哦了  谢谢

回复 使用道具 举报
demown 中级黑马 2014-4-20 12:09:14
8#
自动装箱啊 1.5新特性老师不是讲了吗
回复 使用道具 举报
StringBuffer类的append()方法具有很多重载形式,
StringBuffer append(boolean b)
          将 boolean 参数的字符串表示形式追加到序列。
StringBuffer append(char c)
          将 char 参数的字符串表示形式追加到此序列。
StringBuffer append(char[] str)
          将 char 数组参数的字符串表示形式追加到此序列。
StringBuffer append(char[] str, int offset, int len)
          将 char 数组参数的子数组的字符串表示形式追加到此序列。
StringBuffer append(CharSequence s)
          将指定的 CharSequence 追加到该序列。
StringBuffer append(CharSequence s, int start, int end)
          将指定 CharSequence 的子序列追加到此序列。
StringBuffer append(double d)
          将 double 参数的字符串表示形式追加到此序列。
StringBuffer append(float f)
          将 float 参数的字符串表示形式追加到此序列。
StringBuffer append(int i)
          将 int 参数的字符串表示形式追加到此序列。
StringBuffer append(long lng)
          将 long 参数的字符串表示形式追加到此序列。
StringBuffer append(Object obj)
          追加 Object 参数的字符串表示形式。
StringBuffer append(String str)
          将指定的字符串追加到此字符序列。
StringBuffer append(StringBuffer sb)
          将指定的 StringBuffer 追加到此序列中。
此时,你只要添加上述的类型,那么apend()即会搜索到对应的重载方法,进而使其中的数据以字符串的形式尾加到你当前的序列中。
回复 使用道具 举报
append(int i) ; 在StringBuffer中是可以添加int数的
回复 使用道具 举报

StringBuffer的使用,你要多看看api
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马