我很难理解为什么以下代码会在Java中返回语法错误:

int integer1 = 5;
System.out.print("The value of integer1 is " + (String)integer1);


我注意到要绕过此错误,我可以创建一个新的String变量,将其初始化为integer1的类型转换值:

int integer1 = 5;
String cast = (String)integer1;
System.out.print("The value of integer1 is " + cast);


但这似乎没有必要,特别是如果我只显示一次整数值的话。

最佳答案

您只能将原语转换为另一个原语,或者将对象转换为它的实例类型。例如,您可以将String转换为Object,将int转换为long。如果要在字符串中使用整数,请使用String.format或串联将自动处理转换:

System.out.print(String.format("The value of integer1 is %d", integer1));


要么

System.out.print("The value of integer1 is " + integer1);


顺便说一句,在Java中关于基元和转换的重要一件事是您不能将装箱的基元转换为其他装箱的类型。例如,如果您有

Integer foo = 1000;
Long bar = foo;


您将收到ClassCastException,但是

int foo = 1000;
long bar = foo;


会很好的工作

要对装箱的容器执行相同的操作:

Integer foo = 1000;
Long bar = foo.longValue();

07-26 09:05