java - Java 中的数据类型及其表示

标签 java types primitive-types

我对 Java 中的基本类型(intdoublelong 等)有疑问。

问题一:

在 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;

原始类型(intdouble)和对象类型(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/

相关文章:

c++ - C++ 中是否有等效的 var 类型?

python - Cython:为什么 size_t 比 int 快?

java - 空 Java 字符串的大小

Java Selenium WebDriver - 如何在不使用 Remote WebDriver 的情况下设置 ScrollBehavior (elementScrollBehavior)?

java - JPA EntityManager 在 @Transactional 方法之后阻塞

java - 如果抛出任何异常,请关闭命令提示符窗口

c# - 为什么字符串是引用类型?

java - 尝试在 Eclipse 中添加谷歌视觉教程库时出现 Maven 错误

具有通用参数类型的 Swift 函数

java - java/scala 中的原始对象大小和 'as<SomePrimitive>Buffer() 方法调用