CodeGym /בלוג Java /Random-HE /שרשור מחרוזות ב-Java
John Squirrels
רָמָה
San Francisco

שרשור מחרוזות ב-Java

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

שיטת concat().

שיטת Concat() מוסיפה את המחרוזת שצוינה בסוף המחרוזת הנתונה ואז מחזירה ואז מחזירה מחרוזת חדשה שנוצרה. בטח שאנחנו יכולים להשתמש בשיטת concat() כדי לחבר שלוש מחרוזות או יותר.

חתימת שיטת concat()


public String concat(String str)
השיטה משרשרת את המחרוזת str בסוף המחרוזת הנוכחית. לדוגמה:

String s1 =Hello; 
s1.concat("World")
מחזיר מחרוזת חדשה "Hello World".

דוגמה לשיטת Concat()

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

public class ConcatTest {

    public static void main(String[] args) {
        //String concat with concat() method 
        String string1 = "I learn ";
        String string2 = "concatenation in Java";
        //here we use concat() method to join the two strings above
        String result = string1.concat(string2);
        System.out.println(result);
        //concat() method to join 4 strings
        String myWebSite = "Code".concat("Gym").concat(".cc").concat("/quest");
        System.out.println(myWebSite); // here we've got  "CodeGym.cc/quest"

        System.out.println(myMessage(true));
        System.out.println(myMessage(false));
    }

    private static String myMessage(boolean b) {   //concat() method with selection statement 
        return "I have".concat(b ? " " : "n't ").concat("got it");
    }

}
הפלט הוא:
אני לומד שרשור ב-Java CodeGym.cc/quest יש לי את זה אין לי
חשוב לדעת שהמתודה concat() לא משנה את המחרוזת, אלא יוצרת מחרוזת חדשה כתוצאה ממיזוג הנוכחי וזו שהועבר כפרמטר. אז השיטה מחזירה אובייקט String חדש , בגלל זה אתה יכול ליצור שרשראות ארוכות כל כך של String concat.

שרשור באמצעות אופרטורים עמוסים מדי "+" ו-"+="

אתה יכול להשתמש בשני האופרטורים האלה באותו אופן כמו עם מספרים. הם עובדים בדיוק כמו concat() . בואו נשרשר את המחרוזת "קוד" ואת המחרוזת "חדר כושר".

public class StringConcat {
   public static void main(String[] args) {

       String myString = "Code" + "Gym";
       myString+= ".cc";
       System.out.println(myString);
   }
}
בדרך כלל ג'אווה אינה מאפשרת פעולות עומס יתר עבור מחלקות משתמש, אך שני האופרטורים הללו פועלים כעומס יתר. אולי תחשוב שבתוך האופרטור + מסתתר concat() , אבל למעשה, כאן נעשה שימוש במנגנון אחר. אם נסתכל על bytecode של תוכנית Java, נראה ש- StringBuilder נוצר ונעשה שימוש בשיטת append() שלו. מהדר Java רואה את האופרטור "+" ומבין שהאופרנדים הם מחרוזות, לא טיפוסים פרימיטיביים. אז זה עובד כמו קונצרט.

public class StringTest2 {

   public static void main(String[] args) {

       String hello = "hello";
       String world = " world!";

       String helloworld = (new StringBuilder().append(hello).append(world).toString());
       System.out.println(helloworld);
       //this is the same as:
       String result = hello + world;
   }
}

Concat(0) או + ?

אם אתה צריך למזג מחרוזות פעם אחת בלבד, השתמש בשיטת concat() . בכל שאר המקרים, עדיף להשתמש באופרטור + או Stringbuffer / StringBuilder . כמו כן, האופרטור + משמש להמרת טיפוסים. אם אחד מהאופרנדים שווה, למשל, המספר והשני הוא מחרוזת, אז ביציאה נקבל מחרוזת. דוגמא:

public class StringConcat {
   public static void main(String[] args) {
       int myInt = 5;
       String myString = " days";

       System.out.println(myInt + myString);
       boolean b = (myInt + myString) instanceof String;
       System.out.println(b);
   }
}
השתמשנו ב- instanceof כדי לבדוק אם (myInt + myString) מחרוזת. להלן הפלט של תוכנית זו:
5 ימים נכון
שים לב גם שהאופרטור + ו- concat() פועלים אחרת אם אחת מהמחרוזות היא null. אם אחד מהאופרנדים בעת שימוש באופרטור + או += הוא רק אחד - מחרוזת, אז, כפי שכבר אמרנו, מתרחשת המרת סוג. כך גם לגבי null. רק נקבל מחרוזת חדשה:

public class StringConcat {
   public static void main(String[] args) {

       String myString = "book ";
       System.out.println(myString + null);
       System.out.println((myString + null) instanceof String);
   }
}
הפלט הוא:
ספר null נכון
אם נחיל את השיטה concat() עבור אותה פעולה, נקבל NullPointerException .

public class StringConcat {
   public static void main(String[] args) {

       String myString = "book ";
       System.out.println(myString.concat(null));

   }
}
הפלט הוא:
חריגה בשרשור "ראשי" java.lang.NullPointerException ב-java.base/java.lang.String.concat(String.java:1972) ב-StringConcat.main(StringConcat.java:6)
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION