package typecastingpkg;
public class Main
{
public static void main(String[] args)
{
byte a=10;
Integer b=(int)-a;
System.out.println(b);
int x=25;
Integer c=(Integer)(-x); // If the pair of brackets around -x are dropped, a compile-time error is issued - illegal start of type.
System.out.println(c);
Integer d=(int)-a; //Compiles fine. Why does this not require a pair of braces around -a?
System.out.println(d);
}
}
在此代码中,-x
将原始类型int
转换为包装器类型Integer
时,会产生编译时错误illegal start of type
:
Integer c=(Integer)-x;
它需要一对-x
像这样的牙套Integer c=(Integer)(-x);
然而,下面的表达式编译得很好。
Integer d=(int)-a;
为什么这个不需要-a
像前面的表达式那样需要一对大括号?