第8行的呼叫getName()
与第9行的呼叫有什么区别。
如果是,那么它是什么?
这可能非常简单,但我进行了Google搜索,我得到的唯一SO result是关于将this
与字段一起使用,而不是使用方法。
class CallingInstanceMethodWithAndWithoutThis {
private String getName() {
return "Zarah";
}
private void printGetName() {
System.out.println(getName());
System.out.println(this.getName());
}
public static void main(String [] args) {
new CallingInstanceMethodWithAndWithoutThis().printGetName();
}
}
答案 0 :(得分:1)
没有区别,它只是一种编码惯例。此外,您可以要求Eclipse自动删除"这个"当不需要作为保存动作时。
答案 1 :(得分:1)
对于编译器没有区别,但在某些情况下可能会导致冲突。一般不使用this
就行了,java编译器足够智能识别我们的意图,但强烈建议使用this
关键字(例如在setter中),IMO它更清楚了解方法的来源(如果您的类扩展了其他方法或者您静态导入某些方法)。
答案 2 :(得分:1)
使用$config['use_page_numbers'] = TRUE
与不使用它之间没有区别。
要检查这一点,事实上,如果我们使用this
执行反汇编,则输出如下:
javap -p -c CallingInstanceMethodWithAndWithoutThis
我们可以注意到第0行和第10行(我们称之为 private void printGetName();
Code:
0: getstatic #19 // Field java/lang/System.out:Ljava/io/PrintStream;
3: aload_0
4: invokespecial #25 // Method getName:()Ljava/lang/String;
7: invokevirtual #27 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
10: getstatic #19 // Field java/lang/System.out:Ljava/io/PrintStream;
13: aload_0
14: invokespecial #25 // Method getName:()Ljava/lang/String;
17: invokevirtual #27 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
方法)的输出是相同的,没有区别。