public class Test { public static void main(String[] args) { Number x = new Integer(3); System.out.println(x.intValue()); System.out.println(x.compareTo(new Integer(4))); } }
时间: 2024-04-27 16:22:35 浏览: 57
这段代码的输出结果是:
3
-1
解释:
在第一行,将一个Integer对象赋值给了一个Number类型的变量x,这是因为Integer是Number的子类。然后调用x的intValue()方法,输出3。
在第二行,调用x的compareTo()方法,将另一个Integer对象作为参数传入。这个方法会返回两个对象之间的大小关系,如果x小于传入的参数,则返回负数;如果x等于传入的参数,则返回0;如果x大于传入的参数,则返回正数。在这里,x是3,传入的参数是4,所以返回-1。
相关问题
package STU; import java.lang.Number; public class Test { public static void main(String[] args) { Number x =(Number) new Integer(3); System.out.println(x.intValue()); System.out.println(x.compareTo(new Integer(4))); } }仍然报错
在Java 9及以上版本中,即使进行强制类型转换,也会出现编译错误,错误信息和之前一样。这是因为Java 9中对类型转换的规则进行了更改,不再允许从一个子类类型转换到其父类类型,除非这个子类类型是可重复的。而`Integer`类不是可重复的,因此无法进行类型转换。
解决这个问题的方法是使用`intValue()`方法将`Integer`类型的对象转换为`int`类型的原始值,然后再将其赋值给`Number`类型的变量。修改后的代码如下:
```
package STU;
import java.lang.Number;
public class Test {
public static void main(String[] args) {
int num = 3;
Number x = num;
System.out.println(x.intValue());
System.out.println(x.compareTo(4));
}
}
```
这个代码不仅可以在Java 9及以上版本中编译和运行,而且也可以在之前的版本中编译和运行。
package STU; import java.lang.Number; public class Test { public static void main(String[] args) { int num = 3; Number x = num; System.out.println(x.intValue()); System.out.println(x.compareTo(4)); } }compareTo语句报错
在Java 9及以上版本中,`Number`类中的`compareTo()`方法被修改为泛型方法,它的参数类型应该是`Number`或其子类,而不再是`Object`类型。因此,在比较时,应该使用`Integer`对象而不是`int`类型的原始值。
修改后的代码如下:
```
package STU;
import java.lang.Number;
public class Test {
public static void main(String[] args) {
Integer num = 3;
Number x = num;
System.out.println(x.intValue());
System.out.println(x.compareTo(new Integer(4)));
}
}
```
这个代码不仅可以在Java 9及以上版本中编译和运行,而且也可以在之前的版本中编译和运行。
阅读全文