了解java程序

时间:2011-10-31 13:16:40

标签: java

  

可能重复:
  Weird java behavior with casts to primitive types

为什么要关注打印1

int i = (char) - (int) + (long) - 1;
System.out.println(i);

为什么上面的代码行打印1?为什么i的值变为1?

2 个答案:

答案 0 :(得分:1)

以这种方式看待它,每个表达式都有自己的变量(好吧,除了-1)。

long a = (long) -1; // a = -1
int b = (int) a;    // b = -1
int c = -b;         // c = 1
int d = (char) c;   // d = 1
int i = (int) d;    // i = 1 (implicit conversion)

答案 1 :(得分:0)

如果我没弄错的话,

int i = (char) - (int) + (long) - 1;

实际上相当于

int i = (char)(-(int)(+((long)(- 1))));

因为-1和1非常适合表达式中使用的所有数据类型,所以我们可以放弃强制转换来获取

int i = -(+(- 1));