在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ java String 和 StringBuffer初始化疑問

java String 和 StringBuffer初始化疑問

String 用字符串作為初始值,而StringBuffer不行?
例如可以這么定義
String a ="abar";
但不可以這么定義
StringBuffer b = "adbc";
只能這么定義StringBuffer b = new StringBuffer("adbc");
懇請各位老師解答。謝謝。

回答
編輯回答
尐飯團

對樓上的答案稍微補充一點吧,為什么基礎(chǔ)數(shù)據(jù)類型(String不是基礎(chǔ)數(shù)據(jù)類型)可以不用new的形式實例化一個對象。主要原因有兩個,一個是因為快,可以被優(yōu)化,另一個是因為方便(被大量的使用),增加代碼可讀性。
比如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兩兩互相 == 輸出什么。

2018年1月16日 23:37
編輯回答
默念

對象都可以用new的方式,只不過String或者數(shù)組這些,多了一些初始化的方式而已.

2018年3月1日 05:19