-2 和 2*(-1)区别

int s = 2;
int h = -s和
int h = s*(-1)有什么区别
int h = -s这个是不是错误的??

[code="java"]int h = -s[/code]

没有错误。

区别如下:

[code="java"]int h = -s [/code]

[quote][b] 11: getfield #2; //Field s:I
14: ineg
15: putfield #3; //Field h:I[/b][/quote]

[color=blue][b]只用了 一个取负的操作[/b][/color]

[quote]int k = s * (-1)[/quote]

[quote][b] 20: getfield #2; //Field s:I
23: iconst_m1
24: imul
25: putfield #4; //Field k:I[/b][/quote]

[color=blue][b]多了一条指令,用到了乘法操作![/b][/color]

[color=blue][b]所以 int h = -s 比较好![/b][/color]

java里面没有问题的 呵呵

int h = -s和
int h = s*(-1)有什么区别

个人感觉-s更快...