47 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Описание и пример работы с классом Integer в Java

Описание и пример работы с классом Integer в Java

Класс Integer – это оболочка простого типа int. Объект содержит единственное поле типа int. Кроме того, этот класс обеспечивает несколько методов для преобразования int в String и обратно, а также другие константы и методы полезные при работе с int.

Поля класса:

  • static int MAX_VALUE – Самая большая величина типа int
  • static int MIN_VALUE – Минимальная величина типа int
  • static Class TYPE – Объект Класса представляющий простой тип int

Конструктор класса:

  • Integer(int value) – Создает вновь размещенный объект Integer, который создается на основе аргумента
  • Integer(String s) – Создает вновь размещенный объект Integer, который создается на основе строкового аргумента

Методы класса:

  • byte byteValue() – Возвращает величину Integer как byte
  • int compareTo(Integer anotherInteger) – Сравнивает два целых числа
  • int compareTo(Object o) – Сравнивает число с другим объектом
  • static Integer decode(String nm) – Переводит строку в целое
  • double doubleValue() – Возвращает величину Integer как double
  • boolean equals(Object obj) – Сравнивает это объект с другим объектом
  • float floatValue() – Возвращает величину Integer как double
  • static Integer getInteger(String nm) – Определяет значение целого системного свойства с определенным именем
  • static Integer getInteger(String nm, int val) – Определяет значение целого системного свойства с определенным именем
  • static Integer getInteger(String nm, Integer val) – Возвращает значение целого системного свойства с определенным именем
  • int hashCode() – Возвращает hashcode для этого обьекта
  • int intValue() – Возвращает величину Integer как int
  • long longValue() – Возвращает величину Integer как long
  • static int parseInt(String s) – Выполняет грамматический разбор аргумента строки как десятичного целого
  • static int parseInt(String s, int radix) – Выполняет грамматический разбор аргумента строки, как целого со знаком в системе счисления определенной во втором аргументе
  • short shortValue() – Возвращает величину Integer как short
  • static String toBinaryString(int i) – Создает представление строки аргумента целого как целое с базой 2
  • static String toHexString(int i) – Создает представление строки аргумента целого как целое с базой 16
  • static String toOctalString(int i) – Создает представление строки аргумента целого как целое с базой 8
  • String toString() – Возвращает строковое представление числа
  • static String toString(int i) – Возвращает новый объект строки с десятичным представлением числа
  • static String toString(int i, int radix) – Возвращает новый объект строки с текстовым значением числа i в заданной системе счисления radix
  • static Integer valueOf(String s, int radix) – Возвращает новый объект Integer инициализированный величиной определенной в строковой переменной s записанной в системе счисления radix

Класс Java.lang.Integer и его методы

java.lang.Integer переносит целочисленный тип данных в объект, содержащий одно поле с типом данных, int.
Конструкторы:

  • Integer (int arg): Создает целочисленный объект, представляющий значение int.
  • Integer (String arg): Создает строковый объект, представляющий строковое значение.

Методы целочисленного класса:

  1. Метод toBinaryString ():java.lang.Integer.toBinaryString () преобразует целочисленное значение аргумента в его двоичное представление в виде строки.
    Синтаксис
  2. bitcount ():java.lang.Integer.bitCount ()
    Метод преобразует целочисленное значение аргумента в двоичную строку, а затем возвращает значение no. 1 присутствует в нем.
    Синтаксис
  3. Метод toHexString ():java.lang.Integer.toHexString () преобразует целочисленное значение аргумента в шестнадцатеричное представление в виде строки.
    Синтаксис
  4. Метод toOctalString ():java.lang.Integer.toHexString () преобразует целочисленное значение аргумента в шестнадцатеричное представление в виде строки.
    Синтаксис
  5. parsedatatype ():java.lang.Integer.parse __ () возвращает примитивный тип данных аргументированного значения String.
    Корень (r) означает, что используемый формат нумерации находится у основания ‘r’ в строке.
    Синтаксис

// Java-код, объясняющий методы класса Integer
// bitcount (), toBinaryString (), toHexString (), toOctalString (), parse __ ()

public class NewClass

public static void main(String args[])

int x = 15 , count1, y = 128 , count2;

// Использование метода toBinaryString ()

