我通过String.valueOf()将其他类型转换为String,如下所示:
String s = String.valueOf(2.5);
Run Code Online (Sandbox Code Playgroud)
我也通过如下铸造将double转换为int:
int i = (int) 2.5 ;
Run Code Online (Sandbox Code Playgroud)
我想将double转换为String,如下所示:
String s = (String) 2.5;
Run Code Online (Sandbox Code Playgroud)
但我给出以下错误:
Cannot cast from double to String
Run Code Online (Sandbox Code Playgroud)
为什么可以将double转换为int,但是不能将double转换为String?
从一种原始类型转换为另一种原始类型是标准的,很好理解并在机器代码中得到支持.即Java只是为您提供了生成相应机器代码的语法.
甚至C语言也支持这一点.
转换为对象是不同的,因为它要求您调用库,即使C++具有运算符重载以支持此类转换,它也不是这样的转换.C和Java不支持这样的隐式转换.
BTW转换为String的最简单方法是使用以下方法.
primitive p = ...
String s = "" + p;
Run Code Online (Sandbox Code Playgroud)
这是无效的,因为它使用StringBuilder,但是创建一个String也没有效率,所以它只是没有那么糟糕,而不是非常好.顺便说一下,我有库可以在不创建对象的情况下将原语转换为文本.
但是,我使用它是因为它对开发人员更有效,我等待分析器告诉我这不够好在这种情况下我也不会使用String.valueOf().