我来自 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/