המרות מיתרי Java

1. סקירה כללית

במאמר מהיר זה נחקור כמה המרות פשוטות של חוּט אובייקטים לסוגי נתונים שונים הנתמכים בג'אווה.

2. המרה חוּט ל int אוֹ מספר שלם

אם עלינו להמיר א חוּט לפרימיטיבי int אוֹ מספר שלם סוג עטיפה, אנו יכולים להשתמש ב- parseInt () אוֹ ערך של() ממשקי API כדי לקבל את המקביל int אוֹ מספר שלם ערך החזרה:

@ מבחן ציבורי בטל whenConvertedToInt_thenCorrect () {String beforeConvStr = "1"; int afterConvInt = 1; assertEquals (Integer.parseInt (beforeConvStr), afterConvInt); } @Test ציבורי בטל whenConvertedToInteger_thenCorrect () {String beforeConvStr = "12"; מספר שלם לאחר קונבנט שלם = 12; assertEquals (Integer.valueOf (beforeConvStr) .equals (afterConvInteger), נכון); }

3. המרה חוּט ל ארוך אוֹ ארוך

אם עלינו להמיר א חוּט לפרימיטיבי ארוך אוֹ ארוך סוג עטיפה, נוכל להשתמש בהם parseLong () אוֹ ערך של() בהתאמה:

@ מבחן ציבורי בטל whenConvertedTolong_thenCorrect () {String beforeConvStr = "12345"; הרבה אחרי ConvLongPrimitive = 12345; assertEquals (Long.parseLong (beforeConvStr), afterConvLongPrimitive); } @Test ציבורי בטל whenConvertedToLong_thenCorrect () {String beforeConvStr = "14567"; זמן רב לאחר ConvLong = 14567l; assertEquals (Long.valueOf (beforeConvStr) .equals (afterConvLong), נכון); }

4. המרה חוּט ל לְהַכפִּיל אוֹ לְהַכפִּיל

אם עלינו להמיר א חוּט לפרימיטיבי לְהַכפִּיל אוֹ לְהַכפִּיל סוג עטיפה, נוכל להשתמש בהם parseDouble () אוֹ ערך של() בהתאמה:

@ מבחן ציבורי בטל whenConvertedTodouble_thenCorrect () {String beforeConvStr = "1.4"; כפול afterConvDoublePrimitive = 1.4; assertEquals (Double.parseDouble (beforeConvStr), afterConvDoublePrimitive, 0.0); } @Test ציבורי בטל whenConvertedToDouble_thenCorrect () {String beforeConvStr = "145.67"; כפול afterConvDouble = 145.67d; assertEquals (Double.valueOf (beforeConvStr) .equals (afterConvDouble), נכון); }

5. המרה חוּט ל ByteArray

על מנת להמיר א חוּט למערך בתים, getBytes () מקודד את חוּט לרצף של בתים המשתמשים בערכת ברירת המחדל של הפלטפורמה, ושומרים את התוצאה במערך בתים חדש.

ההתנהגות של getBytes () אינו מוגדר כאשר עבר חוּט לא ניתן לקודד באמצעות ערכת ברירת המחדל. בהתאם לתיעוד Java, יש להשתמש במחלקה java.nio.charset.CharsetEncoder כאשר נדרשת שליטה רבה יותר בתהליך הקידוד:

@Test ציבורי בטל whenConvertedToByteArr_thenCorrect () {String beforeConvStr = "abc"; בתים [] afterConvByteArr = בתים חדשים [] {'a', 'b', 'c'}; assertEquals (Arrays.equals (beforeConvStr.getBytes (), afterConvByteArr), נכון); }

6. המרה חוּט ל CharArray

על מנת להמיר א חוּט אל א CharArray למשל, אנחנו יכולים פשוט להשתמש toCharArray ():

@ מבחן ציבורי בטל whenConvertedToCharArr_thenCorrect () {String beforeConvStr = "שלום"; char [] afterConvCharArr = {'h', 'e', ​​'l', 'l', 'o'}; assertEquals (Arrays.equals (beforeConvStr.toCharArray (), afterConvCharArr), נכון); }

7. המרה חוּט ל בוליאני אוֹ בוליאני

