1
A
回答
1
其运行时
Foo f
将参照Object
创建的Bar
运行在运行时。
有编译时检查它。 Bar
必须是Foo
这个编译成功
4
如果你编译如下:
int x = 34 + 45;
然后您将分配在编译时进行评估,因为它涉及唯一不变的基本类型的表达式。在其他大多数情况下,包括您的示例,表达式都将在运行时进行评估。
2
我不知道你的疑问到底是什么,但我认为在编译过程中,程序的文本表示被翻译成机器可理解的形式(在Java中是Java字节码)。像分配这样的操作也会发生同样的情况。在运行时,执行这些操作。因此,要精确地回答你的问题,赋值操作既是编译操作又是运行时现象(在两种情况下都采取了某些操作 - 在编译时它们由Java编译器完成,而在运行时则由JVM完成)。
例如,
class Foo { }
class Bar { }
Foo f = new Bar();
这段代码被编译器被拒绝。它会对你大喊,你正试图分配不兼容的类型。
1
它的两个。
编译时间 - 分配在编译时间类型兼容性进行分析,用于注射的代码来执行转换/装箱/拆箱等。即使一些流分析能影响分配,例如变量及其分配可以完全被优化。
运行时间 - 值的实际赋值,即更改变量内存位置中的位数当然会在运行时发生。
相关问题
- 1. 得到在编译时(或运行时)
- 2. 从Cmake运行编译文件时出现分段错误
- 3. 运行时Java编译器
- 4. 在编译时运行PublicResXFileCodeGenerator
- 5. 汇编运行时内存分配
- 6. 编译和运行时
- 7. Tomcat。 Java运行时编译
- 8. Const编译器/运行时
- 9. Eclipse运行时编译?
- 10. 运行时编译顺序
- 11. 运行时编译C#
- 12. C#编译运行时
- 13. 运行时编译CLR
- 14. Xcode 4.3.1运行Profiler时出现错误编译错误
- 15. 运行时换出装配在编译时
- 16. 注解在编译时出现,但在运行时不存在
- 17. 在编译时或运行时在C#中创建LUT
- 18. 获取运行时间或编译时间细节的工具
- 19. var关键字运行时或编译时间?
- 20. 在java中继承编译时或运行时
- 21. 是在编译时或运行时评估的F#范围
- 22. 在编译时或运行时是否处理Qt .ui文件?
- 23. 通过C#在运行时编译swf?
- 24. 介绍Java的分配 - 单元9:编译/从命令运行
- 25. 运行时间编译VS时间(.NET)
- 26. 编译时间和运行时间?
- 27. 编译时与运行时,Java和C#
- 28. 编译时间和运行时错误
- 29. Typescript。我可以区分编译时和运行时依赖
- 30. 运行gulp服务或编译时,装载器的Webpack配置问题
好的。谢谢Jigar! – Anonymous 2011-02-03 14:33:51