Java-String-Konvertierungen

1. Übersicht

In diesem kurzen Artikel werden einige einfache Konvertierungen von String- Objekten in verschiedene in Java unterstützte Datentypen erläutert.

2. Konvertieren eines Strings in int oder Integer

Wenn wir einen String in einen primitiven int- oder Integer- Wrapper-Typ konvertieren müssen , können wir entweder die APIs parseInt () oder valueOf () verwenden , um den entsprechenden Rückgabewert int oder Integer abzurufen :

@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. Konvertieren eines Strings in Long oder Long

Wenn wir einen konvertieren müssen String auf primitive lange oder lange Wrapper - Typ, können wir verwenden parseLong () oder valueOf () jeweils:

@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. Konvertieren von String in Double oder Double

Wenn wir einen konvertieren müssen String zu primitiv Doppel oder Doppel - Wrapper - Typ, können wir verwenden parseDouble () oder valueOf () jeweils:

@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. Konvertieren von String zu ByteArray

Um einen String in ein Byte-Array zu konvertieren , codiert getBytes () den String mit dem Standardzeichensatz der Plattform in eine Folge von Bytes und speichert das Ergebnis in einem neuen Byte-Array.

Das Verhalten von getBytes () ist nicht angegeben, wenn der übergebene String nicht mit dem Standardzeichensatz codiert werden kann. Gemäß der Java-Dokumentation sollte die Klasse java.nio.charset.CharsetEncoder verwendet werden, wenn mehr Kontrolle über den Codierungsprozess erforderlich ist:

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

6. Konvertieren von String zu CharArray

Um einen String in eine CharArray- Instanz zu konvertieren , können Sie einfach toCharArray () verwenden :

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

7. Konvertieren eines Strings in einen Booleschen oder einen Booleschen Wert

Um eine String- Instanz in einen primitiven booleschen oder einen booleschen Wrapper-Typ zu konvertieren , können Sie die APIs parseBoolean () bzw. valueOf () verwenden:

@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. Konvertieren von String zu Datum oder Local

Java 6 bietet den Datentyp java.util.Date zur Darstellung von Datumsangaben. Java 8 führte neue APIs für Datum und Uhrzeit ein , um die Mängel der älteren java.util.Date und java.util.Calendar zu beheben .

Sie können diesen Artikel für weitere Details lesen.

8.1. Konvertieren eines Strings in java.util.Date

Um zu konvertieren String zu Objekten Datum Objekte, müssen wir zuerst ein Konstrukt Simple , indem das Muster der Beschreibung der Datums- und Uhrzeitformat - Objekt.

Ein möglicher Wert für das Muster könnte beispielsweise "MM-TT-JJJJ" oder "JJJJ-MM-TT" sein. Als nächstes müssen wir die Analysemethode aufrufen , die den String übergibt .

Der als Argument übergebene String sollte dasselbe Format wie das Muster haben. Andernfalls wird zur Laufzeit eine ParseException ausgelöst:

@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. Konvertieren von String zu java.time.LocalDateTime

LocalDateTime ist ein unveränderliches Datums- / Uhrzeitobjekt , das eine Zeit darstellt, die häufig als Jahr-Monat-Tag-Stunde-Minute-Sekunde angesehen wird.

Um String-Objekte in LocalDateTime- Objekte zu konvertieren , können Sie einfach die Analyse- API verwenden:

@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); }

Der String muss eine gültige Zeit gemäß java.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME darstellen. Andernfalls wird zur Laufzeit eine ParseException ausgelöst.

Zum Beispiel repräsentiert ' 2011-12-03 ' ein gültiges Zeichenfolgenformat mit 4 Ziffern für das Jahr, 2 Ziffern für den Monat für ein Jahr und 2 Ziffern für den Tag des Monats.

9. Fazit

In diesem kurzen Tutorial haben wir verschiedene Dienstprogrammmethoden zum Konvertieren von S tring- Objekten in verschiedene Datentypen behandelt, die in Java unterstützt werden.

Der vollständige Quellcode und alle Codefragmente für diesen Artikel sind auf GitHub verfügbar.