在Java和C#中,int和Integer有什么区别?

在Java和C#中,int和Integer有什么区别?

我在读更多关于软件的Joel当我遇到乔尔·斯波斯基表示某种特定类型的程序员,了解int和一个Integer在Java/C#(面向对象编程语言)中。

那么,有什么区别呢?


喵喵时光机
浏览 1041回答 3
3回答

至尊宝的传说

在爪哇,‘int’类型是一个原语,而‘Integer’类型是一个对象。在C#中,“int”类型与System.Int32而且是值类型(更像是java‘int’)。整数(与任何其他值类型一样)可以是盒装(“包装”)成一个对象。对象和原语之间的区别在某种程度上超出了这个问题的范围,但总括而言:对象提供多态工具,通过引用传递(或者更准确地说,具有按值传递的引用),并从堆..相反,原语是通过值传递的不可变类型,通常是从堆叠.

墨色风雨

我将添加上面给出的优秀答案,并讨论装箱和取消装箱,以及这如何应用于Java(尽管C#也有)。我只使用Java术语,因为我金法用那个。如前所述,int只是一个数字(称为开箱),而Integer是一个对象(它包含数字,因此盒装)。在Java术语中,这意味着(除了不能调用int),您不能存储int或集合中的其他非对象类型(List,&nbsp;Map等等)。为了存储它们,您必须先将它们装在相应的装箱类型中。Java 5之前有一个叫做自动拳击和自动拆箱允许在幕后进行装箱/取消装箱。比较和对比:Java 5版本:Deque<Integer>&nbsp;queue;void&nbsp;add(int&nbsp;n)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;queue.add(n);}int&nbsp;remove()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;queue.remove();}Java1.4或更早版本(也没有泛型):Deque&nbsp;queue;void&nbsp;add(int&nbsp;n)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;queue.add(Integer.valueOf(n));}int&nbsp;remove()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;((Integer)&nbsp;queue.remove()).intValue();}必须指出,尽管Java 5版本很简洁,但这两个版本都生成相同的字节码。因此,虽然自动装箱和自动取消装箱非常方便,因为您编写的代码较少,但这些操作做在幕后发生,具有相同的运行时成本,因此您仍然必须意识到它们的存在。希望这能帮上忙!
打开App,查看更多内容
随时随地看视频慕课网APP