System.out.println( “Binary string of 16 : “

System.out.println( “Binary string of 100 : “

// Использование метода bitCount ()

System.out.println( “n 1’s bit present in 16 : ” +count1);

System.out.println( ” 1’s bit present in 100 : ” +count2);

// Использование метода toHexString ()

System.out.println( “nHexadecimal string of 16 : “

System.out.println( “Hexadecimal string of 100 : “

// Использование метода toOctalString ()

System.out.println( “Octal string of 16 : “

System.out.println( “Octal string of 100 : “

// Использование метода parseInt ()

int i1 =Integer.parseInt( “34” );

int i2 = Integer.parseInt( “15” , 8 );

double d = Double.parseDouble( “54” );

  • Метод hashCode ():java.lang.Integer.hashCode () возвращает значение hashCode переданного аргумента.
    Синтаксис:
  • lowerOneBit (): метод java.lang.Integer.lowestOneBit () сначала конвертирует int в двоичный, затем он ищет бит set (1), присутствующий в самой низкой позиции, а затем сбрасывает остальные биты.
    например, arg = 36
    Это бинарное представление = 0010 0100
    Он рассматривает младший бит (в 3) и теперь сбрасывает остальные биты, т.е. 0000 0100
    итак результат = 0100 т.е. 4
    Синтаксис:
  • метод самое высокое значение ():java.lang.Integer.highestOneBit () сначала конвертирует int в двоичный код , затем он ищет бит set (1), присутствующий в самой низкой позиции, а затем сбрасывает остальные биты.
    например, arg = 36
    Это бинарное представление = 0010 0100
    Он учитывает старший бит (на 6) и теперь сбрасывает остальные биты, т.е. 0001 0000
    итак результат = 10000 т.е. 32
    Синтаксис:

    // Java-программа, объясняющая методы класса Integer
    // hashcode (), lowerOneBit (), самая высокаяOneBit ()

    public class NewClass

    public static void main(String[] args)

    // Использование метода incrementExact ()

    int f1 = 30 , f2 = – 56 ;

    System.out.println( “HashCode value of f1 : ” +f1);

    System.out.println( “HashCode value of f2 : ” +f2);

    System.out.println( “nBinary representation of 30 : “

    // Использование метода lowerOneBit ()

    // Здесь он считает 00010 т.е. 2

    System.out.println( “lowestOneBit of 30 : “

    // Использование метода highOneBit ()

    // Здесь он считает 10000 т.е. 16

    System.out.println( “highestOneBit of 30 : “

  • Метод numberOfTrailingZeros ():java.lang.Integer.numberOfTrailingZeros () преобразует значение типа int в двоичное, затем учитывает младший бит и возвращает значение no. нулевых битов, следующих за ним.
    например, arg = 36
    Это бинарное представление = 0010 0100
    Он считает старший бит (в 6), т.е. 0001 0000
    итак результат = 4
    Синтаксис:
  • Метод numberOfLeadingZeros ():java.lang.Integer.numberOfLeadingZeros () преобразует значение типа int в двоичное, затем считает старший бит и возвращает значение no. нулевых битов, предшествующих этому.
    например, arg = 36
    Это бинарное представление = 0010 0100
    Он считает старший бит (в 6), т.е. 0010 0000
    итак результат = 32 — 6 т.е. 26
    Синтаксис:
  • reverse ():java.lang.Integer.reverse () метод сначала находит комплимент 2 переданного аргумента и меняет порядок битов в комплементе 2.
    Синтаксис:

    // Java-программа, объясняющая методы класса Integer
    // numberOfTrailingZeros (), numberOfLeadingZeros (), reverse ()

    public class NewClass

    public static void main(String[] args)

    // Бинарное представление int arg для вашего понимания

    System.out.println( “Binary representation of 30 : “

    // Использование метода numberOfTrailingZeros ()

    // Количество нулей, следующих за 1 в 00010 = 1

    System.out.println( “nNo. Of Trailing Zeros : “

    // Использование метода highOneBit ()

    // Количество нулей после 1 в 10000, т.е. 32 – 5 = 27

    System.out.println( “nNo. Of Leading Zeros : “

    // Использование метода Reverse ()

    System.out.println( “nReverse : ” + Integer.reverse(f1));

    Эта статья предоставлена Мохит Гупта . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

    Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

    Руководство по классу Java Integer

    В данной статье мы поговорим о классе Integer. Рассмотрим такие вопросы:

    • что такое классы-обертки;
    • автоупаковка/распаковка примитивов;
    • работа класса Integer, его методы и константы.

    Классы-обертки примитивных типов

    Как известно, в Java есть различные типы данных, которые условно можно разделить на два блока:

    Примитивных типов данных в Java несколько:

    • целые числа — byte, short, int, long;
    • числа с плавающей точкой (вещественные) — float, double;
    • логический тип данных — boolean;
    • символьный тип данных — char.

    У каждого примитивного типа данных есть свой класс-обертка. Ссылочный тип данных, который “оборачивает” своего примитивного младшего брата в Java-объект. Ниже приведены примитивные типы данных и соответствующие им классы обертки:

    В практическом смысле у примитивов и их классов-оберток много общего. Большинство операций выполняются идентично.
    Однако у классов-оберток есть ряд характеристик, не свойственных примитивам.

    Во-первых, это классы: при работе с классам- обертками мы работаем с объектами.
    Во-вторых (все последующее вытекает из пункта во-первых), данные объекты могут быть null.
    В-третьих классы-обертки предоставляют ряд констант и методов, упрощающих работу с определенным типом данных. В данной статье мы подробнее рассмотрим работу с классом Integer.

    The Integer

    Класс Integer — это класс-обертка примитивного типа int. Внутри данного класса содержится единственное поле типа int.

    Будучи классом оберткой, Integer предоставляет различные методы для работы с int, а также ряд методов для преобразования int в String и String в int.

    Ниже мы рассмотрим различные примеры работы с классом. Начнем с создания. Чаще всего используется (да и проще всего использовать) следующий вариант создания:

    То есть инициализация Integer переменной в данном случае аналогична инициализации int переменной. Более того, Integer переменную можно проинициализировать значением int переменной:

    В кейсе выше неявно происходит автоупаковка. Мы поговорим еще о ней ниже.

    Помимо вариантов инициализации, указанных выше, переменную Integer можно создать, как и прочие объекты, с использованием конструктора и ключевого слова new:

    Однако так дольше писать и дольше читать, поэтому данный вариант наименее распространен.

    С Integer переменными можно делать все то, что и с int переменными. Их можно:

    Однако при всем этом нужно быть осторожным и помнить, что Integer — это ссылочный тип данных, и переменная данного типа может быть null. В таком случае (если переменная равна null) лучше воздержаться от арифметических операций (да и любых других, в которых null ничего хорошего не сулит). Приведем пример:

    Операции сравнения в основной массе проводятся также, как и в примитивном типе int:

    Особняком стоит операция сравнения двух Integer переменных. И дело тут в том, что Integer — это ссылочный тип данных, и его переменные хранят ссылки на значения, а не сами значения (объекты). Проявления этого факта можно наблюдать при выполнении следующего фрагмента кода:

    Результат первого равенства будет true, а второго — false. Так происходит, потому что в первом случае мы сравниваем две переменные (“а” и “b”), которые хранят в себе ссылки на один и тот же объект. А во втором случае мы сравниваем две переменные, ссылающиеся на два разных объекта (при создании переменной “c” мы создали новый объект).

    Приведем еще 1 интересный пример:

    Как мы видим, результат первого сравнения у нас true, а результат второго — false. Тут все дело в кэшировании. Все целые числа в промежутке от -128 до 127 включительно (данные значения можно кастомизировать) кэшируются. Поэтому когда мы создаем новую переменную и присваиваем ей целочисленное значение, лежащее в промежутке от -128 до 127, мы не создаем новый объект, а присваиваем переменной ссылку на уже созданный объект в кэше.

    Теперь, зная этот факт, пример выше не кажется таким уж мистическим. Переменные а и b ссылаются на один и тот же объект — объект из кэша. А во время инициализации переменных x и y мы каждый раз создавали новый объект, и данные переменные хранили в себе ссылки на разные объекты. А как известно, оператор == сравнивает значения переменных, а значением ссылочных переменных являются ссылки.

    Чтобы безошибочно проверять на равенство две Integer переменные, необходимо использовать (как бы банально это ни звучало) метод equals. Перепишем пример выше:

    Автоупаковка и распаковка Integer

    Что такое автоупаковка и распаковка? При создании новых Integer переменных мы использовали такую конструкцию:

    Таким образом мы создавали новый объект без использования ключевого оператора new. Такое возможно благодаря механизму автоупаковки примитивного типа int. Обратная процедура проявляется при присваивании примитивной переменной int значения ссылочной Integer переменной:

    В данном случае мы вроде бы присвоили ссылку (а именно — ссылка на объект является значением переменной “а”) примитивной переменной. Но по факту благодаря механизму автораспаковки в переменную “х” записалось значение 2020.

    Автоупаковка/распаковка — весьма распространенное явление в Java. Часто оно происходит само собой, иногда даже без ведома программиста. Но знать об этом явлении все же нужно.

    Константы класса Integer

    Класс Integer предоставляет различные константы и методы для работы с целыми числами. В данном разделе мы более подробно рассмотрим некоторые из них на практике.

    Начнем с констант. В таблице ниже приведены все константы класса:

    Посмотрим на значения всех этих констант, выполнив следующий код:

    В результате получим следующий вывод:

    Методы класса Integer

    А теперь кратко рассмотрим наиболее используемые методы класса Integer.

    Итак, “топ” возглавляют методы по преобразованию числа из строки, либо преобразованию строки из числа.

    Начнем с преобразований строки в число. Для этих целей служит метод parseInt, сигнатура ниже:

    • static int parseInt(String s)

    Данный метод преобразует String в int. Продемонстрируем работу данного метода:

    Если преобразование невозможно — например, мы передали слово в метод parseInt — будет брошено исключение NumberFormatException.

    У метода parseInt(String s) есть перегруженный собрат:

    • static int parseInt(String s, int radix)

    Данный метод преобразует параметр s в int. В параметре radix указывается, в какой системе счисления изначально записано число в s, которое необходимо преобразовать в int.

    Методы parseInt возвращают примитивный тип данных int.

    У данных методов есть аналог — метод valueOf. Некоторые вариации данного метода внутри себя просто вызывают parseInt. Отличие от parseInt в том, что результатом работы valueOf будет Integer, а не int. Рассмотрим ниже все варианты данного метода и пример его работы:

    • static Integer valueOf(int i) — возвращает Integer значением которого является i;
    • static Integer valueOf(String s) — аналогичен parseInt(String s), но результатом будет Integer;
    • static Integer valueOf(String s, int radix) — аналогичен parseInt(String s, int radix), но результатом будет Integer.

    Мы рассмотрели методы, позволяющие перевести String в int/Integer. Обратная процедура достигается с помощью методов toString.

    У любого Integer объекта можно вызвать метод toString и получить его строковое представление:

    Однако в связи с тем, что метод toString часто вызывается у объектов неявно (например, при передаче объекта на печать в консоль), данный метод редко используется разработчиками в явном виде.

    Есть также и статический метод toString, который принимает в себя int параметр и переводит его в строковое представление. Например:

    Однако, как и не статический метод toString, использование статического в явном виде можно встретить редко.

    Более интересен статический метод toString, который принимает 2 целочисленных параметра:

    • static String toString(int i, int radix) — переведет i в строковое представление в системе счисления radix.

    В классе Integer есть пару методов для нахождения максимума/минимума из двух чисел:

    • static int max(int a, int b) вернет наибольшее из значений среди переданных переменных;
    • static int min(int a, int b) вернет наименьшее из значений среди переданных переменных.

    Заключение

    В данной статье мы рассмотрели класс Integer.

    Поговорили о том, что это за класс, что такое классы обертки.

    Рассмотрели класс с практической точки зрения. Разобрали примеры арифметических операций, в том числе операций сравнения. Взглянули на тонкости сравнения двух Integer переменных, разобрали такое понятие как кэшированные объекты.

    Также, мы упомянули о таком явлении как автоупаковка/распаковка примитивных типов данных.

    Кроме того, мы успели рассмотреть некоторые методы класса Integer, а также некоторые константы. Привели примеры перевода чисел из одной системы счисления в другую.

    Домашнее задание

    1. Изучить, какие еще есть методы класса Integer (изучать можно на сайте с официальной документацией), написать в комментариях, какой из изученных вами методов (без учета тех, которые приведены в статье) наиболее полезен по вашему мнению (будет использоваться вами наиболее часто). А также привести обоснование своего мнения.

    P.S. Тут нет правильных ответов, но данная активность позволит лучше изучить класс.

    2. Решить небольшую простенькую задачку для закрепления материала.

    У нас есть два числа:

    1100001001 — в двоичной системе счисления
    33332 — в пятеричной системе счисления

    Необходимо используя только методы класса Integer определить максимум среди двух данных чисел, а затем вывести разницу между максимальным и минимальным значением в троичной системе счисления.

    3. Перевести максимально возможное значение Integer в восьмеричную систему счисления и вывести на экран количество цифр в полученном числе (количество считать программно).

    голоса
    Рейтинг статьи
    Читать еще:  Расширение Clipboard History 2 для работы с буфером обмена
  • Ссылка на основную публикацию
    Статьи c упоминанием слов: