为什么可以将double转换为int,但是不能将double转换为String?

Sam*_*hdi 3 java casting

我通过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?

Pet*_*rey 8

从一种原始类型转换为另一种原始类型是标准的,很好理解并在机器代码中得到支持.即Java只是为您提供了生成相应机器代码的语法.

甚至C语言也支持这一点.

转换为对象是不同的,因为它要求您调用库,即使C++具有运算符重载以支持此类转换,它也不是这样的转换.C和Java不支持这样的隐式转换.


BTW转换为String的最简单方法是使用以下方法.

primitive p = ...
String s = "" + p;
Run Code Online (Sandbox Code Playgroud)

这是无效的,因为它使用StringBuilder,但是创建一个String也没有效率,所以它只是没有那么糟糕,而不是非常好.顺便说一下,我有库可以在不创建对象的情况下将原语转换为文本.

但是,我使用它是因为它对开发人员更有效,我等待分析器告诉我这不够好在这种情况下我也不会使用String.valueOf().