为什么java编译器抱怨StringBuffer

时间:2016-03-04 20:13:05

标签: java

它在method("shruthi")显示编译错误,而且编译器发出警告,以静态方法将StringBuffer转换为String。 如果我将StringBuffer替换为String,则可以正常使用。但我想知道StringBuffer。请解释为什么不起作用。

public class Test13{
    public static void method1(String s){
          System.out.println("String Version");
    }
    public static void method(StringBuffer sb){
         System.out.println("String Buffer Version");
    }
    public static void main(String a[]){
          method1("null");
          method("shruthi");
    }
}

2 个答案:

答案 0 :(得分:4)

您定义了一个带有签名method(StringBuffer)的方法,但您是通过method("shruthi");

来调用它的

错误是:

method(StringBuffer)期待一个StringBuffer对象作为参数,而是传递一个String ...

这是编译器抱怨的原因。

答案 1 :(得分:0)

您误解了string buffer的工作方式,并且您不会在任何地方初始化它,也不会追加它。

public class Demo
{
    public static StringBuffer sBuffer;

    public static void appendString(String str)
    {
        sBuffer.append(str);
    }

    public static void main(String[] args) throws Exception
    {
        sBuffer = new StringBuffer(" test");
        appendString(" adding this");
        System.out.print(sBuffer);
    }
}

查看doc's有关如何初始化和使用它的信息。

<强>输出

 test adding this