Difference between a string and an array of characters

前端 未结 7 2056
一整个雨季
一整个雨季 2021-02-01 10:18

How are these declarations different from each other?

String s=\"MY PROFESSION\";
char c[]=\"MY PROFESSION\";

What about the memory allocation

7条回答
  •  攒了一身酷
    2021-02-01 10:59

    To correct compilation error replace with one of the below char[] statement

    String s = "MY PROFESSION";
    char c1[] = "MY PROFESSION".toCharArray();
    char c2[] = { 'M', 'Y', ' ', 'P', 'R', 'O', 'F', 'E', 'S', 'S', 'I', 'O', 'N' };
    StringBuilder sb = new StringBuilder("MY PROFESSION");
    StringBuffer sbu = new StringBuffer("MY PROFESSION");
    

    Following section compares above statement with each other

    String Constant

    String s="MY PROFESSION";
    
    • "MY PROFESSION" is a constant and stored in String pool see Where does Java's String constant pool live, the heap or the stack?
    • s is immutable i.e content of String is intact can not be modified.
    • Size/Length of string is fixed (not possible to append)

    Character Array

     char c1[]="MY PROFESSION".toCharArray();
     char c2[]={'M', 'Y', ' ', 'P', 'R', 'O', 'F', 'E', 'S', 'S', 'I', 'O', 'N'};
    
    • c1 holds copy of String's underlying array (via System.arraycopy) and stored in heap space
    • c2 is built on the fly in the stack frame by loading individual character constants
    • c1 & c2 are mutable i.e content of Array can be modified. c2[0]='B'
    • Size/Length of Array is fixed (not possible to append)

    StringBuilder / StringBuffer

    StringBuilder sb = new StringBuilder("MY PROFESSION");
    StringBuffer sbu = new StringBuffer("MY PROFESSION");
    
    • Both sb and sbu are mutable. sb.replace(0, 1, 'B');
    • Both sb and sbu are stored in heap
    • Size/Length can be modified. sb.append( '!');
    • StringBuffer's methods are synchronised while StringBuilder's methods are not

提交回复
热议问题