很简单嘛。 String ss = new StringBuffer().append("").append(32).toString();
“+”是java中唯一被重载的运算符
String ss = "" + 32;//整数32,此时 ss为"32" +隐式调用String类中的toString方法,将整数32转换为"32"与前面的""连接。
是操作符重载的原因,但是Java中程序员不能重载操作符了。只能用Sun弄好的了。
String ss = new StringBuffer().append("").append(32).toString(); +操作符号有这样的功能,但是是产生的两个字符串对象,并且是通过 new StringBuffer()来产生的,所以有的地方说String是性能的瓶颈
如果sun这样进行字符串的相加: String ss = new StringBuffer().append("").append(32).toString(); 那我就太失望了,的确是很慢呀但是我也想不出更好的办法了。
‘+’在这里不是运算符,而是String类的一个方法;
我给你一个题,你看看输出什么 public class a { public static void main(String [] args) { System.out.println("output is:"+3+3); System.out.println("output is:"+(3+3)); } } 你会知道为什么的 它其实是“+”的重载,
这个构造函数的哦
String ss = new StringBuffer().append("").append(32).toString();
+隐式调用String类中的toString方法,将整数32转换为"32"与前面的""连接。
+操作符号有这样的功能,但是是产生的两个字符串对象,并且是通过
new StringBuffer()来产生的,所以有的地方说String是性能的瓶颈
String ss = new StringBuffer().append("").append(32).toString();
那我就太失望了,的确是很慢呀但是我也想不出更好的办法了。
public class a
{
public static void main(String [] args)
{
System.out.println("output is:"+3+3);
System.out.println("output is:"+(3+3));
}
}
你会知道为什么的
它其实是“+”的重载,
这样一来会不伦不类,
java 就是一切都是对象,
String ss = "" + 32;
"+" 肯定是同类型运算,所以32自动转换为String
收到append的启发,去看了看java定义各个类的源程序
发现下面的关系,看来
String ss = "" + 32;
换成这样String ss = "" + new Integer( 32 ).toString();
的效率未必低多少,但是归根结底调用的是
Integer 的 toString( int i );
看来以后这样是最好的了
String ss = "" + Integer.toString( 32 );附:
//StringBuffer中append的定义
public StringBuffer append(int i) {
return append(String.valueOf(i));
}
//String中valueOf的定义
public static String valueOf(int i) {
return Integer.toString(i, 10);
}
//Integer中toString的定义
public static String toString(int i, int radix) {
if (radix < Character.MIN_RADIX || radix > Character.MAX_RADIX)
radix = 10; /* Use the faster version */
if (radix == 10) {
return toString(i);
}
....................
}