为什么NetBeans的建议我更换StringBuffer/ StringBuilder通过String?
当我写时,它向我显示警告消息:
StringBuilder demo = new StringBuilder("Hello");
Run Code Online (Sandbox Code Playgroud) 我无法弄清楚是否
String ab = "hello"; //straight initialization
String ab_1 = new String ("hello_1"); //initializing using new
Run Code Online (Sandbox Code Playgroud)
两者都有效,但是
StringBuffer bfr = new StringBuffer("hi"); //works only with new
Run Code Online (Sandbox Code Playgroud)
只有在使用new创建时才有效.
为什么String可以直接实例化,但StringBuffer需要new运算符.有人可以解释我的主要原因.
我知道这里发布了很多类似的问题,但这些问题并没有真正回答我的问题.
我只是想知道为什么StringBuilder比使用+运算符的字符串连接快得多.即使+操作员内部是使用StringBuffer或者StringBuilder?
public void shortConcatenation(){
long startTime = System.currentTimeMillis();
while (System.currentTimeMillis()-startTime<=1000){
character+="Y";
}
System.out.println("short :"+character.length());
}
Run Code Online (Sandbox Code Playgroud)
////使用String builder
public void shortConcatenation2(){
long startTime = System.currentTimeMillis();
StringBuilder sb = new StringBuilder();
while (System.currentTimeMillis()-startTime<=1000){
sb.append("Y");
}
System.out.println("string builder short :"+sb.length());
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我怎么可以连接Double到String在Java?
我有以下代码:
Double price = 5.34;
String trade = MSFT;
Run Code Online (Sandbox Code Playgroud)
现在我有String key = price + trade,不确定这是否是正确的做法,任何建议?
如果stringBuffer和StringBuilder对String很有用,为什么String类不被折旧