2016-03-04 4 views
0

Показывает ошибку компиляции в method("shruthi") и, кроме того, компилятор дает предупреждение для преобразования StringBuffer в String при статическом методе. Если я заменяю StringBufferString, он отлично работает. Но я хочу знать о StringBuffer. Пожалуйста, объясните, почему это не работает.Почему компилятор java жалуется на 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"); 
    } 
} 
+1

' "shruthi"' 'является String'. Вы пытаетесь передать его чему-то, ожидающему «StringBuffer». Что вы ожидаете? –

ответ

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 
+0

Спасибо, что у меня есть. – Prathyusha

4

Вы определили метод с подписью method(StringBuffer) но вы вызываете его method("shruthi");

Ошибка:

method(StringBuffer) ожидает StringBuffer объект в качестве параметра, вы передаете вместо него String ...

Это причина, по которой компилятор должен жаловаться.

+0

Это полуправое и неправильное, это не исключение из строкового буферного объекта. Вы должны использовать String, но это со встроенной функцией 'append', а не с прямой передачей строк. – codeCompiler77

Смежные вопросы