为什么java编译器会抱怨StringBuffer

为什么java编译器会抱怨StringBuffer,java,Java,它在方法(“shruthi”)处显示了一个编译错误,而且编译器正在发出警告,将StringBuffer转换为静态方法的字符串。 如果我用String替换StringBuffer,它可以正常工作。但是我想知道关于StringBuffer。请解释为什么这不起作用 public class Test13{ public static void method1(String s){ System.out.println("String Version"); }

它在
方法(“shruthi”)
处显示了一个编译错误,而且编译器正在发出警告,将
StringBuffer
转换为静态方法的字符串。 如果我用
String
替换
StringBuffer
,它可以正常工作。但是我想知道关于
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");
    }
}

您使用签名
方法(StringBuffer)
定义了一个方法,但您使用
方法(“shruthi”)调用它

错误是:

method(StringBuffer)
需要一个
StringBuffer
对象作为参数,而不是传递一个字符串


这就是编译器抱怨的原因。

您使用签名
方法(StringBuffer)
定义了一个方法,但您通过
方法(“shruthi”)调用它

错误是:

method(StringBuffer)
需要一个
StringBuffer
对象作为参数,而不是传递一个字符串


这就是编译器抱怨的原因。

您误解了
字符串缓冲区的工作原理,您没有在任何地方初始化它,也没有附加到它

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);
    }
}
查看有关如何初始化和使用它的详细信息

输出

 test adding this

您误解了
字符串缓冲区的工作原理,并且没有在任何地方初始化它,也没有附加到它

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);
    }
}
查看有关如何初始化和使用它的详细信息

输出

 test adding this

“shruthi”
是一个
字符串
。您正试图将其传递给需要
StringBuffer
的对象。你期待什么?
“shruthi”
是一个
字符串。您正试图将其传递给需要
StringBuffer
的对象。你期望什么?这是半对半错的,字符串缓冲区对象也不例外。您应该使用字符串,但它与内置的
append
函数一起使用,而不是直接抛出字符串。这是半对半错的,字符串缓冲区对象也不例外。您应该使用字符串,但它与内置的
append
函数一起使用,而不是直接插入字符串。