当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。