看了SCJP的书,书上是这样说的
1.不能先加宽,后装箱(int不能变成LONG)
2.可以先装箱,后加宽(int可以通过Integer变成Object)下面的那个我意思懂了 int装箱到Integer 由于Integer is-a Object所以可以加宽
可是上面的呢 我把int加宽成为long 再装箱到Long 不可以吗 请教达人回答 public class WidenAndBox { //这是书上的例题,执行后是错误的 也就是1.所指出的 可是我不懂为啥
static void go(Long x){
System.out.println(x);
}
public static void main(String[] args) {
byte b=5;
go(b);
}
}
1.不能先加宽,后装箱(int不能变成LONG)
2.可以先装箱,后加宽(int可以通过Integer变成Object)下面的那个我意思懂了 int装箱到Integer 由于Integer is-a Object所以可以加宽
可是上面的呢 我把int加宽成为long 再装箱到Long 不可以吗 请教达人回答 public class WidenAndBox { //这是书上的例题,执行后是错误的 也就是1.所指出的 可是我不懂为啥
static void go(Long x){
System.out.println(x);
}
public static void main(String[] args) {
byte b=5;
go(b);
}
}
如
long t=100
这个是编译不过去的
只能是 long t=100L自动装箱是因为编译器自动调用了valueOf方法,编程了对象
而对象之间根据多态,子类对象可赋给基类的引用
而所有的包装器类都是Object子类,所以可以赋,其实也不是第2句说的什么加宽至于基本类型之间,java是强类型,不能简单的加宽