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.