在C / C ++中,我们必须在调用函数之前声明它们。在Javascript中有一个提升变量和函数。我找不到有关Java的信息。是否还有方法的提升?
答案 0 :(得分:2)
在Java函数/过程中称为方法。唯一的区别是该函数返回值。不,没有像JS(感谢上帝)那样的吊装。对变量的唯一要求是必须在使用它们之前创建它们。就像C.
但是方法是对象的一部分。因此它们是附加到对象上的,您可以在它们的声明上方调用它们(虚拟方法,一切都是虚拟的:)。
因为调用它们实际上涉及<Class>.method()
并且在执行时间之前已经编译并加载了Class。 (有些反射会绕过或更改这种行为,等等)。
编译器相对自由地对事物进行重新排序,但是例如volatile可以禁止这种行为。 顺便说一句:Are hoisting and reordering the same thing?
答案 1 :(得分:1)
在Java中,有两种类型的方法:实例方法和类方法。要调用前者,您需要实例化该类,而两个则不需要实例化该类。这是一个示例:
public class MyClass{
public String instanceMethod(){
return "This is from instance method";
}
public static String classMethod(){
return "This is from class method";
}
public static void main(String[] args){
System.out.println(MyClass.classMethod()); //will work
System.out.println(MyClass.instanceMethod()); //compilation error
MyClass myInstance = new MyClass();
System.out.println(myInstance.instanceMethod()); //will work
}
}