回到大学我的一个教授.教我们只是做x + ""一个从基本类型到字符串的快速转换.
我不记得是什么课程,因为我有一些Java和C++课程(我现在还没有使用过一段时间),但我现在在C#/ .Net中使用它,这就是我主要开发的内容在最近.
在int,decimal,float等基本类型上使用.toString()over 是否有优势+""?什么情况会.toString()更好?
注意:我也被展示.toString()了,那个教授刚刚推荐,+""因为它更短,我从那时起就完成了,而没有质疑它.
Zac*_*h L 14
好吧,作为旁注,它取决于x是什么.如果x是Java中的原语,则必须.toString()使用其中一个包装器调用,例如
Integer.toString(x)
我会说使用toString()通常更好,因为至少在Java中,x +""表示你想要将两个字符串附加在一起.
就像在这个例子中:
public static void main(String[] args)
{
int x = 3;
String s = x + "";
}
Run Code Online (Sandbox Code Playgroud)
最终,在字节码中,如下:
public static void main(java.lang.String[]);
Code:
0: iconst_3
1: istore_1
2: new #2; //class java/lang/StringBuilder
5: dup
6: invokespecial #3; //Method java/lang/StringBuilder."<init>":()V
9: iload_1
10: invokevirtual #4; //Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
13: ldc #5; //String
15: invokevirtual #6; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
18: invokevirtual #7; //Method java/lang/StringBuilder.toString:()Ljava/lang/String;
21: astore_2
22: return
Run Code Online (Sandbox Code Playgroud)
所以它必须创建一个StringBuilder来追加""和x的String值.虽然效率损失不是那么多,但使用toString函数并不算太多.
与使用toString比较:
public static void main(String[] args)
{
int x = 3;
String s = Integer.toString(x);
}
Run Code Online (Sandbox Code Playgroud)
最终结果如下:
public static void main(java.lang.String[]);
Code:
0: iconst_3
1: istore_1
2: iload_1
3: invokestatic #2; //Method java/lang/Integer.toString:(I)Ljava/lang/String;
6: astore_2
7: return
Run Code Online (Sandbox Code Playgroud)
虽然它可能只是我的意见,但使用.toString反映了你真正想要的东西 - 你想要x的字符串值,而使用x +""是一种破解并且说 - 我希望x的字符串值连接起来用"".
旁注:我不能谈论C#会发出的中间字节码,但我想象一下类似的东西.另外,使用C#,您可以像引用类型一样轻松地调用值类型的.ToString(),所以我认为我的建议也适用.
| 归档时间: |
|
| 查看次数: |
933 次 |
| 最近记录: |