我很难理解为什么以下内容在Java中返回语法错误:
int integer1 = 5;
System.out.print("The value of integer1 is " + (String)integer1);
我注意到为了绕过这个错误,我可以创建一个初始化为整数类型为integer1的新String变量:
int integer1 = 5;
String cast = (String)integer1;
System.out.print("The value of integer1 is " + cast);
但这似乎有点不必要,特别是如果我只显示一次整数的值。
答案 0 :(得分:3)
您只能将基元转换为另一个基元或对象为其实例的类型。例如,您可以将String转换为Object,将int转换为long。如果要在字符串中使用int,请使用String.format或concatenation将自动处理转换:
System.out.print(String.format("The value of integer1 is %d", integer1));
或
System.out.print("The value of integer1 is " + integer1);
BTW,Java中关于基元和转换的一个重要事情是你不能将盒装基元转换为其他盒装类型。例如,如果你有
Integer foo = 1000;
Long bar = foo;
您将获得ClassCastException,但
int foo = 1000;
long bar = foo;
可以正常使用
对盒装容器做同样的事情:
Integer foo = 1000;
Long bar = foo.longValue();
答案 1 :(得分:1)
我很难理解为什么以下返回a Java中的语法错误:
int integer1 = 5;
String cast = (String)integer1;
System.out.print("The value of integer1 is " + cast);
你不能从string
转换为int
,反之亦然,这两种类型之间没有任何关系。事实上,你所展示的所有例子都不会编译。
如果要在两种类型之间进行转换,可以使用以下示例:
字符串为整数:
int value = Integer.valueOf("12345");
或
int value = Integer.parseInt("12345");
整数到字符串:
String value = String.valueOf(12345);
或
String value = Integer.toString(12345);
答案 2 :(得分:1)
在第二个例子中,您可以改为:
int integer1 = 5;
System.out.print("The value of integer1 is " + integer1);
当您使用+
运算符将String
与其他任何内容连接时,Java会自动为"其他任何内容调用toString()
方法"。 这与类型广告不同。