StringBuffer sb = new StringBuffer(2004); sb.append("-"); sb.append(6); sb.append("-"); sb.append(14); System.out.println(sb); 你猜会输出什么? "2004-6-14" 错了,输出的是"-6-14" 我们看到StringBuffer重载了append(), 看到append(int )的效果, 又看到new StringBuffer(String s) 等价与 { ?? StringBuffer sb = new StringBuffer(); ?? sb.append(s); } 就以为new StringBuffer(int n); 等价于: { ?? StringBuffer sb = new StringBuffer(); ?? sb.append(n); } 其实不是. new StringBuffer(int n);表示new一个StringBuffer,并且初始化它的长度到n, 它里面的内容还是空的. 看看文档的说明: ??? /** ???? * Constructs a string buffer with no characters in it and an ???? * initial capacity specified by the length argument. ???? * ???? * @param????? length?? the initial capacity. ???? * @exception? NegativeArraySizeException? if the length ???? *?????????????? argument is less than 0 . ???? */

|