'this'关键字的开头

Mar*_*ood 4 java optimization code-readability

这似乎是一个常见的问题,但我搜索了SO和谷歌,找不到我正在寻找的东西:

this在Java 中调用关键字的开销是多少?我知道在C++中由于解除引用当前对象指针而产生一些最小的开销.Java会产生同样的开销吗?进行多次调用是否不太理想this.这主要是可读性与优化的问题.

Mic*_*rry 6

没有任何.它们都产生完全相同的字节码.例如,这个:

package test;

public class T {

    int a=0;

    public T() {
        System.out.println(a); //this line
    }

    public static void main(String[] args) {
        new T();
    }

}
Run Code Online (Sandbox Code Playgroud)

...生产:

public class test.T {
  int a;

  public test.T();
    Code:
       0: aload_0       
       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: aload_0       
       5: iconst_0      
       6: putfield      #2                  // Field a:I
       9: getstatic     #3                  // Field     java/lang/System.out:Ljava/io/PrintStream;
      12: aload_0       
      13: getfield      #2                  // Field a:I
      16: invokevirtual #4                  // Method java/io/PrintStream.println:(I)V
      19: return        

  public static void main(java.lang.String[]);
    Code:
       0: new           #5                  // class test/T
       3: dup           
       4: invokespecial #6                  // Method "<init>":()V
       7: pop           
       8: return        
}
Run Code Online (Sandbox Code Playgroud)

...无论标记此行的行是否使用athis.a.(如果你愿意的话尝试一下 - 以两种方式编译上面的代码并比较两个类文件javap -c.)考虑到它们产生完全相同的字节码,性能上没有任何差别.