要更正编译错误,请使用以下
char[]语句之一替换
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");下一节将以上陈述相互比较
字符串常量
String s="MY PROFESSION";
- “ MY PROFESSION”是一个常量,并存储在String池中
s
是不可变的,即String
完整的内容无法修改。- 字符串的大小/长度是固定的(无法附加)
字符数组
char c1[]="MY PROFESSION".toCharArray(); char c2[]={'M', 'Y', ' ', 'P', 'R', 'O', 'F', 'E', 'S', 'S', 'I', 'O', 'N'};c1
保存String的基础数组的副本(通过System.arraycopy
)并存储在堆空间中c2
通过加载单个字符常量在堆栈框架中动态构建c1
&c2
是可变的,即的内容Array
可以修改。c2[0]='B'
- 数组的大小/长度是固定的(无法追加)
StringBuilder / StringBuffer
StringBuilder sb = new StringBuilder("MY PROFESSION");StringBuffer sbu = new StringBuffer("MY PROFESSION");- 这两个
sb
和sbu
是可变的。sb.replace(0, 1, 'B');
- 双方
sb
并sbu
存储在堆 - 大小/长度可以修改。
sb.append( '!');
StringBuffer
的方法是同步的,而StringBuilder
的方法不是



