Konversi String Java

1. Ikhtisar

Dalam artikel singkat ini, kita akan mempelajari beberapa konversi sederhana dari objek String ke tipe data berbeda yang didukung di Java.

2. Mengubah String menjadi int atau Integer

Jika kita perlu mengonversi String menjadi tipe pembungkus primitif int atau Integer , kita bisa menggunakan API parseInt () atau valueOf () untuk mendapatkan nilai kembalian int atau Integer yang sesuai :

@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. Mengubah String menjadi panjang atau Panjang

Jika kita perlu mengonversi String menjadi primitive long atau Long wrapper type, kita bisa menggunakan parseLong () atau valueOf () masing-masing:

@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. Mengubah String menjadi double atau Double

Jika kita perlu mengonversi String menjadi primitive double atau Double wrapper type, kita bisa menggunakan parseDouble () atau valueOf () masing-masing:

@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. Mengubah String menjadi ByteArray

Untuk mengubah String menjadi array byte, getBytes () mengkodekan String ke dalam urutan byte menggunakan charset default platform, menyimpan hasilnya ke dalam array byte baru.

Perilaku getBytes () tidak ditentukan saat String yang diteruskan tidak dapat dienkode menggunakan charset default. Sesuai dengan dokumentasi java, kelas java.nio.charset.CharsetEncoder harus digunakan ketika kontrol lebih besar atas proses pengkodean diperlukan:

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

6. Mengubah String menjadi CharArray

Untuk mengonversi String menjadi instance CharArray , kita cukup menggunakan toCharArray () :

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

7. Mengubah String menjadi boolean atau Boolean

Untuk mengonversi instance String menjadi tipe pembungkus boolean atau Boolean primitif , kita dapat menggunakan API parseBoolean () atau 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. Mengubah String menjadi Date atau LocalDateTime

Java 6 menyediakan tipe data java.util.Date untuk merepresentasikan tanggal. Java 8 memperkenalkan API baru untuk Tanggal dan Waktu guna mengatasi kekurangan java.util.Date dan java.util.Calendar .

Anda dapat membaca artikel ini untuk lebih jelasnya.

8.1. Mengonversi String ke java.util.Date

Untuk mengonversi objek String menjadi objek Date , pertama-tama kita perlu membuat objek SimpleDateFormat dengan meneruskan pola yang menjelaskan format tanggal dan waktu.

Misalnya, nilai yang mungkin untuk pola bisa jadi "BB-hh-tttt" atau "tttt-BB-hh". Selanjutnya, kita perlu memanggil metode parse yang meneruskan String .

The String dilewatkan sebagai argumen harus dalam format yang sama seperti pola. Jika tidak, ParseException akan dilempar saat runtime:

@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. Mengonversi String ke java.time.LocalDateTime

LocalDateTime is an immutable date-time object that represents a time, often viewed as year-month-day-hour-minute-second.

In order to convert String objects to LocalDateTime objects, we can simply use the parse 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); }

The String must represent a valid time according to java.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME . Otherwise, a ParseException will be thrown at runtime.

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. Conclusion

Dalam tutorial singkat ini, kami telah membahas berbagai metode utilitas untuk mengonversi objek S tring ke tipe data berbeda yang didukung di java.

Kode sumber lengkap dan semua cuplikan kode untuk artikel ini tersedia di GitHub.