首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >表达式分配-编译或运行时现象

表达式分配-编译或运行时现象
EN

Stack Overflow用户
提问于 2011-02-03 14:28:32
回答 4查看 606关注 0票数 2

我有个疑问

任何表达式赋值操作都是编译时或运行时的现象?

e.g Foo f=new Bar();

谢谢。

EN

回答 4

Stack Overflow用户

发布于 2011-02-03 14:31:21

如果您编译了以下内容:

代码语言:javascript
运行
复制
int x = 34 + 45;

然后,您分配的表达式将在编译时进行计算,因为它只涉及常量基本类型。在大多数其他情况下,包括您的示例,表达式将在运行时进行计算。

票数 4
EN

Stack Overflow用户

发布于 2011-02-03 14:35:27

我不知道您到底怀疑什么,但我认为在编译过程中,程序的文本表示被转换成机器可理解的形式(在Java情况下,它将是Java字节代码)。类似于分配之类的操作也会发生同样的情况。在运行时,这样的操作被执行。因此,要准确地回答您的问题,赋值操作是编译和运行时现象(在这两种情况下都会执行某些操作--在编译的情况下,它们是由Java编译器完成的,而在运行时则是由JVM完成的)。

例如,

代码语言:javascript
运行
复制
class Foo { }
class Bar { }
Foo f = new Bar();

此代码将被编译器拒绝。它会对您大喊大叫,因为您正在尝试分配不兼容的类型。

票数 2
EN

Stack Overflow用户

发布于 2011-02-03 14:31:17

它的运行时

Foo f指的是Object在运行时创建的Bar运行时。

有编译时检查它。要成功编译,Bar必须是Foo

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4887354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档