java对象或基本类型 12 月 Questions & Answers 3107 有人能给我解释一下整数、布尔值等在JAVA中代替它们的基本类型的用法吗 我似乎无法理解他们提供的优势。它们似乎在处理空值时产生了不必要的问题 谢谢
# 1 楼答案 Boolean,Integer,Long。。。都是物体。您可以在不能使用基元类型的地方使用它们,例如 将它们存储在一个集合中,如Map 使用它们作为模板参数 给它们赋值null 以更一般的方式使用它们(例如Long作为Number) 示例: new ArrayList<Integer>(); Long id = null; Number num = new Long( 3 );
# 2 楼答案 基本体总是更快 然而,有时对象确实很有用: 1.向上投射。您的函数可以将Number(是所有数值对象的父对象:Integer、Float等)作为参数 2.可能的空值。例如,它是在数据库中存储时使用的。对象可以为null,基元必须具有值。所以,若db中的字段可以为null,那个么最好使用原语值的对象版本 3.若函数接受对象,并且您总是给它一个原语,那个么自动装箱(将原语转换为对象)会产生费用。从函数返回时也是如此 4.对象具有某些方法,例如getHashcode()、toString()等,这些方法在某些情况下非常有用
# 3 楼答案 有时候你真的需要一个值可以为空,例如,如果你的应用程序存储了用户数据,那么社会保险可能是未知的。在这种情况下,存储null而不是-1更干净 还有一些事情您不能处理基元类型,比如将它们存储在映射中或使用多态性(Double和Integer都是Number的实例)
# 4 楼答案 整数、布尔等的基本原理是允许在需要引用类型的上下文中使用基元类型。典型的用例是集合API,它提供集合、列表、映射、队列等,其中元素类型必须是某种引用类型 因此我可以写: List<Integer> list = new ArrayList<Integer>(); 但以下是一个编译错误: List<int> list = new ArrayList<int>(); 注意,原始包装器类型的这个用例早于泛型类型和“新”集合API,并且可以追溯到只有Vector和Hashtable的原始(预泛型)形式及其同类的集合类型的时代
# 1 楼答案
Boolean
,Integer
,Long
。。。都是物体。您可以在不能使用基元类型的地方使用它们,例如Map
null
Long
作为Number
)示例:
# 2 楼答案
基本体总是更快
然而,有时对象确实很有用:
1.向上投射。您的函数可以将Number(是所有数值对象的父对象:Integer、Float等)作为参数
2.可能的空值。例如,它是在数据库中存储时使用的。对象可以为null,基元必须具有值。所以,若db中的字段可以为null,那个么最好使用原语值的对象版本
3.若函数接受对象,并且您总是给它一个原语,那个么自动装箱(将原语转换为对象)会产生费用。从函数返回时也是如此
4.对象具有某些方法,例如getHashcode()、toString()等,这些方法在某些情况下非常有用
# 3 楼答案
有时候你真的需要一个值可以为空,例如,如果你的应用程序存储了用户数据,那么社会保险可能是未知的。在这种情况下,存储null而不是-1更干净
还有一些事情您不能处理基元类型,比如将它们存储在映射中或使用多态性(Double和Integer都是Number的实例)
# 4 楼答案
整数、布尔等的基本原理是允许在需要引用类型的上下文中使用基元类型。典型的用例是集合API,它提供集合、列表、映射、队列等,其中元素类型必须是某种引用类型
因此我可以写:
但以下是一个编译错误:
注意,原始包装器类型的这个用例早于泛型类型和“新”集合API,并且可以追溯到只有
Vector
和Hashtable
的原始(预泛型)形式及其同类的集合类型的时代