방법 1에있는 모든 로컬 변수 정의에 대한 필자의 이해에 따라이 지역 표시기에 대해 로컬이 추가되었습니다.정적이 아닌 메서드에 추가 Local이있는 이유는 무엇입니까? 그리고 이것은 무엇입니까?
출처 :
public class A {
public void a() {}
public static void b() {}
}
생성 된 바이트 코드 :
Compiled from "A.java"
public class A extends java.lang.Object
SourceFile: "A.java"
minor version: 0
major version: 50
Constant pool:
const #1 = Method #3.#12; // java/lang/Object."<init>":()V
const #2 = class #13; // A
const #3 = class #14; // java/lang/Object
const #4 = Asciz <init>;
const #5 = Asciz ()V;
const #6 = Asciz Code;
const #7 = Asciz LineNumberTable;
const #8 = Asciz a;
const #9 = Asciz b;
const #10 = Asciz SourceFile;
const #11 = Asciz A.java;
const #12 = NameAndType #4:#5;// "<init>":()V
const #13 = Asciz A;
const #14 = Asciz java/lang/Object;
{
public A();
Code:
Stack=1, Locals=1, Args_size=1
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
LineNumberTable:
line 1: 0
public void a();
Code:
Stack=0, Locals=1, Args_size=1
0: return
LineNumberTable:
line 6: 0
public static void b();
Code:
Stack=0, Locals=0, Args_size=0
0: return
LineNumberTable:
line 11: 0
}
내 추측을 잡았습니다! :) +1 –
하지만 사양에서 직접 인용 한 것보다 나은 것입니다 :-) –
그 논쟁 수 없습니다 :-) –