Класс Java.lang.Number в Java

Опубликовано: 15 Февраля, 2022

Большую часть времени при работе с числами в java мы используем примитивные типы данных. Но Java также предоставляет различные подклассы числовой оболочки в абстрактном классе Number, присутствующем в пакете java.lang. В классе Number есть в основном шесть подклассов. Эти подклассы определяют некоторые полезные методы, которые часто используются при работе с числами.

Эти классы «оборачивают» примитивный тип данных в соответствующий объект. Часто оболочка выполняется компилятором. Если вы используете примитив там, где ожидается объект, компилятор помещает примитив в свой класс-оболочку для вас. Точно так же, если вы используете объект Number, когда ожидается примитив, компилятор распаковывает объект за вас. Это также называется автобоксингом и распаковкой.
Зачем использовать объект класса Number вместо примитивных данных?

  • Константы, определенные числовым классом, такие как MIN_VALUE и MAX_VALUE, которые обеспечивают верхнюю и нижнюю границы типа данных, очень полезны.
  • Объект класса Number может использоваться в качестве аргумента метода, который ожидает объект (часто используется при работе с коллекциями чисел).
  • Методы класса могут использоваться для преобразования значений в другие примитивные типы и обратно, для преобразования в строки и из строк, а также для преобразования между системами счисления (десятичной, восьмеричной, шестнадцатеричной, двоичной).

Методы, общие для всех подклассов Number:

  1. xxx xxxValue () : здесь xxx представляют собой примитивные числовые типы данных (байтовые, короткие, целые, длинные, с плавающей запятой, двойные). Этот метод используется для преобразования значения этого объекта Number в указанный примитивный тип данных.
 Синтаксис:
byte byteValue ()
короткий shortValue ()
int intValue ()
долго longValue ()
float floatValue ()
двойной doubleValue ()
Параметры:
----
Возврат:
числовое значение, представленное этим объектом
после преобразования в указанный тип


Выход:

 значение d после преобразования в байт: 6
значение d после преобразования в шорт: 6
значение d после преобразования в int: 6
значение d после преобразования в long: 6
значение d после преобразования в число с плавающей запятой: 6.9685
значение d после преобразования в double: 6.9685


Примечание . При преобразовании возможна потеря точности. Например, как мы видим, часть дроби («. 9685») была пропущена при преобразовании из объекта Double в тип данных int.

  • int compareTo (NumberSubClass referenceName) : этот метод используется для сравнения этого объекта Number с указанным аргументом. Однако нельзя сравнивать два разных типа, поэтому и аргумент, и объект Number, которые вызывают метод, должны быть одного типа. ReferenceName может быть Byte, Double, Integer, Float, Long или Short.
 Синтаксис:
public int compareTo (NumberSubClass referenceName)
Параметры:
referenceName - любое значение типа NumberSubClass
Возврат:
значение 0, если Число равно аргументу.
значение 1, если число меньше аргумента.
значение -1, если число больше аргумента.


 

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

  • boolean equals (Object obj) : этот метод определяет, равен ли этот объект Number аргументу.
 Синтаксис:
public boolean равно (Object obj)
Параметры:
obj - любой объект
Возврат:
Метод возвращает истину, если аргумент не равен нулю и 
- объект того же типа и с таким же числовым значением,
в противном случае - ложь.


 

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

Выход:

 ложный
ложный
правда


  • int parseInt (String s, int radix) : этот метод используется для получения примитивного типа данных String. Radix используется для возврата десятичного (10), восьмеричного (8) или шестнадцатеричного (16) представления в качестве вывода.
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

//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
Исключение в потоке "main" java.lang.NumberFormatException: для входной строки: "Geeks"
    в java.lang.NumberFormatException.forInputString (NumberFormatException.java:65)
    в java.lang.Integer.parseInt (Integer.java:580)
    в Test.main (Test.java:17)


  • int parseInt (String s) : этот метод является еще одним вариантом описанного выше метода, где по умолчанию основание системы счисления равно 10 (десятичное).
 Синтаксис:
статический int parseInt (String s)
Параметры:
s - любое строковое представление десятичной дроби
Возврат:
целочисленное значение, представленное аргументом в десятичном формате.
Броски:
NumberFormatException: если строка не содержит анализируемого целого числа.


 

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
Исключение в потоке "main" java.lang.NumberFormatException: для входной строки: "Geeks"
    в java.lang.NumberFormatException.forInputString (NumberFormatException.java:65)
    в java.lang.Integer.parseInt (Integer.java:580)
    в java.lang.Integer.parseInt (Integer.java:615)
    в Test.main (Test.java:15)


 

  • String toString() : There are two variants of toString() method. They are used to get String representation of a number. The other variants of these methods are Integer.toBinaryString(int i), Integer.toHexString(int i), Integer.toOctalString(int i) which will return binary, hexa-decimal, octal string representation of specified integer(i) respectively. 
     
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

//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, содержащий значение примитивного целого числа.
 Синтаксис:
Целое число valueOf (int i)
Целочисленное значение valueOf (String s)
Целочисленное значение valueOf (String s, int radix)
Параметры:
i - любое целочисленное значение
s - любое строковое представление десятичной дроби
radix - любое значение системы счисления
Возврат:
valueOf (int i): объект типа Integer, содержащий значение, представленное аргументом int.
valueOf (String s): целочисленный объект, содержащий значение, представленное строковым аргументом.
valueOf (String s, int radix): целочисленный объект, содержащий значение
 представлен строковым аргументом с основанием системы счисления.
Броски:
valueOf (String s) -
NumberFormatException: если строка не содержит анализируемого целого числа.
valueOf (String s, int radix) -
NumberFormatException: если строка не содержит анализируемого целого числа.


 

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

Выход:

 Демонстрация метода valueOf (int i)
50
9,36
Демонстрация метода valueOf (String s)
333
-255
Демонстрация метода (String s, int radix)
219
-597
1365803589

Исключение в потоке "main" java.lang.NumberFormatException: для входной строки: "Geeks"
    в java.lang.NumberFormatException.forInputString (NumberFormatException.java:65)
    в java.lang.Integer.parseInt (Integer.java:580)
    в java.lang.Integer.valueOf (Integer.java:766)
    в Test.main (Test.java:28)


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

Java

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

Параметры :

 A) NumberFormatException во время выполнения
Б) NumberFormatException во время компиляции
В) 411787


Отвечать :

 В) 411787


Объяснение :
Поскольку основание системы счисления равно 27, допустимые символы в строковом литерале - это [0-9], [AQ] (от 10 до 26). Таким образом, его значение будет вычисляться следующим образом:
=> а * (27 ^ 0) + п * (27 ^ 1) + о * (27 ^ 2) + к * (27 ^ 3)
=> 10 * 1 + 23 * 27 + 24 * 27 * 27 + 20 * 27 * 27 * 27
=> 10 + 621 + 17496 + 393660
=> 411787
Эта статья предоставлена Gaurav Miglani . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.

Вниманию читателя! Не переставай учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .