Рубрики
Без рубрики

Преобразования строк Java

Быстрые и практические примеры, посвященные преобразованию строковых объектов в различные типы данных в Java.

Автор оригинала: baeldung.

1. Обзор

В этой краткой статье мы рассмотрим некоторые простые преобразования объектов String в различные типы данных, поддерживаемые в Java.

2. Преобразование строки в int или целое число

Если нам нужно преобразовать String в примитивный int или Integer тип оболочки, мы можем использовать либо parseInt () , либо значение() API, чтобы получить соответствующее int или Integer возвращаемое значение:

@Test
public void whenConvertedToInt_thenCorrect() {
    String beforeConvStr = "1";
    int afterConvInt = 1;

    assertEquals(Integer.parseInt(beforeConvStr), afterConvInt);
}

@Test
public void whenConvertedToInteger_thenCorrect() {
    String beforeConvStr = "12";
    Integer afterConvInteger = 12;

    assertEquals(Integer.valueOf(beforeConvStr).equals(afterConvInteger), true);
}

3. Преобразование строки в длинную или длинную

Если нам нужно преобразовать Строку в примитивный длинный или Длинный тип оболочки, мы можем использовать parseLong() или значение() соответственно:

@Test
public void whenConvertedTolong_thenCorrect() {
    String beforeConvStr = "12345";
    long afterConvLongPrimitive = 12345;

    assertEquals(Long.parseLong(beforeConvStr), afterConvLongPrimitive);
}

@Test
public void whenConvertedToLong_thenCorrect() {
    String beforeConvStr = "14567";
    Long afterConvLong = 14567l;

    assertEquals(Long.valueOf(beforeConvStr).equals(afterConvLong), true);
}

4. Преобразование строки в double или Double

Если нам нужно преобразовать String в примитивный double или Double тип оболочки, мы можем использовать parseDouble() или значение() соответственно:

@Test
public void whenConvertedTodouble_thenCorrect() {
    String beforeConvStr = "1.4";
    double afterConvDoublePrimitive = 1.4;

    assertEquals(Double.parseDouble(beforeConvStr), afterConvDoublePrimitive, 0.0);
}

@Test
public void whenConvertedToDouble_thenCorrect() {
    String beforeConvStr = "145.67";
    double afterConvDouble = 145.67d;

    assertEquals(Double.valueOf(beforeConvStr).equals(afterConvDouble), true);
}

5. Преобразование строки в ByteArray

Чтобы преобразовать Строку в массив байтов, getBytes() кодирует Строку в последовательность байтов, используя кодировку платформы по умолчанию, сохраняя результат в новом массиве байтов.

Поведение getBytes() не определено, когда переданная Строка не может быть закодирована с использованием кодировки по умолчанию. В соответствии с java documentation , java.nio.charset.Класс CharsetEncoder следует использовать, когда требуется больший контроль над процессом кодирования:

@Test
public void whenConvertedToByteArr_thenCorrect() {
    String beforeConvStr = "abc";
    byte[] afterConvByteArr = new byte[] { 'a', 'b', 'c' };

    assertEquals(Arrays.equals(beforeConvStr.getBytes(), afterConvByteArr), true);
}

6. Преобразование строки в charArray

Чтобы преобразовать String в массив Char//экземпляр, мы можем просто использовать toCharArray() :

@Test
public void whenConvertedToCharArr_thenCorrect() {
    String beforeConvStr = "hello";
    char[] afterConvCharArr = { 'h', 'e', 'l', 'l', 'o' };

    assertEquals(Arrays.equals(beforeConvStr.toCharArray(), afterConvCharArr), true);
}

7. Преобразование строки в логическое или логическое значение

Чтобы преобразовать экземпляр String в примитивный boolean или Boolean тип оболочки, мы можем использовать parseBoolean() или значение() API соответственно:

@Test
public void whenConvertedToboolean_thenCorrect() {
    String beforeConvStr = "true";
    boolean afterConvBooleanPrimitive = true;

    assertEquals(Boolean.parseBoolean(beforeConvStr), afterConvBooleanPrimitive);
}

@Test
public void whenConvertedToBoolean_thenCorrect() {
    String beforeConvStr = "true";
    Boolean afterConvBoolean = true;

    assertEquals(Boolean.valueOf(beforeConvStr), afterConvBoolean);
}

8. Преобразование строки в дату или LocalDateTime

Java 6 предоставляет java.util.Дата тип данных для представления дат. Java 8 представила новые API для Даты и времени для устранения недостатков более старых java.util.Дата и java.util.Календарь .

Вы можете прочитать эту статью для получения более подробной информации.

8.1. Преобразование строки в java.util.Date

Чтобы преобразовать объекты String в объекты Date , нам нужно сначала построить объект SimpleDateFormat , передав шаблон, описывающий формат даты и времени.

Например, возможное значение для шаблона может быть “ММ-дд-гггг” или “гггг-ММ-дд”. Далее нам нужно вызвать parse метод, передающий Строку .

Строка |, переданная в качестве аргумента, должна быть в том же формате, что и шаблон. В противном случае во время выполнения будет выдано исключение ParseException :

@Test
public void whenConvertedToDate_thenCorrect() throws ParseException {
    String beforeConvStr = "15/10/2013";
    int afterConvCalendarDay = 15;
    int afterConvCalendarMonth = 9;
    int afterConvCalendarYear = 2013;
    SimpleDateFormat formatter = new SimpleDateFormat("dd/M/yyyy");
    Date afterConvDate = formatter.parse(beforeConvStr);
    Calendar calendar = new GregorianCalendar();
    calendar.setTime(afterConvDate);

    assertEquals(calendar.get(Calendar.DAY_OF_MONTH), afterConvCalendarDay);
    assertEquals(calendar.get(Calendar.MONTH), afterConvCalendarMonth);
    assertEquals(calendar.get(Calendar.YEAR), afterConvCalendarYear);
}

8.2. Преобразование строки в java.time.LocalDateTime

LocalDateTime -это неизменяемый объект даты и времени, который представляет время, часто рассматриваемое как год-месяц-день-час-минута-секунда.

Чтобы преобразовать строковые объекты в LocalDateTime объекты, мы можем просто использовать parse API:

@Test
public void whenConvertedToLocalDateTime_thenCorrect() {
    String str = "2007-12-03T10:15:30";
    int afterConvCalendarDay = 03;
    Month afterConvCalendarMonth = Month.DECEMBER;
    int afterConvCalendarYear = 2007;
    LocalDateTime afterConvDate 
      = new UseLocalDateTime().getLocalDateTimeUsingParseMethod(str);

    assertEquals(afterConvDate.getDayOfMonth(), afterConvCalendarDay);
    assertEquals(afterConvDate.getMonth(), afterConvCalendarMonth);
    assertEquals(afterConvDate.getYear(), afterConvCalendarYear);
}

Строка | должна представлять допустимое время в соответствии с форматом java.time.DateTimeFormatter.ISO_LOCAL_DATE_TIME . В противном случае во время выполнения будет выдано исключение ParseException .

Например’ 2011-12-03 ‘ представляет допустимый формат строки, содержащий 4 цифры для года, 2 цифры для месяца в течение года и 2 цифры для дня месяца .

9. Заключение

В этом кратком руководстве мы рассмотрели различные методы утилиты для преобразования указанных tring объектов в различные типы данных, поддерживаемые в java.

Полный исходный код и все фрагменты кода для этой статьи доступны на GitHub .