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

מחרוזות ג'אווה

פורסם בקבוצה

מה זה מחרוזת ב-Java?

בתכנות, נעשה שימוש נפוץ מאוד במחרוזות. מחרוזת ב-java היא אובייקט המייצג רצף של תווים המגובה על ידי מערך char. מחלקת מחרוזת ניתנת לשינוי ב-Java ומטמיעה ממשקים Comparable , Serializable ו- CharSequence . בואו נסתכל על דוגמה כדי להבין.
String str = "string"
כאן str הוא הרצף של 6 תווים שהם s, t, r, i, n ו-g.
אינדקס מערך Char 0 1 2 3 4 5
ערך ס ט ר אני נ ז
כתובת זיכרון 0x12824 0x12825 0x12826 0x12827 0x12828 0x12829
כפי שאנו יודעים כעת, המערך אינו ניתן לשינוי, מה שאומר שלא ניתן לשנות אותו לאחר האתחול, לכן המחרוזת ניתנת לשינוי גם כן.

דרכים לאתחול מחרוזות

ישנן שתי דרכים לאתחל מחרוזת.
  1. מילות מיתר
  2. מפעיל חדש

מחרוזת מילולית

הדרך הקלה והישירה ביותר להכריז על מחרוזת משמשת בדוגמה לעיל. בכל פעם שהמהדר מפרש מחרוזת מילולית, היא תמיד מומרת לאובייקט String.
String str = "string";

מפעיל חדש

אנו יכולים גם לאתחל מחרוזת באמצעות האופרטור החדש.
String strNew = new String("using new operator");

דוגמא

import java.io.*;
import java.lang.*;

class StringInitializationExample {
    public static void main(String[] args)
    {
        //declare java string with a string literal
        String str = "a string literal";

        System.out.println("String str = " + str);

        //declare string using new operator
        String strNew = new String("using new operator");

        System.out.println("String strNew = " + strNew);
    }
}

תְפוּקָה

String str = מחרוזת מילולית String strNew = באמצעות אופרטור חדש

String vs StringBuilder vs StringBuffer

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

סיבה

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

StringBuffer

מחרוזת היא ייצוג של רצף של תווים בלתי ניתן לשינוי, אך StringBuffer הוא רצף של תווים שניתן לשינוי . הוא משתמש ברוב שיטות המחלקה String יחד עם כמה מתודות משלה כדי לשנות את התוכן ורצף התווים. זה בטוח בשרשור מכיוון שהשיטות שלו מסונכרנות לשימוש על ידי שרשורים מרובים, תוך שמירה על הסדר הטורי. הוא מיישם את ממשקי Serializable , Appendable ו- CharSequence .

תחביר

StringBuffer str = new StringBuffer("Happy Java Programming");

StringBuilder

StringBuilder מייצג גם את רצף התווים הניתנים לשינוי. הוא מספק API, התואם למחלקה StringBuffer אך אינו בטוח לשרשור. אז איפה שלא מעורבים שרשורים מרובים, עדיף ללכת עם המחלקה StringBuilder מכיוון שהיא מהירה יותר ממחלקת StringBuffer במקרים רבים. שיטות המפתח של מחלקה זו הן הוספה והוספה. זה גם מיישם את ממשקי Serializable , Appendable ו- CharSequence .

תחביר

StringBuilder str = new StringBuilder("Happy Java Programming");

פעולות מחרוזת

בג'אווה נוכל לבצע פעולות מחרוזות כמו שרשור , השוואה , פיצול , מציאת אורך , החלפת מחרוזות וכן הלאה.

שיטות מחרוזות

