當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java Java.lang.Number用法及代碼示例


大多數時候,在java中處理數字時,我們使用原始數據類型。但是,Java還提供了各種數字包裝紙抽象類下的子類 Number 存在於java.lang包。主要有Number 類下的子類。這些子類定義了一些在處理數字時經常使用的有用方法。

objects-numberHierarchy

這些類“wrap”是相應對象中的原始數據類型。通常,包裝是由編譯器完成的。如果您在需要對象的地方使用原語,編譯器會為您將原語裝箱在其包裝類中。同樣,如果您在需要基元時使用 Number 對象,編譯器會為您取消裝箱該對象。這也稱為自動裝箱和拆箱。
為什麽要使用 Number 類對象而不是原始數據?

  • 由數字類定義的常量(例如 MIN_VALUE 和 MAX_VALUE)非常有用,它們提供了數據類型的上限和下限。
  • Number 類對象可以用作需要對象的方法的參數(通常在操作數字集合時使用)。
  • 類方法可用於將值與其他基元類型相互轉換、與字符串相互轉換以及在數字係統(十進製、八進製、十六進製、二進製)之間進行轉換。

Number 的所有子類共有的方法:

  1. xxxxxxValue():這裏xxx代表原始數字數據類型(byte、short、int、long、float、double)。該方法用於將值轉換為這個Number 對象以原始數據類型指定。
Syntax : 
byte byteValue()
short shortValue()
int intValue()
long longValue()
float floatValue()
double doubleValue()
Parameters : 
----
返回:
the numeric value represented by this object
after conversion to specified type

Java


//Java program to demonstrate xxxValue() method
public class Test
{
    public static void main(String[] args) 
    {
        // Creating a Double Class object with value "6.9685"
        Double d = new Double("6.9685");
     
        // Converting this Double(Number) object to 
        // different primitive data types
        byte b = d.byteValue(); 
        short s = d.shortValue(); 
        int i = d.intValue(); 
        long l = d.longValue(); 
        float f = d.floatValue(); 
        double d1 = d.doubleValue(); 
             
        System.out.println("value of d after converting it to byte : " + b);
        System.out.println("value of d after converting it to short : " + s);
        System.out.println("value of d after converting it to int : " + i);
        System.out.println("value of d after converting it to long : " + l);
        System.out.println("value of d after converting it to float : " + f);
        System.out.println("value of d after converting it to double : " + d1);
    }
}

輸出:

value of d after converting it to byte : 6
value of d after converting it to short : 6
value of d after converting it to int : 6
value of d after converting it to long : 6
value of d after converting it to float : 6.9685
value of d after converting it to double : 6.9685

注意:轉換時,可能會發生精度損失。例如,我們可以看到,從 Double 對象轉換為 int 數據類型時,小數部分(“.9685”)已被省略。

  • intcompareTo(NumberSubClass 參考名稱):這個方法是用來比較的這個指定參數的數字對象。但是,無法比較兩種不同的類型,因此調用該方法的參數和 Number 對象應該是同一類型。referenceName 可以是 Byte、Double、Integer、Float、Long 或 Short。
Syntax : 
public int compareTo( NumberSubClass referenceName )
Parameters : 
referenceName - any NumberSubClass type value
返回:
the value 0 if the Number is equal to the argument.
the value 1 if the Number is less than the argument.
the value -1 if the Number is greater than the argument.

Java


//Java program to demonstrate compareTo() method
public class Test
{
    public static void main(String[] args) 
    {
        // creating an Integer Class object with value "10"
        Integer i = new Integer("10");
     
        // comparing value of i
        System.out.println(i.compareTo(7)); 
        System.out.println(i.compareTo(11)); 
        System.out.println(i.compareTo(10)); 
    }
}

輸出:

1
-1
0
  • 布爾等於(對象 obj):該方法判斷是否這個Number 對象等於參數。
Syntax : 
public boolean equals(Object obj)
Parameters : 
obj - any object
返回:
The method returns true if the argument is not null and 
is an object of the same type and with the same numeric value,
otherwise false.

Java


//Java program to demonstrate equals() method
public class Test
{
    public static void main(String[] args)
    {
        // creating a Short Class object with value "15"
        Short s = new Short("15");
     
        // creating a Short Class object with value "10"
        Short x = 10;
     
        // creating an Integer Class object with value "15"
        Integer y = 15;
     
        // creating another Short Class object with value "15"
        Short z = 15;
     
        //comparing s with other objects
        System.out.println(s.equals(x));
        System.out.println(s.equals(y));
        System.out.println(s.equals(z));
    }
}

輸出:

false
false
true
  • int parseInt(字符串 s,int 基數):該方法用於獲取a的原始數據類型String。 Radix 用於返回十進製 (10)、八進製 (8) 或十六進製 (16) 等表示形式作為輸出。
Syntax : 
static int parseInt(String s, int radix)
Parameters : 
s - any String representation of decimal
radix - any radix value
返回:
the integer value represented by the argument in decimal.
Throws :
NumberFormatException : if the string does not contain a parsable integer.

Java


//Java program to demonstrate Integer.parseInt() method
public class Test
{
    public static void main(String[] args)
    {
        // parsing different strings
        int z = Integer.parseInt("654",8); 
        int a = Integer.parseInt("-FF", 16);
        long l = Long.parseLong("2158611234",10); 
             
        System.out.println(z);
        System.out.println(a);
        System.out.println(l);
             
        // run-time NumberFormatException will occur here
        // "Geeks" is not a parsable string
        int x = Integer.parseInt("Geeks",8); 
             
        // run-time NumberFormatException will occur here
        // (for octal(8),allowed digits are [0-7])
        int y = Integer.parseInt("99",8); 
             
    }
}