להמיר א חוּט למשל לפרימיטיבי בוליאני אוֹ בוליאני סוג עטיפה, נוכל להשתמש בהם parseBoolean () אוֹ ערך של() ממשקי API בהתאמה:

@ מבחן ציבורי בטל whenConvertedToboolean_thenCorrect () {String beforeConvStr = "true"; afterConvBooleanPrimitive בוליאני = נכון; assertEquals (בוליאני.parseBoolean (לפני ConvvStr), אחרי ConvBooleanPrimitive); } @Test ציבורי בטל whenConvertedToBoolean_thenCorrect () {String beforeConvStr = "true"; בוליאני afterConvBoolean = נכון; assertEquals (Boolean.valueOf (beforeConvStr), afterConvBoolean); }

8. המרה חוּט ל תַאֲרִיך אוֹ LocalDateTime

Java 6 מספק את java.util.Date סוג נתונים לייצוג תאריכים. Java 8 הציגה ממשקי API חדשים עבור תַאֲרִיך ו זְמַן כדי לטפל בחסרונות של המבוגרים java.util.Date ו java.util.Calendar.

לפרטים נוספים תוכלו לקרוא מאמר זה.

8.1. ממיר חוּט ל java.util.Date

על מנת להמיר חוּט חפצים ל תַאֲרִיך אובייקטים, עלינו לבנות תחילה א SimpleDateFormat אובייקט על ידי העברת התבנית המתארת ​​את פורמט התאריך והשעה.

לדוגמא, ערך אפשרי לתבנית יכול להיות "MM-dd-yyyy" או "yyyy-MM-dd". לאחר מכן עלינו להפעיל לְנַתֵחַ שיטה עוברת חוּט.

ה חוּט שהועבר כוויכוח צריך להיות באותה תבנית כמו התבנית. אחרת, א ParseException יושלך בזמן הריצה:

@Test ציבורי בטל כאשר ConvertedToDate_thenCorrect () זורק ParseException {String beforeConvStr = "15/10/2013"; int afterConvCalendarDay = 15; int afterConvCalendarMonth = 9; int afterConvCalendarYear = 2013; מעצב SimpleDateFormat = חדש SimpleDateFormat ("dd / M / yyyy"); תאריך afterConvDate = formatter.parse (beforeConvStr); לוח שנה לוח שנה = לוח שנה גרגוריאני חדש (); 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. ממיר חוּט ל java.time.LocalDateTime

LocalDateTime הוא אובייקט תאריך-זמן בלתי-משתנה המייצג זמן, לעיתים קרובות נתפס כשנה-חודש-יום-שעה-דקה-שנייה.

על מנת להמיר אובייקטים מחרוזת ל- LocalDateTime אנו יכולים פשוט להשתמש ב לְנַתֵחַ ממשק API:

@Test ציבורי בטל כאשרConvertedToLocalDateTime_thenCorrect () {String str = "2007-12-03T10: 15: 30"; int afterConvCalendarDay = 03; חודש afterConvCalendarMonth = חודש. דצמבר; int afterConvCalendarYear = 2007; LocalDateTime afterConvDate = UseLocalDateTime חדש (). GetLocalDateTimeUsingParseMethod (str); assertEquals (afterConvDate.getDayOfMonth (), afterConvCalendarDay); assertEquals (afterConvDate.getMonth (), afterConvCalendarMonth); assertEquals (afterConvDate.getYear (), afterConvCalendarYear); }

ה חוּט חייב לייצג זמן תקף על פי java.time.format.DateTimeFormatter.ISO_LOCAL_DATE_TIME. אחרת, א ParseException יושלך בזמן הריצה.

לדוגמה '2011-12-03'מייצג פורמט מחרוזת תקף בעל 4 ספרות לשנה, 2 ספרות לחודש לשנה ו -2 ספרות ליום החודש.

9. מסקנה

במדריך מהיר זה, כיסינו שיטות שימושיות שונות להמרת Sטרינג אובייקטים לסוגי נתונים שונים הנתמכים ב- Java.

קוד המקור השלם וכל קטעי הקוד למאמר זה זמינים באתר GitHub.


$config[zx-auto] not found$config[zx-overlay] not found