java - Java 中的数字包装类

标签 java

我来自 PHP 世界,我对如何在 java 中声明对象时思考感到困惑。

所以当传统上你这样做时:

 Rectangle rect = new Rectangle();

因为 rect 是一个 Rectangle 数据类型。

根据 java 教程页面,数字包装器类是 Number 的子类。 所以它是一个类,但是当你实例化它时,教程是这样的:

 Integer x;
 x = 12;

为什么它不像传统方式那样:

 Integer x = new Integer(12);
 or
 Integer x = new Integer();

还有一个例子:

 String s = new Integer(i).toString();

所以这里的 s 是一个 String 对象。我明白了。但是你得到了新的 Integer(i)。为什么是新的?它在这里意味着什么以及当它向构造函数发送“i”时会发生什么。我在哪里可以看到构造函数对 Java API 中的参数做了什么?

很多问题,但无法在网上找到解释它的资源。

最佳答案

首先你可以只使用原始类型:

int x = 12;
double d = 3.3456;

其次,您可以选择对这些数字使用对象包装器:

Integer x = new Integer(12);
Double d = new Double(3.3456);

第三,如果你想要字符串表示,你可以简单地使用:

String s = Integer.toString(12);

或者只是:

int x;
String s = "x = " + x;

甚至 printf() 之类的语法:

int x = 12;
String s = String.format("x = %d", x);

最后,Java 从第 5 版开始就支持自动装箱和拆箱,如果您不期望它,您可能会感到困惑。例如:

Integer i = 1234; // autoboxes int to Integer

int i = new Integer(1234); // autounboxes Integer to an int

除非您需要 Number 包装器,否则只需使用原始类型。使用它们的最常见原因是将它们放在集合中(List 等)。

关于java - Java 中的数字包装类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2031768/

相关文章:

java - libphonenumber 库不提取前缀为 +34 (0) 的电话号码

java - 如何指定方法 AnyObject<? super T,字符串>

java - 以编程方式设置 View 的重力

java - jPanel 的背景图像不工作

java - 在不影响可用性的情况下向图像添加任意数据

java - 带有 GWT Sprite 的视网膜图像?

java - log4j 属性错误

java - Android sqlite语法错误: near ")"

java - 与 Liferay 一起去还是不去?有什么好的、坏的和丑陋的?

Java - 字符串到固定字节