Pretvorbe Java niza

1. Pregled

U ovom brzom članku istražit ćemo neke jednostavne pretvorbe Niz objekte različitim vrstama podataka koje podržava Java.

2. Pretvaranje Niz do int ili Cijeli broj

Ako trebamo pretvoriti a Niz do primitivnog int ili Cijeli broj omotača, možemo koristiti bilo parseInt () ili vrijednost() API-ji za dobivanje odgovarajućeg int ili Cijeli broj povratna vrijednost:

@Test public void whenConvertedToInt_thenCorrect () {String beforeConvStr = "1"; int afterConvInt = 1; assertEquals (Integer.parseInt (beforeConvStr), afterConvInt); } @Test public void whenConvertedToInteger_thenCorrect () {String beforeConvStr = "12"; Cijeli broj nakonConvInteger = 12; assertEquals (Integer.valueOf (beforeConvStr) .equals (afterConvInteger), true); }

3. Pretvaranje Niz do dugo ili Dugo

Ako trebamo pretvoriti a Niz do primitivnog dugo ili Dugo omot, možemo koristiti parseLong () ili vrijednost() odnosno:

@Test public void whenConvertedTolong_thenCorrect () {String beforeConvStr = "12345"; dugo nakonConvLongPrimitive = 12345; assertEquals (Long.parseLong (beforeConvStr), afterConvLongPrimitive); } @Test public void whenConvertedToLong_thenCorrect () {String beforeConvStr = "14567"; Dugo nakon ConvLong = 14567l; assertEquals (Long.valueOf (beforeConvStr) .equals (afterConvLong), true); }

4. Pretvaranje Niz do dvostruko ili Dvostruko

Ako trebamo pretvoriti a Niz do primitivnog dvostruko ili Dvostruko omot, možemo koristiti parseDouble () ili vrijednost() odnosno:

@Test public void whenConvertedTodouble_thenCorrect () {String beforeConvStr = "1.4"; dvostruko afterConvDoublePrimitive = 1,4; assertEquals (Double.parseDouble (beforeConvStr), afterConvDoublePrimitive, 0,0); } @Test public void whenConvertedToDouble_thenCorrect () {String beforeConvStr = "145.67"; dvostruko afterConvDouble = 145,67d; assertEquals (Double.valueOf (beforeConvStr) .equals (afterConvDouble), true); }

5. Pretvaranje Niz do ByteArray

Da bi se pretvorio Niz u bajtni niz, getBytes () kodira Niz u slijed bajtova koristeći zadani skup znakova platforme, spremajući rezultat u novi niz bajtova.

Ponašanje getBytes () nije određeno kada je prošao Niz ne može se kodirati pomoću zadanog znaka. Prema java dokumentaciji, klasa java.nio.charset.CharsetEncoder trebala bi se koristiti kada je potrebna veća kontrola nad postupkom kodiranja:

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

6. Pretvaranje Niz do CharArray

Da bi se pretvorio Niz do a CharArray primjerice, možemo jednostavno koristiti toCharArray ():

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

7. Pretvaranje Niz do boolean ili Booleova

Za pretvaranje a Niz primjer primitivnom boolean ili Booleova omot, možemo koristiti parseBoolean () ili vrijednost() API-ji:

@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. Pretvaranje Niz do Datum ili LocalDateTime

Java 6 pruža java.util.Datum tip podataka za predstavljanje datuma. Java 8 predstavila je nove API-je za Datum i Vrijeme rješavati nedostatke starijih java.util.Datum i java.util.Kalendar.

Za više pojedinosti možete pročitati ovaj članak.

8.1. Pretvaranje Niz do java.util.Datum

Da bi se pretvorilo Niz prigovara se Datum objekte, prvo moramo konstruirati a SimpleDateFormat objekt prosljeđivanjem uzorka koji opisuje format datuma i vremena.

Na primjer, moguća vrijednost za uzorak može biti "MM-dd-yyyy" ili "yyyy-MM-dd". Dalje, moramo se pozvati raščlaniti metoda donošenja Niz.

The Niz proslijeđen kao argument trebao bi biti u istom formatu kao i obrazac. Inače, a ParseException bit će bačen za vrijeme izvođenja:

@Test public void whenConvertedToDate_thenCorrect () baca ParseException {String beforeConvStr = "15/10/2013"; int afterConvCalendarDay = 15; int afterConvCalendarMonth = 9; int afterConvCalendarYear = 2013; SimpleDateFormat formatter = novi SimpleDateFormat ("dd / M / yyyy"); Datum afterConvDate = formatter.parse (beforeConvStr); Kalendar kalendara = novi 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. Pretvaranje Niz do java.time.LocalDateTime

LocalDateTime je nepromjenjivi objekt datum-vrijeme koji predstavlja vrijeme, često promatrano kao godina-mjesec-dan-sat-minuta-sekunda.

Da bi se String objekti pretvorili u LocalDateTime objekte, možemo jednostavno koristiti raščlaniti API:

@Test public void whenConvertedToLocalDateTime_thenCorrect () {String str = "2007-12-03T10: 15: 30"; int afterConvCalendarDay = 03; Mjesec nakonConvCalendarMonth = Mjesec.DECEMBAR; int afterConvCalendarYear = 2007; LocalDateTime afterConvDate = new UseLocalDateTime (). GetLocalDateTimeUsingParseMethod (str); assertEquals (afterConvDate.getDayOfMonth (), afterConvCalendarDay); assertEquals (afterConvDate.getMonth (), afterConvCalendarMonth); assertEquals (afterConvDate.getYear (), afterConvCalendarYear); }

The Niz mora predstavljati valjano vrijeme prema java.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME. Inače, a ParseException bit će bačen za vrijeme izvođenja.

Na primjer '2011-12-03'Predstavlja važeći format niza koji ima 4 znamenke za godinu, 2 znamenke za mjesec za godinu i 2 znamenke za dan u mjesecu.

9. Zaključak

U ovom smo brzom vodiču pokrili različite korisne metode za pretvaranje String objekte različitim vrstama podataka koje podržava Java.

Kompletni izvorni kod i svi isječci koda za ovaj članak dostupni su na GitHubu.