我们来看看底层,是不是真的有这个参数:
以此来证明我不是瞎说:
E:\java基础\day06-1>javac -g:vars Person.java
E:\java基础\day06-1>javap -v Person.class
public Person(); // 无参构造
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1// 这里表示方法中有多少个参数
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
LocalVariableTable:
// 局部变量属性表,这里表示方法中有多少个局部变量,参数也是局部变量
Start Length Slot Name Signature
0 5 0 this LPerson;
public Person(int, java.lang.String);// 有参构造 int 基础数据类型
descriptor: (ILjava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: aload_0
5: iload_1
6: putfield #7 // Field id:I
9: aload_0
10: aload_2
11: putfield #13 // Field name:Ljava/lang/String;
14: return
LocalVariableTable:
Start Length Slot Name Signature
0 15 0 this LPerson;
0 15 1 id I
0 15 2 name Ljava/lang/String;
public static void main(java.lang.String[]);
descriptor: ([Ljava/lang/String;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=2, args_size=1
0: new #8 // class Person
3: dup
4: iconst_1
5: ldc #17 // String zhangsan
7: invokespecial #19
10: astore_1
11: return
LocalVariableTable:
Start Length Slot Name Signature
0 12 0 args [Ljava/lang/String;
11 1 1 p LPerson;
}
publicclassTest{privateint id;publicTest(Test this){
System.out.println(this.id);}publicTest(int id){}publicvoidtest01(){}publicvoidtest02(){int i =0;int j =0;
String name ="";char c ='a';boolean f =false;}publicvoidtest03(int i, String s,char c,boolean f,double d){}publicstaticvoidtest04(){}}
再次验证
E:\java基础\day06-1>javac -g:vars Test.java
E:\java基础\day06-1>javap -v Test.class
public Test();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: invokespecial #1
4: return
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this LTest;
public Test(int);
descriptor: (I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=2, args_size=2
0: aload_0
1: invokespecial #1
4: return
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this LTest;
0 5 1 id I
public void test01();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=0, locals=1, args_size=1
0: return
LocalVariableTable:
Start Length Slot Name Signature
0 1 0 this LTest;
public void test02();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=6, args_size=1
0: iconst_0
1: istore_1
2: iconst_0
3: istore_2
4: ldc #7
6: astore_3
7: bipush 97
9: istore 4
11: iconst_0
12: istore 5
14: return
LocalVariableTable:
Start Length Slot Name Signature
0 15 0 this LTest;
2 13 1 i I
4 11 2 j I
7 8 3 name Ljava/lang/String;
11 4 4 c C
14 1 5 f Z
public void test03(int, java.lang.String, char, boolean, double);
descriptor: (ILjava/lang/String;CZD)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=0, locals=7, args_size=6
0: return
LocalVariableTable:
Start Length Slot Name Signature
0 1 0 this LTest;
0 1 1 i I
0 1 2 s Ljava/lang/String;
0 1 3 c C
0 1 4 f Z
0 1 5 d D
public static void test04();
descriptor: ()V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=0, locals=0, args_size=0
0: return