当前位置: 首页 > 知识库问答 >
问题:

在Java中绑定和分派有什么区别?

龚凯泽
2023-03-14

绑定是否分别与原始值和对象匹配原始变量和引用变量?

编辑:请给我一些明确的参考资料,这样我就可以阅读更多关于这一点。

共有1个答案

凌联
2023-03-14

我相信这种混乱通常来自于这些术语的超载。

我们用高级语言编写程序,编译器或解释器必须将其转换成机器真正理解的东西。

粗略地说,您可以想象一个编译器将我们的方法代码转换成某种形式的机器代码。如果编译器当时知道当我们稍后运行程序时,该方法在内存中的确切位置,那么它就可以安全地找到这个编译方法的每个方法调用,并用跳转到编译代码所在的地址来替换它,对吗?。

嗯,物化这种关系就是我所理解的绑定。但是,这种绑定可能发生在不同的时刻,例如编译时、链接时、加载时或运行时,这取决于语言的设计。

术语静态和动态通常分别用于指在运行时之前和运行时绑定的东西。

较晚的绑定时间与更大的灵活性相关联,较早的绑定时间与更高的效率相关联。语言设计者在创建语言时必须平衡这两个方面。

因此,在我看来,您必须首先将方法调用绑定到特定的实现或执行地址,然后才能分派对它的调用。

我在过去回答过一个非常类似的问题,其中我用示例演示了在Java中是如何发生这种情况的。

我还建议阅读《编程语言语用学》一书。从理论的角度来学习这些东西是很有借鉴意义的。

 类似资料:
  • 问题内容: 有太多相关的名称:早期和晚期绑定,静态和动态调度,运行时与编译时多态等,我不知道它们之间的区别。 我找到了清楚的解释,但这是正确的吗?我将解释 JustinC : 绑定: 正在确定变量的类型(对象?)。如果它是在编译时完成的,则它的早期绑定。如果在运行时完成,则绑定晚。 调度: 确定哪个方法与方法调用匹配。静态调度是在编译时计算的方法,而动态调度是在运行时执行的。 绑定是否分别将原始变

  • 问题内容: 我只是想知道为什么我们通常在两个布尔之间使用逻辑OR 而不是按位OR ,尽管它们都运行良好。 我的意思是,请看以下内容: 我们可以代替使用吗?与和相同。 问题答案: 如果您使用和形式,而不是这些运算符的和形式,则Java不会费心地单独评估右手操作数。 这是您是否希望缩短评估时间的问题-在 大多数情况 下都是如此。 说明短路好处的一个好方法是考虑以下示例。 正如Jeremy和Peter提

  • 问题内容: 我在看一些模拟的OCJP问题。我遇到了一个非常令人困惑的语法。这里是: 为什么输出在和之间变化? 问题答案: 问题只是和您玩弄混乱的空格。 是通常的(不等于)比较。 另一方面: 最好写成如下形式: 因此,这是两个运算符。 首先反转。 然后将其分配回。 赋值运算符返回分配的值。因此,计算结果为true-这就是您要打印的内容。

  • 问题内容: java中的继承和委托有什么区别? 如何在我的项目中使用以下示例?请你指导我。我了解继承,但对委托没有太多了解。因此,请给出适当的理由。我为什么要用这个? 问题答案: 当您委托时,您只是在调用一个知道必须做什么的类。您并不真正在乎它是 如何 执行的,您所 关心的 只是您正在调用的类知道需要做什么。 如果我是您,我将创建一个接口并命名该接口(或类似名称的接口),该接口具有一个名为的方法。

  • 问题内容: 我之所以问这个问题,是因为对该答案的评论主题进行了讨论。我有90%的方法可以解决问题。 存在三种不同形式: 绑定方法 , 未绑定方法 和 函数 对象之间的区别是什么,所有这些都由f1描述?一个人怎么称呼这三个物体?它们如何相互转化?关于这些东西的文档很难理解。 问题答案: 一个 功能 是创建由声明,或通过。在Python 2下,当函数出现在语句主体中(或传递给类构造调用)时,它将转换为

  • 我知道这两个操作都是对表中的一列执行的,但每个操作有什么不同。