Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java String.valueOf(int i)和仅打印i之间的差异_Java_String_Casting_Value Of - Fatal编程技术网

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