所以在这个基本的Java程序中,
public class HelloWorld{
public void testFunc(){
System.out.println("Class = "+this);
}
@Override
public String toString(){
return "TEST";
}
public static void main(String[] args){
int i = 5;
HelloWorld hw = new HelloWorld();
System.out.println("Hello, World");
hw.testFunc();
System.out.println(i);
}
} 行System.out.println(i);自动将int i转换为String。我认为任何需要字符串类型参数的函数都会自动在java (与C中的转换不同)进行这种转换。但是,如果我在Android上尝试这个
Toast.makeText(getApplicationContext(), i, Toast.LENGTH_SHORT).show();
当i在扩展活动类中声明为int时,应用程序在启动时崩溃。那么,这种转换在Java中是如何工作的呢?
发布于 2013-08-14 05:14:10
这不是一个隐含的转换。pintln()是由许多数据类型组成的过载:
public void println(int x) {
synchronized (this) {
print(x);
newLine();
}
}在你的例子中,makeText()不是。
发布于 2013-08-14 05:18:57
System.out.println(int)确实将int转换为char,它使用String.valueOf(int)将int转换为String。尝试显式转换System.println((char)i),您将看到它打印一个不同的结果,它将是U+0005 Unicode字符。
发布于 2013-08-14 05:26:46
理解JAVA中的类型转换:请参阅
用Java编程语言编写的每个表达式都有一个类型,可以从表达式的结构和表达式中提到的文字、变量和方法的类型推导出来。
但是,在表达式类型不合适的上下文中编写表达式是可能的。在某些情况下,这会导致编译时出现错误。,这在Android示例中是正确的.
在其他情况下,上下文可能能够接受与表达式类型相关的类型;为了方便起见,Java编程语言可以执行从表达式类型到其周围上下文可接受的类型的隐式转换,而不是要求程序员显式地指示类型转换。,System.out.println(i)示例也是如此
https://stackoverflow.com/questions/18223653
复制相似问题