Вопрос-ответ: как в Java правильно конвертировать String в int?

int в String — очень просто, и вообще практически любой примитивный тип приводится к String без проблем.
int x = 5; String text = "X lang-java line-numbers">int i = Integer.parseInt (myString);
Если строка, обозначенная переменной myString , является допустимым целым числом, например «1», «200», Java спокойно преобразует её в примитивный тип данных int . Если по какой-либо причине это не удается, подобное действие может вызвать исключение NumberFormatException , поэтому чтобы программа работала корректно для любой строки, нам нужно немного больше кода. Программа, которая демонстрирует метод преобразования Java String в int , управление для возможного NumberFormatException :
public class JavaStringToIntExample < public static void main (String[] args) < // String s = "fred"; // используйте это, если вам нужно протестировать //исключение ниже String s = "100"; try < // именно здесь String преобразуется в int int i = Integer.parseInt(s.trim()); // выведем на экран значение после конвертации System.out.println("int i = " + i); >catch (NumberFormatException nfe) < System.out.println("NumberFormatException: " + nfe.getMessage()); >>
Обсуждение
Когда вы изучите пример выше, вы увидите, что метод Integer.parseInt (s.trim ()) используется для превращения строки s в целое число i , и происходит это в следующей строке кода:
int i = Integer.parseInt (s.trim ())
- Integer.toString (int i) используется для преобразования int в строки Java.
- Если вы хотите преобразовать объект String в объект Integer (а не примитивный класс int ), используйте метод valueOf () для класса Integer вместо метода parseInt () .
- Если вам нужно преобразовать строки в дополнительные примитивные поля Java, используйте такие методы, как Long.parseLong () и ему подобные.
Java: преобразование строки в число и наоборот
В некоторых случаях при программировании на Java нам нужно выполнить преобразование строки в число или числа в строку. Это бывает, если мы имеем величину определённого типа и желаем присвоить эту величину переменной другого типа. Преобразования типов в Java осуществляются разными способами, давайте рассмотрим наиболее популярные из них.
Как преобразовать строку в число в Java?
Речь идёт о преобразовании String to Number. Обратите внимание, что в наших примерах, с которыми будем работать, задействована конструкция try-catch. Это нужно нам для обработки ошибки в том случае, когда строка содержит другие символы, кроме чисел либо число, которое выходит за рамки диапазона предельно допустимых значений указанного типа. К примеру, строку «onlyotus» нельзя перевести в тип int либо в другой числовой тип, т. к. при компиляции мы получим ошибку. Для этого нам и нужна конструкция try-catch.
Преобразуем строку в число Java: String to byte
Выполнить преобразование можно следующими способами:
C помощью конструктора:
try < Byte b1 = new Byte("10"); System.out.println(b1); >catch (NumberFormatException e)
С помощью метода valueOf класса Byte:
String str1 = "141"; try < Byte b2 = Byte.valueOf(str1); System.out.println(b2); >catch (NumberFormatException e)
С помощью метода parseByte класса Byte:
byte b = 0; String str2 = "108"; try < b = Byte.parseByte(str2); System.out.println(b); >catch (NumberFormatException e)
А теперь давайте посмотрим, как выглядит перевод строки в массив байтов и обратно в Java:
String str3 = "20150"; byte[] b3 = str3.getBytes(); System.out.println(b3); //массив байтов переводится обратно в строку try < String s = new String(b3, "cp1251"); System.out.println(s); >catch (UnsupportedEncodingException e)
Преобразуем строку в число в Java: String to int
Здесь, в принципе, всё почти то же самое:
Используем конструктор:
try < Integer i1 = new Integer("10948"); System.out.println(i1); >catch (NumberFormatException e)
Используем метод valueOf класса Integer:
String str1 = "1261"; try < Integer i2 = Integer.valueOf(str1); System.out.println(i2); >catch (NumberFormatException e)
Применяем метод parseInt:
int i3 = 0; String str2 = "203955"; try < i3 = Integer.parseInt(str2); System.out.println(i3); >catch (NumberFormatException e)
Аналогично действуем и для других примитивных числовых типов данных в Java: short, long, float, double, меняя соответствующим образом названия классов и методов.
Как преобразовать число в строку в Java?
Теперь поговорим о преобразовании числа в строку (Number to String). Рассмотрим несколько вариантов:
1. Преобразование int to String в Java:
int i = 53; String str = Integer.toString(i); System.out.println(str);2. Преобразование double to String в Java:
double i = 31.6e10; String str = Double.toString(i); System.out.println(str);3. Преобразуем long to String в Java:
long i = 3422222; String str = Long.toString(i); System.out.println(str);4. Преобразуем float to String в Java:
float i = 3.98f; String str = Float.toString(i); System.out.println(str);Кофе-брейк #190. Как преобразовать Integer в String. Статические и нестатические внутренние классы в Java
Источник: FreeCodeCampЭто руководство подскажет вам несколько способов преобразования целого числа (integer) в строку (string).Для преобразования переменных из одного типа данных в другой, в языке Java используются различные методы. В случае с конвертацией Integer в String можно применить один из перечисленных ниже способов:
- Использование метода Integer.toString() .
- Использование метода String.valueOf() .
- Использование метода String.format() .
- Использование класса DecimalFormat .
Как преобразовать целое число в строку в Java с помощью Integer.toString()
Метод Integer.toString() принимает целое число для преобразования в качестве параметра. Пример синтаксиса:
Integer.toString(INTEGER_VARIABLE)
Пример кода:
class IntToStr < public static void main(String[] args) < int age = 2; String AGE_AS_STRING = Integer.toString(age); System.out.println("The child is " + AGE_AS_STRING + " years old"); // The child is 2 years old >>
В данном примере мы создали целое число age и присвоили ему значение 2 . Чтобы преобразовать переменную age в строку, мы передали ее в качестве параметра методу Integer.toString(): Integer.toString(age) . Затем мы сохранили это новое строковое значение в строковой переменной с именем AGE_AS_STRING . И наконец, мы объединили новую строковую переменную с другими строками: "The child is " + AGE_AS_STRING + " years old" . Теперь возникает вопрос: возникнет ли ошибка, если мы просто соединим переменную age с этими другими строками без какого-либо преобразования?
class IntToStr < public static void main(String[] args) < int age = 2; System.out.println("The child is " + age + " years old"); // The child is 2 years old >>
Вывод получился такой же, как и в примере, где нам нужно было преобразовать целое число в строку. Но как мы узнаем, действительно ли преобразование типов сработало? Для этого мы можем проверить типы переменных, используя объект getClass() . Примерно вот так:
class IntToStr < public static void main(String[] args) < int age = 2; String AGE_AS_STRING = Integer.toString(age); System.out.println(((Object)age).getClass().getSimpleName()); // Integer System.out.println(AGE_AS_STRING.getClass().getSimpleName()); // String >>
Теперь мы можем убедиться, что при создании переменной age она была Integer , а после преобразования типа стала String .
Как преобразовать целое число в строку в Java с помощью String.valueOf()
Метод String.valueOf() также принимает переменную, которую нужно преобразовать в строку, в качестве параметра.
class IntToStr < public static void main(String[] args) < int age = 2; String AGE_AS_STRING = String.valueOf(age); System.out.println("The child is " + AGE_AS_STRING + " years old"); // The child is 2 years old >>
- Мы создали целое число (integer) с названием age .
- Мы передали целое число age в качестве параметра метода String.valueOf(): String.valueOf(age) .
System.out.println(((Object)age).getClass().getSimpleName()); // Integer System.out.println(AGE_AS_STRING.getClass().getSimpleName()); // String
Как преобразовать целое число в строку в Java с помощью String.format()
Метод String.format() принимает два параметра: спецификатор формата и форматируемую переменную. Вот пример:
class IntToStr < public static void main(String[] args) < int age = 2; String AGE_AS_STRING = String.format("%d", age); System.out.println("The child is " + AGE_AS_STRING + " years old"); // The child is 2 years old >>
В этом примере мы передали методу String.format() два параметра: "%d" и age . "%d" — это спецификатор формата, указывающий, что форматируемая переменная является целым числом. age , который является вторым параметром, будет преобразован в строку и сохранен в переменной AGE_AS_STRING . Также можно проверить типы переменных до и после преобразования:
System.out.println(((Object)age).getClass().getSimpleName()); // Integer System.out.println(AGE_AS_STRING.getClass().getSimpleName()); // String
Как преобразовать целое число в строку в Java с помощью DecimalFormat
Класс DecimalFormat используется для форматирования десятичных чисел в Java. Его можно применять по-разному, но сейчас мы будем использовать его для преобразования целого числа в строку. Перед вами пример:
import java.text.DecimalFormat; class IntToStr < public static void main(String[] args) < int age = 2; DecimalFormat DFormat = new DecimalFormat("#"); String AGE_AS_STRING = DFormat.format(age); System.out.println("The child is " + AGE_AS_STRING + " years old"); // The child is 2 years old System.out.println(((Object)age).getClass().getSimpleName()); // Integer System.out.println(AGE_AS_STRING.getClass().getSimpleName()); // String >>
- Чтобы иметь возможность использовать класс DecimalFormat в конкретном примере, мы импортировали его: import java.text.DecimalFormat; .
- Мы создали целочисленную переменную age .
- Затем мы создали новый объект класса DecimalFormat с названием DFormat .
- Используя объекта метода format() , мы преобразовали age в строку: DFormat.format(age); .
Заключение
В этой статье мы говорили о преобразовании целых чисел в строки в Java. Вы увидели примеры кода с использованием трех разных методов: Integer.toString() , String.valueOf() , String.format() , а также класса DecimalFormat . В каждом из примеров показан процесс преобразования и проверка типа данных переменной до и после преобразования.
Статические и нестатические внутренние классы в Java
Источник: Medium Благодаря этой статье вы узнаете, в чем состоят различия между статическими и нестатическими внутренними классами в Java. В Java нестатические внутренние классы (non-static inner classes, также известные как внутренние классы или внутренние объекты) имеют неявную ссылку на окружающий экземпляр (enclosing instance) внешнего класса. Это означает, что они имеют доступ к переменным экземпляра и методам внешнего класса и могут использоваться для создания нескольких экземпляров внутреннего класса, связанных с разными экземплярами внешнего класса. Давайте рассмотрим следующий код:
class Outer < private int x; class Inner < public void printX() < System.out.println(x); >> > Outer outer1 = new Outer(); outer1.x = 5; Outer.Inner inner1 = outer1.new Inner(); inner1.printX(); // prints 5 Outer outer2 = new Outer(); outer2.x = 10; Outer.Inner inner2 = outer2.new Inner(); inner2.printX(); // prints 10
Здесь у класса Outer есть внутренний класс Inner , у которого имеется метод printX . А он, в свою очередь, печатает значение x из окружающего экземпляра Outer . Код создает два экземпляра Outer ( outer1 и outer2 ) и два экземпляра Inner ( inner1 и inner2 ), каждый из которых связан с разным экземпляром Outer . Когда printX вызывает inner1 и inner2 , он печатает значение x из соответствующего экземпляра Outer . Поскольку нестатические внутренние классы имеют неявную ссылку на окружающий экземпляр, им требуется дополнительная память для хранения этой ссылки. Это означает, что они менее эффективно используют память, чем статические внутренние классы, которые не имеют неявной ссылки на включающий экземпляр и не требуют для этой цели дополнительной памяти. С другой стороны, статические внутренние классы не могут получить доступ к переменным или методам экземпляра внешнего класса, поэтому их возможности ограничены. Они полезны, когда вы хотите определить класс, тесно связанный с внешним классом и не нуждающийся в доступе к его переменным или методам экземпляра. Нестатические внутренние классы (также известные как внутренние классы или внутренние объекты) полезны, когда вы хотите определить класс, который тесно связан с другим классом и имеет доступ к переменным экземпляра и методам внешнего класса.
Использование нестатических внутренних классов
- Когда внутреннему классу необходимо получить доступ к переменным экземпляра или методам внешнего класса, которые не являются static . Поскольку нестатические внутренние классы имеют неявную ссылку на окружающий экземпляр внешнего класса, они могут напрямую обращаться к нестатическим переменным и методам экземпляра.
- Когда вы хотите определить несколько экземпляров внутреннего класса, связанных с разными экземплярами внешнего класса. Например, вы можете захотеть создать нестатический внутренний класс Button для класса Dialog , где каждый экземпляр Button связан с другим экземпляром Dialog и может получить доступ к переменным экземпляра и методам экземпляра Dialog .
- Когда вы хотите определить класс, который используется только в контексте внешнего класса и не предназначен для независимого использования. Доступ к нестатическим внутренним классам возможен только из внешнего класса, поэтому они более инкапсулированы и менее подвержены непреднамеренному использованию.
Использование статических внутренних классов
Мы можем использовать статические внутренние классы, если нам не нужен доступ к каким-либо переменным экземпляра или методам внешнего класса, и по этой причине им не нужно иметь неявную ссылку на окружающий экземпляр внешнего класса. Это делает их более эффективными с точки зрения использования памяти, чем нестатические внутренние классы, которые имеют неявную ссылку на окружающий экземпляр. Допустим, нам нужно спроектировать график, который содержит траектории (edges) и точки пересечения (nodes). Классы Node и Edge тесно связаны с классом Graph и используются только в контексте объекта Graph . Определение их как статических внутренних классов дает понять, что они являются частью класса Graph и не предназначены для независимого использования.
public class Graph < Map nodeMap; public Graph () < nodeMap = new HashMap<>(); > static class Node < String name; List edgeList; public Node(String name) < this.name = name; edgeList = new ArrayList(); >> static class Edge < Node source; Node Destination; String type; public Edge(Node source, Node destination, String type) < this.Destination = destination; this.source = source; this.type = type; >> >
Статические внутренние классы не могут получить доступ к переменным или методам экземпляра Вот пример, иллюстрирующий тот факт, что статические внутренние классы не могут получить доступ к переменным или методам экземпляра внешнего класса:
class Outer < private int x; static class Inner < public void printX() < System.out.println(x); // compilation error: cannot access x >> >
- Создать переменные или методы экземпляра static . Это позволит внутреннему классу обращаться к ним, используя имя внешнего класса (например, Outer.x ).
- Передать экземпляр внешнего класса внутреннему классу и сохранить его в поле. Затем внутренний класс может получить доступ к переменным экземпляра или методам внешнего класса через это поле.
class Outer < private int x; public void setX(int x) < this.x = x; >static class Inner < Outer outer; public Inner(Outer outer) < this.outer = outer; >public void printX() < System.out.println(outer.x); >> > Outer outer = new Outer(); outer.setX(5); Outer.Inner inner = new Outer.Inner(outer); inner.printX(); // prints 5
В данном примере у класса Outer есть нестатический метод setX , который задает значение x , и статический внутренний класс Inner с полем outer типа Outer . У класса Inner есть конструктор, который принимает экземпляр Outer и сохраняет его в поле outer . Затем метод printX класса Inner может получить доступ к полю x экземпляра outer , используя нотацию outer.x .
4 метода как преобразовать int в строку на Python
Мы можем преобразовать целочисленный тип данных (int) в строковый, используя встроенную в Python функцию str(). Эта функция принимает любой тип данных в качестве аргумента и преобразует его в строку. Но мы также можем сделать это, используя литерал “%s” и функцию .format(). Ниже приведен синтаксис функции str().
str(integer_Value)
Давайте разберем следующие примеры.
Пример 1. Использование функции str():
n = 25 # check and print type of num variable print(type(n)) print(n) # convert the num into string con_num = str(n) # check and print type converted_num variable print(type(con_num)) print(con_num)
25 25
Пример 2. Использование целого числа “%s”:
n = 10 # check and print type of n variable print(type(n)) # convert the num into a string and print con_n = "% s" % n print(type(con_n))
Пример 3. Использование функции .format():
n = 10 # check and print type of num variable print(type(n)) # convert the num into string and print con_n = "<>".format(n) print(type(con_n))
Пример 4: Использование f-строки:
n = 10 # check and print type of num variable print(type(n)) # convert the num into string conv_n = f'' # print type of converted_num print(type(conv_n))
Мы определили все методы преобразования целочисленного типа данных в строку. Вы можете использовать один из них в соответствии с вашими требованиями.
