Java 早期绑定后期绑定与运行时和编译时相同吗?

Java 早期绑定后期绑定与运行时和编译时相同吗?,java,Java,当我们在函数中创建对象时,该对象是在运行时创建的吗 发生了什么事?创建?在编译时和运行时 早期绑定和晚期绑定是否也意味着编译时和运行时? 什么是动态链接静态链接?当我听到静态消息时,认为编译时正确吗?该死的,我这么糊涂 对不起,伙计们,我知道我的英语不好,也请尽可能让你的答案和例子对初学者友好。提前装订就像从冰箱里拿西红柿,然后在开始煮汤之前把它们放在桌子上 晚装就是开始煮汤,当你需要西红柿时,你就去冰箱里拿西红柿 煮汤是在运行时进行的 准备好刀子、汤匙和平底锅需要编译时间。(这不包括西红柿。)

当我们在函数中创建对象时,该对象是在运行时创建的吗

发生了什么事?创建?在编译时和运行时

早期绑定和晚期绑定是否也意味着编译时和运行时? 什么是动态链接静态链接?当我听到静态消息时,认为编译时正确吗?该死的,我这么糊涂


对不起,伙计们,我知道我的英语不好,也请尽可能让你的答案和例子对初学者友好。

提前装订就像从冰箱里拿西红柿,然后在开始煮汤之前把它们放在桌子上

晚装就是开始煮汤,当你需要西红柿时,你就去冰箱里拿西红柿

煮汤是在运行时进行的

准备好刀子、汤匙和平底锅需要编译时间。(这不包括西红柿。)


好的,这里有一个伪代码解释:

后期绑定:

... get : 
if (myvar is null) myvar = new object;
return myvar
早期绑定

myvar = new object;
... get :
return myvar
当我们在函数中创建对象时,该对象是在 运行时间

发生了什么事?创建?在编译时和运行时

这取决于你所说的“对象”是什么意思。如果你指的是一个类实例,那么它将在运行时在堆栈或堆上创建。对象(如显式声明为静态的字符串或类型)将在中的编译时创建。静态变量在程序生命周期内有效

早期绑定和晚期绑定是否也意味着编译时和运行时

发件人:

通过早期绑定,编译器静态地验证是否存在一个 一个或多个具有适当方法名称和签名的方法。这 通常存储在编译程序中,作为虚拟内存中的偏移量 方法表(“v表”),非常有效。迟订 编译器没有足够的信息来验证该方法 存在,更不用说绑定到v表上的特定插槽。相反 该方法在运行时按名称查找

简而言之,在早期绑定中,编译器在符号表中查找方法及其偏移量,因此信息必须可用,而在后期绑定中,则无法完成,运行时必须查找。请注意,后期绑定与动态调度非常不同,尽管它们通常是同义词,因为后者指的是使用调度表或“vtable”来存储指向方法实现的指针,这些指针可能会被重写

什么是动态链接静态链接


基本上,这就是在最终可执行文件(静态)中包含引用文件或“库”与在运行时将它们放入程序映像之间的区别。显然,前者给可执行文件增加了不必要的大小,但是(1)您不必担心依赖性问题,(2)程序启动更高效。另一方面,动态链接(1)节省空间,(2)允许在一个地方进行库更新。

Java中没有任何东西是静态链接的,但它是静态绑定的。“静态”是指编译器确定要调用的函数的确切描述:类名、方法名、参数类型。它不确定其在内存中的地址。这就是静态绑定和静态链接之间的区别,这意味着在编译时仍然不知道调用静态方法时将执行什么代码。这取决于JVM在运行时加载的.class文件中的内容。Java静态地绑定对
static
方法的所有调用——因此使用关键字。它还将静态绑定应用于
private
方法,因为它们不能被重写。类似的参数适用于
final
方法

动态绑定意味着编译器决定一切,就像在静态情况下,除了包含该方法的类之外。确切的类是在调用方法之前的最后一刻确定的,相对于调用方法的对象
Object.equals
就是这样一个动态绑定的方法。这意味着相同的代码行可以在每次执行时调用不同的
方法


早期绑定==静态绑定;后期绑定==动态绑定。这些是同义词。

早期绑定是向设计时赋值,而晚期绑定是向运行时赋值
运行时和设计时之间只有区别,它必须显示赋值值。
例如:

//early binding 
myvar =new myvar();
// get
retutn myvar

是的,对象是在运行时实例化的。我甚至不知道Java中有“静态链接”的概念。我真的不能真正理解剩下的问题。实际上我刚刚听说了这个静态链接和动态链接链接。我不知道这些东西,这就是为什么我问。这些术语通常用来指汇编机器代码,例如,你可以静态链接到C++库或动态链接DLL文件。在Java中,实际上并没有一个精确的模拟,因为所有东西都是用同样的类加载器加载的;ObjectClass obj=新的ObjectClass()//这里什么是早期绑定,什么是后期绑定?ObjectClass是您的番茄(它已经准备好了),您正在将其中一个放到桌子上。这是早期装订。但是,如果您在事件或条件中使用它,如果必须在创建它之前发生某些事情,那么它就是后期绑定。您在事件或条件中的意思是什么?我在回答中已经解释过。“静态”在不同的上下文中指代不同的事情,其中有一些(键入、可见性、链接和加载、分配)。还有后期绑定!=动态绑定:“后期绑定通常与动态调度相混淆,但有很大的区别。”~(第2段)您一般是在谈论Java还是编程语言?我不想放弃