一点都不.对于同一件事,它只是一种不同的语法.它被编译成完全相同的字节码.所以说它就像一个人:你用两种不同的方式告诉编译器两次做同样的事情.
javap证明了这一点.这是这个:
{
Prog(int);
flags:
Code:
stack=2, locals=2, args_size=2
0: aload_0
1: invokespecial #1 // Method java/lang/Object."":()V
4: aload_0
5: iload_1
6: putfield #2 // Field foo:I
9: return
LineNumberTable:
line 4: 0
line 5: 4
line 6: 9
}
这里没有这个:
{
Prog2(int);
flags:
Code:
stack=2, locals=2, args_size=2
0: aload_0
1: invokespecial #1 // Method java/lang/Object."":()V
4: aload_0
5: iload_1
6: putfield #2 // Field foo:I
9: return
LineNumberTable:
line 4: 0
line 5: 4
line 6: 9
}
唯一的区别是2,但我不得不为两个测试用例选择不同的名称.