Conversioni di stringhe Java

1. Panoramica

In questo rapido articolo, esploreremo alcune semplici conversioni di oggetti String in diversi tipi di dati supportati in Java.

2. Conversione di String in int o Integer

Se è necessario convertire una stringa in un tipo di wrapper int o Integer primitivo , è possibile utilizzare le API parseInt () o valueOf () per ottenere il valore restituito int o Integer corrispondente :

@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. Conversione da stringa a lungo o lungo

Se abbiamo bisogno di convertire uno stringa di primitiva lungo o lungo involucro tipo, possiamo usare parseLong () o valueOf () , rispettivamente:

@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. Conversione di String in double o Double

Se abbiamo bisogno di convertire uno stringa di primitiva doppio o doppio tipo di involucro, possiamo usare parseDouble () o valueOf () , rispettivamente:

@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. Conversione della stringa in ByteArray

Per convertire una stringa in un array di byte, getBytes () codifica la stringa in una sequenza di byte utilizzando il set di caratteri predefinito della piattaforma, memorizzando il risultato in un nuovo array di byte.

Il comportamento di getBytes () non è specificato quando la stringa passata non può essere codificata utilizzando il set di caratteri predefinito. Secondo la documentazione java, la classe java.nio.charset.CharsetEncoder dovrebbe essere utilizzata quando è richiesto un maggiore controllo sul processo di codifica:

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

6. Conversione di String in CharArray

Per convertire una String in un'istanza CharArray , possiamo semplicemente usare toCharArray () :

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

7. Conversione di una stringa in booleano o booleano

Per convertire una stringa esempio per primitiva booleano o booleano tipo involucro, possiamo usare parseBoolean () o valueOf () API, rispettivamente:

@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. Conversione della stringa in Date o LocalDateTime

Java 6 fornisce il tipo di dati java.util.Date per rappresentare le date. Java 8 ha introdotto nuove API per data e ora per risolvere le carenze dei vecchi java.util.Date e java.util.Calendar .

Puoi leggere questo articolo per maggiori dettagli.

8.1. Conversione di String in java.util.Date

Per convertire oggetti String in oggetti Date , dobbiamo prima costruire un oggetto SimpleDateFormat passando il modello che descrive il formato di data e ora.

Ad esempio, un possibile valore per pattern potrebbe essere "MM-dd-yyyy" o "yyyy-MM-dd". Successivamente, dobbiamo invocare il metodo di analisi passando il String .

La stringa passata come argomento dovrebbe essere nello stesso formato del modello. In caso contrario, verrà lanciata una ParseException in fase di esecuzione:

@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. Conversione di String in java.time.LocalDateTime

LocalDateTime è un oggetto data-ora immutabile che rappresenta un'ora, spesso vista come anno-mese-giorno-ora-minuto-secondo.

Per convertire oggetti String in oggetti LocalDateTime , possiamo semplicemente utilizzare l' API di analisi :

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

La stringa deve rappresentare un'ora valida secondo java.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME. In caso contrario, verrà generata una ParseException in fase di esecuzione.

Ad esempio " 2011-12-03 " rappresenta un formato stringa valido con 4 cifre per l'anno, 2 cifre per il mese per un anno e 2 cifre per il giorno del mese.

9. Conclusione

In questo breve tutorial, abbiamo coperto diversi metodi di utilità per la conversione di oggetti S tring in diversi tipi di dati supportati in java.

Il codice sorgente completo e tutti i frammenti di codice per questo articolo sono disponibili su GitHub.