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 .