String 用字符串作为初始值,而StringBuffer不行?
例如可以这么定义
String a ="abar";
但不可以这么定义
StringBuffer b = "adbc";
只能这么定义StringBuffer b = new StringBuffer("adbc");
恳请各位老师解答。谢谢。
String 用字符串作为初始值,而StringBuffer不行?
例如可以这么定义
String a ="abar";
但不可以这么定义
StringBuffer b = "adbc";
只能这么定义StringBuffer b = new StringBuffer("adbc");
恳请各位老师解答。谢谢。
对楼上的答案稍微补充一点吧,为什么基础数据类型(String不是基础数据类型)可以不用new的形式实例化一个对象。主要原因有两个,一个是因为快,可以被优化,另一个是因为方便(被大量的使用),增加代码可读性。
比如String a = "a",String b = "a", 因为String类有个本地方法会检测此字符串存不存在在常量池,所以a==b为true。反之new出来的就会为false。
好了,以上点到为止。如果题主仍有兴趣了解下去的话,可以百度一下java的自动装箱拆箱机制,大致看一下,可以对java理解的更深一些。
最后再贴一道题:
int a = 1;
Integer b = 1;
Integer c = Integer.valueOf(1);
Integer d = new Integer(1);
请问打印 abcd两两互相 == 输出什么。
15 回答8.2k 阅读
8 回答5.9k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答2.1k 阅读✓ 已解决
对象都可以用new的方式,只不过String或者数组这些,多了一些初始化的方式而已.