數字
本節首先討論java.lang包中的Number類,它的子類,以及使用這些類的實例化而不是原始數字類型的情況。
本節還介紹了PrintStream和DecimalFormat類,它們提供了編寫格式化數字輸出的方法。
最后,討論了java.lang中的Math類,它包含數學函數,以補充語言中內置的運算符,該類具有三角函數,指數函數等方法。
數字類使用數字時,大多數時候在代碼中使用基元類型,例如:
int i = 500; float gpa = 3.65f; byte mask = 0xff;
但是,有理由使用對象代替基元,Java平臺為每個基元數據類型提供包裝類,這些類將基元“包裝”在對象中。通常,包裝由編譯器完成 — 如果在需要對象的地方使用基元,編譯器會在包裝器類中為你封裝基元,類似地,如果在期望基元時使用數字對象,則編譯器會為你拆箱對象,有關更多信息,請參閱自動裝箱和拆箱。
所有數字包裝類都是抽象類Number的子類:
注意:這里沒有討論其他四個Number的子類,BigDecimal和BigInteger用于高精度計算,AtomicInteger和AtomicLong用于多線程應用程序。
有三個原因可以使用Number對象而不是基元:
作為期望對象的方法的參數(通常在操作數字集合時使用)。
使用由類定義的常量(如MIN_VALUE和MAX_VALUE),它們提供數據類型的上限和下限。
使用類方法將值轉換為其他基本類型或從其他基本類型轉換值,轉換為字符串和從字符串轉換,以及在數字系統之間進行轉換(十進制、八進制、十六進制、二進制)。
下表列出了Number類的所有子類實現的實例方法。
方法 | 描述 |
---|---|
byte byteValue() short shortValue() int intValue() long longValue() float floatValue() double doubleValue() |
將此Number對象的值轉換為返回的基本數據類型。 |
int compareTo(Byte anotherByte) int compareTo(Double anotherDouble) int compareTo(Float anotherFloat) int compareTo(Integer anotherInteger) int compareTo(Long anotherLong) int compareTo(Short anotherShort) |
將此Number對象與參數進行比較。 |
boolean equals(Object obj) | 確定此數字對象是否等于參數。 如果參數不為null并且是相同類型且具有相同數值的對象,則方法返回true。 Java API文檔中描述了Double和Float對象的一些額外要求。 |
每個Number類都包含其他方法,這些方法可用于數字與字符串之間的轉換和用于數字系統之間的轉換,下表列出了Integer類中的這些方法,其他Number子類的方法類似:
方法 | 描述 |
---|---|
static Integer decode(String s) | 將字符串解碼為整數,可以接受十進制、八進制或十六進制數字的字符串表示作為輸入。 |
static int parseInt(String s) | 返回一個整數(僅十進制) |
static int parseInt(String s, int radix) | 返回一個整數,給定十進制、二進制、八進制或十六進制(radix分別等于10、2、8或16)數字的字符串表示作為輸入。 |
String toString() | 返回表示此Integer值的String對象。 |
static String toString(int i) | 返回表示指定整數的String對象。 |
static Integer valueOf(int i) | 返回包含指定基元值的Integer對象。 |
static Integer valueOf(String s) | 返回一個包含指定字符串表示形式值的Integer對象。 |
static Integer valueOf(String s, int radix) | 返回一個Integer對象,該對象包含指定字符串表示形式的整數值,并使用radix值進行解析。 例如,如果s = "333"且radix = 8,則該方法返回等于八進制數333的十進制整數。 |
你可以使用其中一個包裝類 — Byte、Double、Float、Integer、Long或Short — 來在對象中包裝許多基本類型,Java編譯器會在必要時自動為你包裝(裝箱)基元,并在必要時再將它們拆箱。
Number類包括常量和有用的類方法,MIN_VALUE和MAX_VALUE常量包含該類型對象可包含的最小值和最大值,byteValue、shortValue和類似方法將一種數字類型轉換為另一種數字類型,valueOf方法將字符串轉換為數字,toString方法將數字轉換為字符串。
要格式化包含輸出數字的字符串,可以使用PrintStream類中的printf()或format()方法,或者,你可以使用NumberFormat類使用模式自定義數字格式。
Math類包含用于執行數學函數的各種類方法,包括指數、對數和三角函數方法,Math還包括基本算術函數,例如絕對值和舍入,以及用于生成隨機數的方法random()。
上一篇:抽象方法和類 下一篇:格式化數字打印輸出文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72898.html
Java? 教程 Java教程是為JDK 8編寫的,本頁面中描述的示例和實踐沒有利用在后續版本中引入的改進。 Java教程是希望使用Java編程語言創建應用程序的程序員的實用指南,其中包括數百個完整的工作示例和數十個課程,相關課程組被組織成教程。 覆蓋基礎知識的路徑 這些教程以書籍的形式提供,如Java教程,第六版,前往Amazon.com購買。 入門 介紹Java技術和安裝Java開發軟件并使用...
在數字和字符串之間轉換 將字符串轉換為數字 通常,程序以字符串對象中的數字數據結束 — 例如,用戶輸入的值。 包裝原始數字類型(Byte、Integer、Double、Float、Long和Short)的Number子類每個都提供一個名為valueOf的類方法,該方法將字符串轉換為該類型的對象。下面是一個示例ValueOfDemo,它從命令行獲取兩個字符串,將它們轉換為數字,并對值執行算術運算: ...
格式化數字打印輸出 之前你已經看到使用print和println方法將字符串打印到標準輸出(System.out),由于所有數字都可以轉換為字符串(你將在本課后面看到),你可以使用這些方法打印出任意的字符串和數字混合,但是,Java編程語言還有其他方法,可以在包含數字時對打印輸出進行更多控制。 printf和format方法 java.io包中包含一個PrintStream類,它有兩種格式化方法可...
變量 正如你在上一課中所了解到的,對象將其狀態存儲在字段中。 int cadence = 0; int speed = 0; int gear = 1; 什么是對象?討論向你介紹了字段,但你可能還有一些問題,例如:命名字段的規則和約定是什么?除了int之外,還有哪些其他數據類型?在聲明字段時是否必須初始化字段?如果未明確初始化字段,是否為字段分配了默認值?我們將在本課中探討這些問題的答案,但在我們...
字符串 在Java編程中廣泛使用的字符串是一系列字符,在Java編程語言中,字符串是對象。 Java平臺提供String類來創建和操作字符串。 創建字符串 創建字符串的最直接方法是編寫: String greeting = Hello world!; 在這種情況下,Hello world!是一個字符串文字 — 代碼中的一系列字符,用雙引號括起來,每當它在代碼中遇到字符串文字時,編譯器就會創建一個帶...
閱讀 1354·2021-09-10 10:51
閱讀 2829·2019-08-30 15:54
閱讀 3367·2019-08-29 17:11
閱讀 926·2019-08-29 16:44
閱讀 1391·2019-08-29 13:47
閱讀 1086·2019-08-29 13:47
閱讀 1485·2019-08-29 12:23
閱讀 1038·2019-08-28 18:18