Преобразувания на низови Java

1. Общ преглед

В тази бърза статия ще разгледаме някои прости преобразувания на String обекти в различни типове данни, поддържани в Java.

2. Преобразуване на String в int или Integer

Ако трябва да преобразуваме String в примитивен тип обвивка int или Integer , можем да използваме или приложните програмни интерфейси ( API ) parseInt () или valueOf (), за да получим съответната стойност за връщане 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. Преобразуване на низ в дълъг или дълъг

Ако трябва да преобразуваме String в примитивен дълъг или дълъг тип обвивка, можем да използваме parseLong () или valueOf () съответно:

@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. Преобразуване на String в double или Double

Ако трябва да преобразуваме String в примитивен тип double или Double wrapper, можем да използваме parseDouble () или valueOf () съответно:

@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. Преобразуване на String в ByteArray

За да преобразува String в байтов масив, getBytes () кодира String в последователност от байтове, използвайки стандартния набор от символи на платформата, като съхранява резултата в нов байтов масив.

Поведението на getBytes () е неуточнено, когато предаденият String не може да бъде кодиран с помощта на стандартния набор от символи . Според документацията на java, класът 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. Преобразуване на String в CharArray

За да преобразуваме String в екземпляр CharArray , можем просто да използваме 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

За да преобразуваме екземпляр String в примитивен булев или булев тип обвивка, можем да използваме съответно API на parseBoolean () или valueOf () :

@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. Преобразуване на String в Date или LocalDateTime

Java 6 предоставя типа данни java.util.Date за представяне на дати. Java 8 представи нови API за дата и час, за да отстрани недостатъците на по-старите java.util.Date и java.util.Calendar .

Можете да прочетете тази статия за повече подробности.

8.1. Преобразуване на String в java.util.Date

За да преобразуваме String обекти в Date обекти, първо трябва да конструираме SimpleDateFormat обект, като предадем шаблона, описващ формата на датата и часа.

Например, възможна стойност за модел може да бъде „MM-dd-yyyy“ или „yyyy-MM-dd“. След това трябва да извикаме метода на синтактичен анализ , предавайки String .

Най- String предава като аргумент трябва да бъде в същия формат, като на модела. В противен случай ще бъде хвърлен 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. Преобразуване на String в java.time.LocalDateTime

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

За да конвертирате String обекти да LocalDateTime обекти, ние можем просто да използвате синтактична 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); }

Най- String трябва да представлява валидно време според java.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME. В противен случай, ParseException ще бъде хвърлен по време на изпълнение.

Например „ 2011-12-03 “ представлява валиден низ формат, който има 4 цифри за годината, 2 цифри за месеца за една година и 2 цифри за деня на месеца.

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

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

Пълният изходен код и всички кодови фрагменти за тази статия са достъпни в GitHub.