המחלקה Java String מספקת שיטות שונות למניפולציה של המחרוזות או לביצוע הפעולות המפורטות לעיל. בואו נסתכל בטבלה למטה עבור כמה משיטות המחרוזות הללו.
שיטות תיאור
Char charAt(int index) הוא מחזיר את ערך ה-char במדד המסופק.
String concat(String str) הוא מחזיר מחרוזת על ידי שילוב של מחרוזת שצוינה לסוף המחרוזת הזו.
boolean contains(CharSequence s) הוא מחזיר true אם המחרוזת מכילה רצף מוגדר של ערכי char.
תוכן בוליאני שווה (CharSequence cs) זה מתאים למחרוזת עם רצף התווים שסופק.
תוכן בוליאניEquals(StringBuffer sb) הוא תואם את המחרוזת למאגר המחרוזת שסופק.
Boolean endsWith(סיומת מחרוזת) זה משווה את קצה המחרוזת עם הסיומת שסופקה.
בוליאני שווה (Object anObject) זה תואם את המחרוזת לאובייקט שסופק.
Boolean equalsIgnoreCase(String anotherString) שיטה זו משווה בין שתי מחרוזות מבלי לקחת בחשבון את רגישות המקרים.
תבנית מחרוזת סטטית (פורמט מחרוזת, אובייקט... args) הוא מחזיר את המחרוזת המעוצבת באמצעות הפורמט שסופק והארגומנטים.
byte getBytes() שיטה זו משתמשת בערכת התווים המוגדרת כברירת מחדל של הפלטפורמה לקידוד המחרוזת לרצף של בתים, אשר מאוחסן לאחר מכן במערך בתים חדש.
void getChars(int begin, int end, char[] dst, int dstBegin) הוא מעתיק את התווים מהמחרוזת אל מערך תווי היעד.
int hashCode() זה מחזיר את קוד ה-hash עבור המחרוזת.
int indexOf(int ch) הוא מחזיר את האינדקס עבור התו שצוין המופיע ראשון מהמחרוזת.
int indexOf(int ch, int fromIndex) הוא מחזיר את האינדקס עבור התו שצוין שמתרחש לראשונה החל מהאינדקס שסופק במחרוזת זו.
int indexOf(String str) הוא מחפש את המחרוזת המשנה שסופקה במחרוזת ומחזיר את האינדקס בהתרחשות הראשונה.
int indexOf(String str, int fromIndex) הוא מתחיל לחפש את המחרוזת המשנה שסופקה במחרוזת מהאינדקס הנתון ומחזיר את האינדקס בהתרחשות הראשונה.
String intern() שיטה זו מחזירה את הייצוג הקנוני של המחרוזת.
int lastIndexOf(int ch) שיטה זו מחפשת את התו שסופק במחרוזת ומחזירה את האינדקס של ההתרחשות האחרונה.
int lastIndexOf(int ch, int fromIndex) שיטה זו מחפשת אחורה מהאינדקס הנתון עבור התו שסופק במחרוזת ומחזירה את האינדקס של ההתרחשות האחרונה.
int lastIndexOf(String str) שיטה זו מחפשת את המחרוזת המשנה שסופקה במחרוזת ומחזירה את האינדקס של ההתרחשות האחרונה.
int lastIndexOf(String str, int fromIndex) שיטה זו מחפשת אחורה מהאינדקס הנתון אחר המחרוזת המשנה שסופקה במחרוזת ומחזירה את האינדקס של ההתרחשות האחרונה.
int length() שיטה זו מחזירה את אורך המחרוזת.
התאמות בוליאניות (מחרוזת רגילה) הוא מחזיר נכון או לא נכון על ידי התאמת המחרוזת לביטוי הרגולרי שסופק.
String replace(char oldValue, char newValue) שיטה זו מחזירה מחרוזת לאחר החלפת כל ה-oldValue שסופק ב-newValue במחרוזת.
String[] split(String regex) שיטה זו מוצאת את כל ההתאמות לפי הביטוי הרגולרי המסופק במחרוזת ומפצלת אותו סביב התאמות אלו.
boolean startsWith(תחילית מחרוזת) הוא מחזיר נכון או לא נכון על ידי בדיקת המחרוזת להתחיל עם הקידומת שסופקה.
מחרוזת משנה (int beginIndex) שיטה זו מחזירה מחרוזת שהיא המחרוזת המשנה של מחרוזת זו.
מחרוזת toLowerCase() זה ממיר את כל התווים של המחרוזת לאותיות קטנות באמצעות הכללים של מקום ברירת המחדל.
חיתוך מחרוזת() שיטה זו מסירה את כל הרווחים הלבנים המובילים והנגררים מהמחרוזת ומחזירה אותו.
סטטי מחרוזת valueOf(char c) הוא מחזיר את ייצוג המחרוזת של ארגומנט ה-char.
כעת בעזרת מספר דוגמאות, נראה כיצד להשתמש בהן.

דוגמא

import java.io.*;
import java.lang.*;

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

    //create a string
    String greeting = "Hello! World";
    System.out.println("String: " + greeting);

    //getting the length of greeting object
    int length = greeting.length();
    System.out.println("Length: " + length);

    //create first string
    String first = "Java ";
    System.out.println("First String: " + first);

    //create second string
    String second = "Programming";
    System.out.println("Second String: " + second);

    //joining two strings
    String joinedString = first.concat(second);
    System.out.println("Joined String: " + joinedString);

    String jpf = "Java programming";
    String jps = "Java programming";
    String jpt = "Python programming";

    //compare jpf and jps strings
    boolean result1 = jpf.equals(jps);
    System.out.println("Strings jpf and jps are equal: " + result1);

    //compare jpf and jpt strings
    boolean result2 = jpf.equals(jpt);
    System.out.println("Strings jpf and jpt are equal: " + result2);

    //converting jpf to uppercase
    System.out.println("Upper case jpf: " + jpf.toUpperCase());

    //replacing g character with v in jpf
    System.out.println("Replacing g with v in jpf: "+jpf.replace("g", "v"));
  }
}

תְפוּקָה

מחרוזת: שלום! אורך עולם: 12 מחרוזת ראשונה: Java מחרוזת שנייה: תכנות מחרוזת מצטרפת: Java תכנות מחרוזות jpf ו-jps שווים: אמת מחרוזות jpf ו-jpt שווים: false אותיות רישיות jpf: JAVA PROGRAMMING החלפת g ב-v ב-jpf: java provramminv

סיכום

אנו מקווים שבינתיים אתה מבין מה הם מחרוזות ב-Java, המחלקות שלה וכיצד ליישם את השיטות השונות שלה. אל תהסס להתאמן ולחזור בכל פעם שתזדקק לסיוע נוסף. למידה מהנה!
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION