问题标签 [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.
java - arraylist 与数组中原始类型的包装器
在“Core java 1”中我读过
注意: ArrayList 的效率远低于 int[] 数组,因为每个值都单独包装在一个对象中。当程序员的便利性比效率更重要时,您只会希望将此构造用于小型集合。
但是在我的软件中,由于某些要求,我已经使用了 Arraylist 而不是普通数组,尽管“该软件应该具有高性能,在我阅读了引用的文字后,我开始感到恐慌!” 我可以更改的一件事是将 double 变量更改为 Double 以防止自动装箱,我不知道这是否值得,在下一个示例算法中
我的问题是将 double 更改为 Double 有什么不同吗?或者那是一个不会影响任何东西的微优化?请记住,我可能正在使用大型矩阵。第二我是否应该考虑重新设计整个程序?
java - 为什么我不能使用 Comparator 对基元进行排序?
由于 Java 5 具有自动装箱功能,为什么我不能使用 Comparator 对原语进行排序?Anint
不会被包裹成Integer
?
java - 原始数组类型上的 Java Arrays.asList 会产生意外的 List 类型
可能重复:
Arrays.asList() 不能正常工作?
显然返回类型Arrays.asList(new int[] { 1, 2, 3 });
是List<int[]>
。这对我来说似乎完全崩溃了。这与 Java 不是自动装箱原始类型数组有关吗?
java - Java 转换 Arraylist浮动[]
我怎么能这样做?
我有一个带有浮点元素的数组列表。(Arraylist <Float>)
它不工作。
无法从 Object[] 转换为 float[]
java - Java 布尔包装类是如何被实例化的?
在java中,我可以写这样的代码
它会起作用。我现在有一个拥有“真”值的对象。
这是如何运作的?为什么我不必通过构造函数传递值?像这样:
另外,我可以制作可以以类似方式实例化的自定义类吗?如果有,那叫什么?
这样我就可以做这样的事情:
因此有我自己的包装类。
谢谢
java - 拆箱问题
我有一个扩展 LinkedList 类的类。这是代码的摘录:
预计这将返回自动拆箱的 int 值。但是由于某种原因,编译器会抛出一个错误,指出类型不兼容,并且所需的类型是 int,而找到的类型是 Integer。这在不同的课程中非常有效!是什么赋予了?:(
java - 在 Java 应用程序中将原语更改为盒装原语的后果
我正在开发一个应用程序,其中给定项目的所有性能值都是基元。但是,现在有可能在将新数据添加到系统时这些值之一 - 收入 - 不可用。在这些情况下,我们可以简单地将收入的值存储/显示为 0.00
但是,我们现在还希望能够在以后添加这些缺失的数据(但如果存在,则不要覆盖数据)。在将 0.00 添加到数据库时,没有添加标志来指示收入是否实际可用,对我来说,将收入从原始类型 double 更改为盒装原始 Double 并允许 NULLS 用于数据库中的收入列似乎很明显。
然而,在应用程序中有多个地方调用 getRevenue(),并对值执行数学运算。显然,现在 getRevenue() 有可能返回 null 可能会导致重大问题。正如我所提到的,在不存在任何价值的情况下,我们非常乐意将收入显示为 0.00。
因此,一个明显的解决方案似乎是更新 getRevenue() 方法以返回值,或者在值为 null 的情况下返回 0.00。并添加一个新方法 getRevenueDB(),它返回 Revenue 的真实值,包括 null。只有在访问要添加到数据库的值时才会调用此方法。
这似乎是一种解决方案?它应该工作,而且很快。但这似乎是一个非常肮脏的解决方案,有更好的选择吗?
非常感谢所有评论!
java - 类型 x 的表达式被装箱到 X?
我对我的 Eclipse IDE 当前正在写在类型被自动装箱或自动拆箱的每个表达式旁边的警告感到有点困惑:
这是我应该做出反应的警告吗?我认为自动装箱是 Java 语言的一个特性——但现在我似乎每次使用这个特性时都会收到警告。
perl - Perl 自动装箱和运算符重载似乎不起作用?
我正在尝试同时使用 Perl 的自动装箱功能和运算符重载功能,但它们似乎并没有协同工作。
是否有可能我错过了如何正确使用重载的一些细微差别,或者这是某种奇怪的异常行为?
示例代码:
测试输出:
java - 为什么人们仍然在 Java 中使用原始类型?
从 Java 5 开始,我们已经对原始类型进行了装箱/拆箱,以便将int
其包装为 be java.lang.Integer
,等等。
我最近看到很多新的 Java 项目(如果不是 6,肯定需要至少版本 5 的 JRE)使用int
而不是java.lang.Integer
,尽管使用后者更方便,因为它有一些用于转换的辅助方法long
价值观等。
为什么有些人仍然在 Java 中使用原始类型?有什么实实在在的好处吗?