Conversões de seqüência de caracteres Java

Conversões de seqüência de caracteres Java

*1. Visão geral *

Neste artigo rápido, exploraremos algumas conversões simples de objetos String em diferentes tipos de dados suportados em Java.

===* 2. Convertendo String em int ou Integer *

Se precisarmos converter um String para o tipo de wrapper int ou Integer primitivo, podemos usar as APIs parseInt () _ ou _valueOf () _ para obter o valor de retorno _int ou Integer correspondente:

@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. Convertendo String em long ou Long *

Se precisarmos converter um String para o tipo de wrapper long ou Long primitivo, podemos usar _parseLong () _ ou _valueOf () _ respectivamente:

@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. Convertendo String em double ou Double *

Se precisarmos converter um String para o tipo de wrapper primitivo double ou Double, podemos usar _parseDouble () _ ou _valueOf () _ respectivamente:

@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. Convertendo String em ByteArray *

Para converter um String em uma matriz de bytes, getBytes () _ codifica a _String em uma sequência de bytes usando o conjunto de caracteres padrão da plataforma, armazenando o resultado em uma nova matriz de bytes.

O comportamento de getBytes () _ não é especificado quando o _String passado não pode ser codificado usando o conjunto de caracteres padrão. De acordo com o java documentation, o https://docs.oracle.com/javase/7/docs/A classe api/java/nio/charset/CharsetEncoder.html [[s1] # java.nio.charset.CharsetEncoder #] deve ser usada quando for necessário mais controle sobre o processo de codificação:

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

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

===* 6. Convertendo String em CharArray *

Para converter uma String em uma instância CharArray, podemos simplesmente usar _toCharArray () _:

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

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

===* 7. Convertendo String em boolean ou Boolean *

Para converter uma instância String para o tipo de wrapper boolean ou Boolean primitivo, podemos usar as APIs _parseBoolean () _ ou _valueOf () _ respectivamente:

@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. Convertendo String em Date ou LocalDateTime *

O Java 6 fornece o tipo de dados java.util.Date para representar datas. O Java 8 introduziu novas APIs para Date e Time para solucionar as deficiências dos java.util.Date e java.util.Calendar mais antigos.

Você pode ler o link:/java-8-date-time-intro [este] artigo para obter mais detalhes.

8.1. Convertendo String em java.util.Date*

Para converter objetos String em objetos Date, precisamos primeiro construir um objeto SimpleDateFormat passando o padrão que descreve o formato de data e hora.

Por exemplo, um possível valor para o padrão pode ser "MM-dd-aaaa" ou "aaaa-MM-dd". Em seguida, precisamos invocar o método parse passando o String.

O String passado como argumento deve estar no mesmo formato que o padrão. Caso contrário, uma ParseException será lançada no tempo de execução:

@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. Convertendo String em java.time.LocalDateTime *

_ [. s1] # LocalDateTime # _ é um objeto de data e hora imutável que representa uma hora, geralmente vista como ano-mês-dia-hora-hora-minuto-segundo.

Para converter objetos String em objetos LocalDateTime, podemos simplesmente usar a API parse:

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

O String deve representar um tempo válido de acordo com [.s1] https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#ISO_LOCAL_DATE_TIME [java.time.format .DateTimeFormatter.ISO_LOCAL_DATE_TIME] [. S2] ##. Caso contrário, uma ParseException será lançada em tempo de execução.

[.s2]#For example ‘2011-12-03‘ represents a valid string format having 4 digits for the year, 2 digits for the month for a year and 2 digits for the day of the month#.

===* 9. Conclusão*

Neste tutorial rápido, abordamos diferentes métodos de utilidade para converter objetos String em diferentes tipos de dados suportados em java.

O código fonte completo e todos os trechos de código deste artigo estão disponíveis over no GitHub.