为什么Java的拥有这些Integer
,Character
类型和类 同时,他们也适应C'S int
,char
等 有时,当人们创建阵列,它们往往 使用Integer[] i = {......}
而非int[] i = {....};
的区别是什么呢?整数与int类型,哪个更好?
回答
在java中,
Integer
是一个包装类,即它是一个object
而int
是一个原语。Integer
默认值是null
而INT是0
- 有自动装箱和自动拆箱这两种类型的概念。
- 整数可以被转换为
int
,反之亦然
Followign程序演示此
public class TestClass {
int num;
Integer number;
public static void main(String[] args) {
TestClass testClass = new TestClass();
System.out.println(testClass.num);
System.out.println(testClass.number);
testClass.autoBoxInt(testClass.num);
}
public void autoBoxInt(Integer number){
System.out.println(number);
}
}
输出是
0
null
0
即0
声明System.out.println(testCkass,num)
打印int
默认值。 System.out.println(testClass.number)
打印Integer
默认值,即null
。当您将testClass.num
传递给参数为Integer
的方法时,int
会自动转换为和Integer
对象。所以该方法打印出0
。
Java集合框架使用自动装箱功能将原语转换为包装类,因为它们无法获取原始值。它们使用散列和散列码帮助快速检索和存储对象。下面的例子演示了这种
Set<Integer> numbers = new HashSet<Integer>();
numbers.add(new Integer(10));
numbers.add(new Integer(4));
numbers.add(6);
numbers.add(-9);
numbers.add(new Integer(65));
System.out.println(numbers);
这样就会打印出一套
[4, 65, 6, -9, 10]
要知道什么是哈希是和哈希码是如何使用的,你可以看看这些链接 http://www.thejavageek.com/2013/06/27/what-are-hashcodes/ http://www.thejavageek.com/2013/06/26/what-is-the-significance-of-equals-method-in-java/
您的示例还应该包括如何使用自动装箱将基元放入通用类(如集合)中,然后快速检索它们。 – hexafraction
@hexafraction感谢您的建议:)我做到了。 –
Integer
是对象,而int
是一个原始的。每当我们将一个int
传递给一个函数,我们就按原样传递它。
Integer
包装int。在它的情况下,它是不可变的,所以通过引用编辑它不会起作用,但它可以可以被放入到泛型中。这可以设置为空,而int
不可能有任何超出0
的值,也可能是您解释为空值的特殊值,例如-1
或Integer.MAX_VALUE
。
例如,ArrayList<int>
是完全无效的,而ArrayList<Integer>
必须与包裹整数一起使用。
随着autoboxing,但是,我们可以马上添加一个int
到一个ArrayList而无需手动包裹它,如果我们需要一个原始的,当我们get()
进入,它会自动解开透明它。
在结束时,如果你正在做具有鲜明的变量数量有限或固定阵列的计算,通常应使用int
。当与集合,列表或地图打交道时,你应该声明集合作为FooCollection<Integer>
然后add(
一个int直接允许自动装箱。
Integer
,Character
和其他像这样的Objects
而int
,char
和其他像这样的原语。
最大的区别是Object
可以是null
而原始值不能。
我们推荐使用在那里你可以,因为他们使用较少的内存的原始值。
我们大致可以说唯一的区别是包装是primitive
客观再现。
Wrapper classes用于当需要Object
来表示原始值。
- 1. Casting(int?)null与new int?() - 哪个更好?
- 2. 哪个更好 - (int)值或值为int?
- 3. 哪个更好?原始数据类型或包装类?
- 4. 哪个git模型更好?
- 5. 哪个撑型更好?
- 6. mosso与gogrid哪个更好?
- 7. 哪个int类型var默认为?
- 8. int i vs int index等哪一个更好?
- 9. 哪个更好? StorageFile类或IsolatedStorage类
- 10. 哪一个更好?在变量类型声明中使用var或使用像int这样的真正类型,...?
- 11. 哪个更好
- 12. 哪个更好?
- 13. 哪个更好?
- 14. 哪种类型的服务器与聊天更好?
- 15. 哪个模型设计更好?
- 16. 功能与类型签名整数/ INT: “Integer类型不匹配内部”
- 17. 无法与推测类型的预期类型Int匹配整数
- 18. 的Java与int和其他整数类型的行为
- 19. sql更新整数类型
- 20. 这些分类器哪个更好?
- 21. 矢量与ArrayList哪个更好?
- 22. 哪个更好:setDefaultHighRepJobPolicyUnappliedJobPercentage(100)与CustomHighRepJobPolicy
- 23. Docker Compose与Dockerfile - 哪个更好?
- 24. C++/CLI与COM - 哪个更好?
- 25. 。 ReadLine()与Read ByteArray读取哪个更好?
- 26. 哪一个更好?
- 27. 哪一个更好?
- 28. 哪个listview更好?
- 29. 哪个JSON更好
- 30. 哪一个更好?
把问题的标题在谷歌。这里会有很多答案。 – Lion