问题标签 [autoboxing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3120 浏览

java - 对象或原始类型

有人可以向我解释在 JAVA 中使用 Integer、Boolean 等代替其原始类型吗?

我似乎无法掌握他们提供的优势。它们似乎造成了处理空值的不必要问题。

谢谢!

0 投票
2 回答
713 浏览

java - 多态性、自动装箱和隐式转换

你会认为 Java 中的自动装箱是一种多态形式吗?换句话说,你认为自动装箱扩展了 Java 的多态能力吗?

Scala 中的隐式转换怎么样?

我的观点是它们都是多态性的例子。这两个特性都允许以统一的方式处理不同数据类型的值。

我的同事不同意我的观点。谁是对的?

0 投票
9 回答
10026 浏览

java - 为什么 Java 中的自动装箱允许我有 3 个可能的布尔值?

参考:http: //java.sun.com/j2se/1.5.0/docs/guide/language/autoboxing.html

“如果你的程序试图自动拆箱 null,它会抛出 NullPointerException。”

如果您尝试将 null 分配给布尔值,javac 会给您一个编译时错误。说得通。不过,将 null 分配给布尔值是可以的。也有道理,我猜。

但是让我们考虑一下在尝试自动拆箱 null 时会得到 NPE 的事实。这意味着您不能在没有空值检查或异常处理的情况下安全地对布尔值执行布尔运算。对整数进行数学运算也是如此。

很长一段时间以来,我都是 java1.5+ 中自动装箱的粉丝,因为我认为它让 java 更接近真正的面向对象。但是,在昨晚遇到这个问题之后,我得说我觉得这很糟糕。当我尝试使用未初始化的原语做一些事情时,编译器给我一个错误是一件好事。如果我丢失了,我不想使用自动装箱。

我想我可能误解了自动装箱的意义,但同时我永远不会接受布尔值应该能够有 3 个值。谁能解释一下?我没有得到什么?

0 投票
3 回答
60409 浏览

java - 为什么 int num = Integer.getInteger("123") 会抛出 NullPointerException?

以下代码抛出NullPointerException

我的编译器是否调用getIntegernull 因为它是静态的?这没有任何意义!

发生了什么?

0 投票
12 回答
21531 浏览

java - Java中奇怪的整数拳击

我刚刚看到类似这样的代码:

运行时,此代码块将打印出:

我理解为什么第一个是false:因为这两个对象是单独的对象,所以==比较引用。但我想不通,为什么第二个语句返回true?当整数的值在一定范围内时,是否会出现一些奇怪的自动装箱规则?这里发生了什么?

0 投票
7 回答
778 浏览

java - Integer.valueOf() 的值

是否有任何理由使用 Integer.valueOf(X) 来初始化最终 Integer,如下所示:

我知道在添加自动装箱之前,这在旧版本的 Java 中是必要的。这种类型的代码还有什么原因吗?或者这只是一个坏习惯?

0 投票
2 回答
717 浏览

java - 这是通用的自动装箱吗?

不使用“this.<Double>getAnything(int flag)”之类的常用符号来赋值

在过去,仅方法上的返回对象和接收类型上的简单强制转换就足够了,因此由于接收器对象上缺乏通用符号,因此编写起来更加相似和快速,还有其他提示吗?

0 投票
4 回答
7157 浏览

java - NullPointerException 与三元表达式中的自动装箱

运行以下 Java 代码:

为什么会出现 NullPointerException?

0 投票
3 回答
25172 浏览

java - 使用原始双精度值初始化 Double 对象

当 java.lang.Double 对象在不使用构造函数调用而是使用原语进行初始化时会发生什么?它似乎有效,但我不太确定为什么。编译器是否正在进行某种隐式转换?这是使用 Java 5。

0 投票
7 回答
5227 浏览

java - 关于自动装箱和对象相等/身份的 Java 问题

为什么是b1 == b2假的和c1 == c2真的?