Класс Java.lang.Number в Java
Большую часть времени при работе с числами в java мы используем примитивные типы данных. Но Java также предоставляет различные подклассы числовой оболочки в абстрактном классе Number, присутствующем в пакете java.lang. В классе Number есть в основном шесть подклассов. Эти подклассы определяют некоторые полезные методы, которые часто используются при работе с числами.
Эти классы «оборачивают» примитивный тип данных в соответствующий объект. Часто оболочка выполняется компилятором. Если вы используете примитив там, где ожидается объект, компилятор помещает примитив в свой класс-оболочку для вас. Точно так же, если вы используете объект Number, когда ожидается примитив, компилятор распаковывает объект за вас. Это также называется автобоксингом и распаковкой.
Зачем использовать объект класса Number вместо примитивных данных?
- Константы, определенные числовым классом, такие как MIN_VALUE и MAX_VALUE, которые обеспечивают верхнюю и нижнюю границы типа данных, очень полезны.
- Объект класса Number может использоваться в качестве аргумента метода, который ожидает объект (часто используется при работе с коллекциями чисел).
- Методы класса могут использоваться для преобразования значений в другие примитивные типы и обратно, для преобразования в строки и из строк, а также для преобразования между системами счисления (десятичной, восьмеричной, шестнадцатеричной, двоичной).
Методы, общие для всех подклассов Number:
- 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 и многому другому, см. Полный курс подготовки к собеседованию .