回到大学,我的一位教授。告诉我们要做的只是x + ""
从基本类型到字符串的快速转换。
我不记得我在Java和C ++课程中上过什么课(我已经有一段时间没有使用过了),但是我现在在C#/。Net中使用它,这正是我主要在开发的课程在最近。
将int,decimal,float等基本类型使用.toString()
over 有优势+""
吗?什么情况会.toString()
更好?
注意:还向我展示了.toString()
该教授,+""
因为它比较短,所以我才建议这样做,从那时起我就一直在这样做,而没有质疑它。
恩,作为旁注,它取决于x是多少。如果x是Java中的原始类型,则必须.toString()
使用其包装器之一进行调用,例如
Integer.toString(x)
我会说使用toString()通常更好,因为至少在Java中,x +“”表示您要将两个String附加在一起。
像这个例子一样:
public static void main(String[] args)
{
int x = 3;
String s = x + "";
}
最后以字节码表示为:
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
因此,它必须创建一个StringBuilder来将“”和x的字符串值附加在一起。虽然损失的效率不是很多,但仅使用toString函数也不会太多。
与使用toString进行比较:
public static void main(String[] args)
{
int x = 3;
String s = Integer.toString(x);
}
最终结果为:
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
尽管可能只是我的看法,但使用.toString可以反映出您真正想要的-您想要x的String值,而使用x +“”则有点不妥,并表示-
我希望将x的String值串联起来与“”。
旁注:我无法说出C#会发出的中间字节码,但我想象与此类似。另外,使用C#,您可以像对引用类型一样轻松地对值类型调用.ToString(),因此我认为我的建议也适用。
但是,这段代码是有效的: 所以我的问题是,import和variable/require方法的作用有什么不同?我想解决困扰我在项目上的导入的任何问题,因为这似乎可能会导致更多的问题。
问题内容: Java中的x 和 x之间有区别吗? 问题答案: 称为预增量,而称为后增量。
本文向大家介绍MongoDB中NumberLong(x)和 NumberLong("x")之间的区别,包括了MongoDB中NumberLong(x)和 NumberLong("x")之间的区别的使用技巧和注意事项,需要的朋友参考一下 NumberLong(x)超出其限制值并四舍五入,而NumberLong("x")没有。 现在,我们将看一个数字,并将其用于NumberLong(x)和Number
我刚刚开始了一个小节点项目,它将与MongoDB接口。然而,我似乎无法正确地导入相关的节点模块,即使我已经通过正确地安装了它们。 例如,以下代码抛出一个错误,告诉我“express没有默认导出”: 但是,此代码的工作原理: 所以我的问题是,import和variable/require方法的功能有什么不同?我想在这个项目上解决困扰我导入的任何问题,因为它似乎可能会在将来引起额外的问题。
问题内容: 在Python中,我不太清楚以下两行代码之间的区别: 要么 他们不是都只是从模块X导入所有内容吗?有什么不同? 问题答案: 之后,你可以参考的东西一样。之后,您可以像一样直接引用事物。因为第二种形式将名称直接导入到本地名称空间,所以如果您从许多模块中导入内容,则可能会产生冲突。因此,不鼓励使用。 您也可以执行,仅将导入到本地名称空间,而不导入中的所有内容。这样做会更好,因为如果您列出了
我很困惑为什么JavaPoint类需要两个int参数,而getX()和getY()方法返回双精度 如果我打电话... 它将返回4.0。如果我打电话 我会得到4分。 有什么原因吗?