亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Java和C#中,int和Integer有什么區別?

在Java和C#中,int和Integer有什么區別?

喵喵時光機 2019-07-11 15:39:42
在Java和C#中,int和Integer有什么區別?我在讀更多關于軟件的Joel當我遇到喬爾·斯波斯基表示某種特定類型的程序員,了解int和一個Integer在Java/C#(面向對象編程語言)中。那么,有什么區別呢?
查看完整描述

3 回答

?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

在爪哇,‘int’類型是一個原語,而‘Integer’類型是一個對象。

在C#中,“int”類型與System.Int32而且是值類型(更像是java‘int’)。整數(與任何其他值類型一樣)可以是盒裝(“包裝”)成一個對象。


對象和原語之間的區別在某種程度上超出了這個問題的范圍,但總括而言:

對象提供多態工具,通過引用傳遞(或者更準確地說,具有按值傳遞的引用),并從..相反,原語是通過值傳遞的不可變類型,通常是從堆疊.


查看完整回答
反對 回復 2019-07-11
?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

我將添加上面給出的優秀答案,并討論裝箱和取消裝箱,以及這如何應用于Java(盡管C#也有)。我只使用Java術語,因為我金法用那個。

如前所述,int只是一個數字(稱為開箱),而Integer是一個對象(它包含數字,因此盒裝)。在Java術語中,這意味著(除了不能調用int),您不能存儲int或集合中的其他非對象類型(ListMap等等)。為了存儲它們,您必須先將它們裝在相應的裝箱類型中。

Java 5之前有一個叫做自動拳擊自動拆箱允許在幕后進行裝箱/取消裝箱。比較和對比:Java 5版本:

Deque<Integer> queue;void add(int n) {
    queue.add(n);}int remove() {
    return queue.remove();}

Java1.4或更早版本(也沒有泛型):

Deque queue;void add(int n) {
    queue.add(Integer.valueOf(n));}int remove() {
    return ((Integer) queue.remove()).intValue();}

必須指出,盡管Java 5版本很簡潔,但這兩個版本都生成相同的字節碼。因此,雖然自動裝箱和自動取消裝箱非常方便,因為您編寫的代碼較少,但這些操作在幕后發生,具有相同的運行時成本,因此您仍然必須意識到它們的存在。

希望這能幫上忙!


查看完整回答
反對 回復 2019-07-11
  • 3 回答
  • 0 關注
  • 1107 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號