String method Append() : StringBuilder vs StringBuffer

后端 未结 3 1410
小蘑菇
小蘑菇 2021-01-26 10:53

With this code:

  public static void main(String[] args) {

    String s = \"Java\";
    StringBuilder buffer = new StringBuilder(s);
    change(buffer);

               


        
相关标签:
3条回答
  • 2021-01-26 11:16

    You might have imported a wrong StringBuilder class instead of java.lang.StringBuilder which does have a StringBuilder(String) constructor and charAt(int) method.

    Could you check your import. You should have this one

    import java.lang.StringBuilder;
    
    0 讨论(0)
  • 2021-01-26 11:17

    Make sure that you are not defining your class name as StringBuilder

    For Example: Even if you import it correctly

     import java.lang.StringBuilder;
    

    But if you write your class as

     public class StringBuilder { //If class name matches below Object Creation
     public static void main(String[] args) {
    
    String s = "Java";
    StringBuilder buffer = new StringBuilder(s);  //Object creation
    change(buffer);
    
       System.out.println("What's strBuf.charAt(5)? " + strBuf.charAt(3));
       System.out.println(buffer);
    }
    
     private static void change(StringBuilder buffer) {
    
          buffer.append(" and HTML"); //you will get this error at append
      //The method append(String) is undefined for the type StringBuilder
    } 
    }
    

    Suggestions

    Rename your class name to something else but not StringBuilder

    0 讨论(0)
  • 2021-01-26 11:27

    StringBuilder does have a constructor accepting a String as an argument, and does have a .charAt() method (which it it must implement since it implements CharSequence).

    Conclusion: this is a mishap from the part of your IDE, which did not import the correct StringBuilder. You use another library which has the unfortunate "property" of having implemented a class by the same name -- but not in the same package.

    Go see at the top of your file if the import line is:

    import java.lang.StringBuilder;
    
    0 讨论(0)
提交回复
热议问题