Java.lang.Number Class in Java (original) (raw)

Last Updated : 31 Jan, 2023

Most of the time, while working with numbers in java, we use primitive data types. But, Java also provides various numeric wrapper sub classes under the abstract class Number present in java.lang package. There are mainly six sub-classes under Number class.These sub-classes define some useful methods which are used frequently while dealing with numbers.

objects-numberHierarchy

These classes “wrap” the primitive data type in a corresponding object. Often, the wrapping is done by the compiler. If you use a primitive where an object is expected, the compiler boxes the primitive in its wrapper class for you. Similarly, if you use a Number object when a primitive is expected, the compiler unboxes the object for you. This is also called Autoboxing and Unboxing.
Why to use a Number class object over primitive data?

Methods common to all sub classes of Number:

  1. xxx xxxValue() : Here xxx represent primitive number data types (byte, short, int, long, float, double). This method is used to convert the value of this Number object to the primitive data type specified.

Syntax : byte byteValue() short shortValue() int intValue() long longValue() float floatValue() double doubleValue() Parameters :

Returns : the numeric value represented by this object after conversion to specified type

Java

public class Test

{

`` public static void main(String[] args)

`` {

`` Double d = new Double( "6.9685" );

`` 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);

`` }

}

Output:

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

Note : While converting, possible loss of precision may occur. For example, as we can see that fraction part(“.9685”) has been left out while converting from Double object to int data type.

Syntax : public int compareTo( NumberSubClass referenceName ) Parameters : referenceName - any NumberSubClass type value Returns : 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

public class Test

{

`` public static void main(String[] args)

`` {

`` Integer i = new Integer( "10" );

`` System.out.println(i.compareTo( 7 ));

`` System.out.println(i.compareTo( 11 ));

`` System.out.println(i.compareTo( 10 ));

`` }

}

Output:

1 -1 0

Syntax : public boolean equals(Object obj) Parameters : obj - any object Returns : 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

public class Test

{

`` public static void main(String[] args)

`` {

`` Short s = new Short( "15" );

`` Short x = 10 ;

`` Integer y = 15 ;

`` Short z = 15 ;

`` System.out.println(s.equals(x));

`` System.out.println(s.equals(y));

`` System.out.println(s.equals(z));

`` }

}

Output:

false false true

Syntax : static int parseInt(String s, int radix) Parameters : s - any String representation of decimal radix - any radix value Returns : the integer value represented by the argument in decimal. Throws : NumberFormatException : if the string does not contain a parsable integer.

Java

public class Test

{

`` public static void main(String[] args)

`` {

`` 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);

`` int x = Integer.parseInt( "Geeks" , 8 );

`` int y = Integer.parseInt( "99" , 8 );

`` }

}

Output:

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)

Syntax : static int parseInt(String s) Parameters : s - any String representation of decimal Returns : the integer value represented by the argument in decimal. Throws : NumberFormatException : if the string does not contain a parsable integer.

Java

public class Test

{

`` public static void main(String[] args)

`` {

`` int z = Integer.parseInt( "654" );

`` long l = Long.parseLong( "2158611234" );

`` System.out.println(z);

`` System.out.println(l);

`` int x = Integer.parseInt( "Geeks" );

`` int a = Integer.parseInt( "-FF" );

`` }

}

Output:

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)

Syntax : String toString() String toString(int i) Parameters : String toString() - no parameter String toString(int i) - i: any integer value Returns : 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

public class Test

{

`` public static void main(String[] args)

`` {

`` Integer x = 12 ;

`` System.out.println(x.toString());

`` System.out.println(Integer.toString( 12 ));

`` System.out.println(Integer.toBinaryString( 152 ));

`` System.out.println(Integer.toHexString( 152 ));

`` System.out.println(Integer.toOctalString( 152 ));

`` }

}

Output:

12 12 10011000 98 230

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 Returns : 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

public class Test

{

`` public static void main(String[] args)

`` {

`` 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);

`` 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);

`` 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);

`` Integer a = Integer.valueOf( "Geeks" );

`` Integer b = Integer.valueOf( "Geeks" , 16 );

`` }

}

Output:

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)

Practice Question:
What is the output of the given java code?

Java

public class Test

{

`` public static void main(String[] args)

`` {

`` Integer i = Integer.parseInt( "Kona" , 27 );

`` System.out.println(i);

`` }

}

Options :

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

Answer :

C) 411787

Explanation :
Since radix is 27,so allowed characters in a String literal are [0-9],[A-Q](for 10 to 26).So its value will calculated as follows:
=> 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