我对 Java 中的基本类型(int
、double
、long
等)有疑问。
问题一:
在 Java 中有没有一种方法可以拥有一种数据类型,比方说 XType
(无损类型)可以容纳任何原始类型?
假设用法示例:
int x = 10;
double y = 9.5;
XType newTypeX = x;
XType newTypeY = y;
int m = newTypeX;
问题二:
是否可以通过位来判断这个数字(原始类型)是整数、 double 还是 float 等?
最佳答案
您可以在第一个代码段中使用 Number
类,它是所有 numeric primitive wrapper classes 的父类(super class):
int x = 10;
double y = 9.5;
Number newTypeX = x;
Number newTypeY = y;
原始类型(int
、double
)和对象类型(Number
)之间的转换可以通过称为 autoboxing 的功能实现。但是,这一行不会编译:
int m = newTypeX;
因为您不能将父类(super class)型变量分配给 int
。编译器不知道这里 newTypeX
的确切类型(即使它之前被分配了一个 int
值);不管怎样,变量也可以是 double
。
要获取 Number
变量的运行时类型,您可以例如使用 getClass
方法:
System.out.println(newTypeX.getClass());
System.out.println(newTypeY.getClass());
与示例片段一起使用时,这将打印出来
class java.lang.Integer class java.lang.Double
关于java - Java 中的数据类型及其表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31600182/