2010-08-26 80 views
39

我知道什麼是包裝類,它們將原始類型(例如int,double等)包裝到它們各自類的對象中。爲什麼Java中有包裝類?

但是,爲什麼我們首先需要包裝類?爲什麼不簡單地使用我們擁有它們的原始類型呢?當包裝被用於將在數據庫中

+1

還看到:http://stackoverflow.com/questions/2134798/java-why-are-wrapper-classes-needed – AHungerArtist 2010-08-26 20:15:27

回答

57

幾個可能的原因:

  • 這樣一個空值是可能
  • 要在集合
  • 爲了治療大體/多態的對象與其他對象一起
+1

仍然保留代碼中的簡單語法並允許將有用的靜態幫助器方法放在直觀的位置。 – ellimilial 2013-01-30 16:56:40

+0

Double.compare是一個很好的例子 – 2017-03-07 06:57:15

18

上午例如,你可以有一個ArrayList<Integer>,但不是一個ArrayList<int>同樣與HashMap小號等。爲了讓我們使用泛型和泛型需要的對象不是基元類型安全。

+2

泛型長介紹了包裝後類(JDK1.1)。 – user2418306 2016-05-01 15:45:36

0

我頭頂的一個實用理由是對象可以是空的,基元不能*。如果我不能確保一個函數可以返回一個int,那麼使用包裝器是處理獲得我期望的int的唯一方法。自動裝箱照顧其餘部分。

7

當需要一個對象時,將使用包裝類代替原始類型。

在類別,例如,一個ArrayList可以包含對象的任何亞類的實例,但是因爲原始類型不是對象,他們不能被包含在該ArrayList。

11

Java是一種面向對象的編程語言。我想你也可以問 - 爲什麼我們有原始的,爲什麼一切都不只是一個對象?

Java設計師爲了簡單起見保持了兩個獨立。當你需要適合面向對象的世界的類型時,你可以使用包裝器 - 比如多態性,集合等等。當你需要效率時,你可以使用原語。

+0

加1 for>我想你也可以問 - 爲什麼我們有原語,爲什麼一切都不只是一個對象? – Kaunteya 2018-02-21 18:34:53

1

Java是一種面向對象的語言,正如所說的在java中的所有東西都是 的一個對象。但是基元呢?它們被排除在 這個世界的對象之外,也就是說,它們不能參與對象 的活動,比如從一個方法作爲對象返回,並且 被添加到對象集合等等。作爲這個問題的一個解決方案,Java允許你通過使用所謂的包裝類來將原語包含在 對象族中。

+1

你引用你自己嗎? – user2418306 2016-05-01 15:50:16

2

包裝類:

  1. Java使用原始類型,如int,焦炭,雙舉行由語言支持的 基本數據類型。

  2. 有時需要創建這些 基本類型的對象表示。

  3. 這些是僅處理這些對象的集合類。一個 需要在類中包裝基元類型。

  4. 爲了滿足這個需求,java提供了對應於每個基本類型的類。基本上,這些類封裝或包裝類中的原始類型。

  5. 因此,它們通常被稱爲類型包裝。類型包裝器 是在對象內封裝基元類型的類。

  6. 包裝類型是Byte,Short,Integer,Long,Character, Boolean,Double,Float。

4

包裝類用於將任何原始類型轉換爲對象。原始數據類型不是對象,它們不屬於任何類,它們在語言本身中定義。當存儲在僅支持對象的數據結構中時,需要將基元類型首先轉換爲對象,因此我們轉而使用包裝類。

1

還有,你可以使用一個號碼對象,而不是原始的原因有三:

  1. 作爲一個期望的對象的方法(當 操作數的集合,經常使用)的參數。
  2. 使用該類定義的常量,例如MIN_VALUE和 MAX_VALUE,它們提供數據類型的上限和下限。
  3. 要使用類方法將值轉換爲並從其他 原始類型,用於將與字符串,以及用於 編號系統(十進制,八進制,十六進制,二進制 )之間的轉換。

資料來源:

The Numbers Classes

+0

我沒有收到第2項。你不應該使用類似'i.MAX_VALUE'的東西。另外,'MIN_VALUE' /'MAX_VALUE'常量是*原始類型*。 – aioobe 2018-03-08 07:40:44

相關問題