Java String.valueOf(int i)和仅打印i之间的差异
请参阅以下代码段:Java String.valueOf(int i)和仅打印i之间的差异,java,string,casting,value-of,Java,String,Casting,Value Of,请参阅以下代码段: int count = 0; String query = "getQuery"; String query1 = "getQuery"; final String PARAMETER = "param"; query += "&" + PARAMETER + "=" + String.valueOf(count); query1 += "&" + PARAMETER + "=" + count; System.out.println("Cast to
int count = 0;
String query = "getQuery";
String query1 = "getQuery";
final String PARAMETER = "param";
query += "&" + PARAMETER + "=" + String.valueOf(count);
query1 += "&" + PARAMETER + "=" + count;
System.out.println("Cast to String=>"+query);
System.out.println("Without casting=>"+query1);
得到的两个输出完全相同所以我想知道,当我们只使用计数
就可以得到相同的结果时,为什么要使用这种方法
我得到了一些链接,但没有发现完全相同的混淆。当Java编译器看到运算符
+
应用于字符串和非字符串时,它会玩一个小把戏:它null
-检查对象,对其调用toString()
,然后执行字符串连接
这就是你写这篇文章时发生的事情:
query1 += "&" + PARAMETER + "=" + count;
// ^^^ ^^^^^^^^^ ^^^
当默认转换为String
时,您当然可以这样做
然而,如果你这样做
String s = count; // <<== Error
这在以下章节中得到了很好的解释:
如果只有一个操作数表达式的类型为String
,则在运行时对另一个操作数执行字符串转换()
你应该注意以下几点:
+
运算符在语法上是左关联的,无论它是否为左关联
由类型分析确定,以表示字符串连接或
数字加法。在某些情况下,需要小心以获得所需的结果
结果
如果你写1+2+“小提琴手”
,结果将是
3 fiddlers
然而,写“小提琴手”+1+2
会产生:
fiddlers 12
String.valueOf(int)
实际上调用了Integer.toString()
因此,它用于将int
优雅地转换为字符串。同样,做i+”
是不礼貌的,不是很优雅
此外,当您直接打印任何数字时,它实际上会调用其包装类的toString()
方法,并打印字符串。为什么需要不同的输出?请理解,当您连接字符串文字和int(或任何基元类型)时,int(或基元)自动转换为字符串。我不希望有任何不同的输出,但想知道使用此选项的原因。(如果是cource中的任何一个)它是在不将原语与字符串文字连接时使用的。这就是我要寻找的——对JLS的引用。谢谢1+
fiddlers 12