輸出:

428
-255
2158611234
Exception in thread "main" java.lang.NumberFormatException: For input string: "Geeks"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at Test.main(Test.java:17)
  • int parseInt(字符串):此方法是上述方法的另一種變體,默認基數為 10(十進製)。
Syntax : 
static int parseInt(String s)
Parameters : 
s - any String representation of decimal
返回:
the integer value represented by the argument in decimal.
Throws :
NumberFormatException : if the string does not contain a parsable integer.

Java


//Java program to demonstrate Integer.parseInt() method
public class Test
{
    public static void main(String[] args) 
    {
        // parsing different strings
        int z = Integer.parseInt("654"); 
        long l = Long.parseLong("2158611234"); 
             
        System.out.println(z);
        System.out.println(l);
             
        // run-time NumberFormatException will occur here
        // "Geeks" is not a parsable string
        int x = Integer.parseInt("Geeks"); 
             
        // run-time NumberFormatException will occur here
        // (for decimal(10),allowed digits are [0-9])
        int a = Integer.parseInt("-FF");
             
    }
}

輸出:

654
2158611234
Exception in thread "main" java.lang.NumberFormatException: For input string: "Geeks"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.parseInt(Integer.java:615)
    at Test.main(Test.java:15)
  • 字符串toString():toString() 方法有兩種變體。它們用於獲取數字的字符串表示形式。這些方法的其他變體是整數.toBinaryString(int i),Integer.toHexString(int i),整數.toOctalString(int i)它將分別返回指定整數(i)的二進製、hexa-decimal、八進製字符串表示形式。
Syntax : 
String toString()
String toString(int i)
Parameters : 
String toString() - no parameter
String toString(int i) - i: any integer value
返回:
String toString() -
returns a String object representing the value of the Number object 
on which it is invoked.
String toString(int i) -
returns a decimal String object representing the specified integer(i)

Java


//Java program to demonstrate Integer.toString() 
//and Integer.toString(int i) method
public class Test
{
    public static void main(String[] args)
    {
        // demonstrating toString() method
        Integer x = 12;
         
        System.out.println(x.toString()); 
         
        // demonstrating toString(int i) method
        System.out.println(Integer.toString(12));
         
        System.out.println(Integer.toBinaryString(152));
        System.out.println(Integer.toHexString(152)); 
        System.out.println(Integer.toOctalString(152));
    }
}

輸出:

12
12
10011000
98
230
  • 整數valueOf():valueOf()方法有三種變體。所有這三個方法都返回一個包含原始整數值的 Integer 對象。
Syntax : 
Integer valueOf(int i)
Integer valueOf(String s)
Integer valueOf(String s, int radix)
Parameters : 
i - any integer value
s - any String representation of decimal
radix - any radix value
返回:
valueOf(int i) : an Integer object holding the valuerepresented by the int argument.
valueOf(String s) : an Integer object holding value represented by the string argument.
valueOf(String s, int radix) : an Integer object holding the value
 represented by the string argument with base radix.
Throws :
valueOf(String s) -
NumberFormatException : if the string does not contain a parsable integer.
valueOf(String s, int radix) -
NumberFormatException : if the string does not contain a parsable integer.

Java


// Java program to demonstrate valueOf() method
public class Test
{
    public static void main(String[] args)
    {
        // demonstrating valueOf(int i) method
        System.out.println("Demonstrating valueOf(int i) method");
        Integer i =Integer.valueOf(50); 
        Double d = Double.valueOf(9.36); 
        System.out.println(i);
        System.out.println(d);
             
        // demonstrating valueOf(String s) method
        System.out.println("Demonstrating valueOf(String s) method");
        Integer n = Integer.valueOf("333"); 
        Integer m = Integer.valueOf("-255"); 
        System.out.println(n);
        System.out.println(m);
             
        // demonstrating valueOf(String s,int radix) method
        System.out.println("Demonstrating (String s,int radix) method");
        Integer y = Integer.valueOf("333",8); 
        Integer x = Integer.valueOf("-255",16); 
        Long l = Long.valueOf("51688245",16); 
        System.out.println(y);
        System.out.println(x);
        System.out.println(l);
             
        // run-time NumberFormatException will occur in below cases
        Integer a = Integer.valueOf("Geeks");
        Integer b = Integer.valueOf("Geeks",16); 
    }
}

輸出:

Demonstrating valueOf(int i) method
50
9.36
Demonstrating valueOf(String s) method
333
-255
Demonstrating (String s,int radix) method
219
-597
1365803589

Exception in thread "main" java.lang.NumberFormatException: For input string: "Geeks"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.valueOf(Integer.java:766)
    at Test.main(Test.java:28)

練習題:
給定的java代碼的輸出是什麽?

Java


public class Test
{
   public static void main(String[] args)
   {
       Integer i = Integer.parseInt("Kona", 27);
       System.out.println(i);
   }
}

選項:

A) NumberFormatException at run-time
B) NumberFormatException at compile-time
C) 411787

回答:

C) 411787

解釋:
由於基數為 27,因此字符串文字中允許的字符為 [0-9]、[A-Q](10 到 26)。因此其值將計算如下:
=> a*(27^0) + n*(27^1) + o*(27^2) + k*(27^3)
=> 10*1 + 23*27 + 24*27*27 + 20*27*27*27
=> 10 + 621 + 17496 + 393660
=> 411787



相關用法


注:本文由純淨天空篩選整理自佚名大神的英文原創作品 Java.lang.Number Class in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。