我有个疑问
任何表达式赋值操作都是编译时或运行时的现象?
e.g Foo f=new Bar();
谢谢。
发布于 2011-02-03 14:31:21
如果您编译了以下内容:
int x = 34 + 45;然后,您分配的表达式将在编译时进行计算,因为它只涉及常量基本类型。在大多数其他情况下,包括您的示例,表达式将在运行时进行计算。
发布于 2011-02-03 14:35:27
我不知道您到底怀疑什么,但我认为在编译过程中,程序的文本表示被转换成机器可理解的形式(在Java情况下,它将是Java字节代码)。类似于分配之类的操作也会发生同样的情况。在运行时,这样的操作被执行。因此,要准确地回答您的问题,赋值操作是编译和运行时现象(在这两种情况下都会执行某些操作--在编译的情况下,它们是由Java编译器完成的,而在运行时则是由JVM完成的)。
例如,
class Foo { }
class Bar { }
Foo f = new Bar();此代码将被编译器拒绝。它会对您大喊大叫,因为您正在尝试分配不兼容的类型。
发布于 2011-02-03 14:31:17
它的运行时
Foo f指的是Object在运行时创建的Bar运行时。
有编译时检查它。要成功编译,Bar必须是Foo。
https://stackoverflow.com/questions/4887354
复制相似问题