Java中的数据类型及其表示

我对Java中的原始类型有疑问(int,double,long等).

问题一:

Java中是否有一种方法可以拥有一个数据类型,比如可以容纳任何原始类型的XType(无损类型)?
假设用法的示例:

int x = 10;
double y = 9.5;
XType newTypeX = x;
XType newTypeY = y;

int m = newTypeX;

问题二:

是否可以从这些位中分辨出此数字(原始类型)是整数,双精度数还是浮点数等?

解决方法:

您可以在第一个代码段中使用Number类,它是所有numeric primitive wrapper classes的超类:

int x = 10;
double y = 9.5;
Number newTypeX = x;
Number newTypeY = y;

基本类型(整数,双精度)和对象类型(数字)之间的转换可以通过称为autoboxing的功能进行.但是,此行无法编译:

int m = newTypeX;

因为您不能将超类型变量分配给int.编译器在这里不知道newTypeX的确切类型(即使之前已为它分配了int值)也是如此.尽一切可能,该变量也可以是双精度型.

为了获取Number变量的运行时类型,您可以例如使用getClass方法:

System.out.println(newTypeX.getClass());
System.out.println(newTypeY.getClass());

与示例代码段一起使用时,将打印出

class java.lang.Integer
class java.lang.Double
上一篇:C#-基本类型性能


下一篇:java-泛型类型和toArrayMethod