Menu
Coddy logo textTech

השוואת מחרוזות

חלק מהיחידה יסודות במסלול ה-Java של Coddy. שיעור 70 מתוך 73.

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

הנה השיטות העיקריות להשוואת מחרוזות:

  • equals(Object other): משווה את המחרוזת לאובייקט אחר (בדרך כלל מחרוזת אחרת). מחזירה true אם למחרוזות יש את אותם תווים באותו סדר, ו-false אחרת. השיטה הזו רגישה לאותיות רישיות.
  • equalsIgnoreCase(String other): דומה ל־equals, אך מתעלמת מהבדלי רישיות. מחזירה true אם המחרוזות מכילות את אותם התווים, בלי קשר לרישיות שלהם, ואחרת מחזירה false.
  • compareTo(String other): משווה בין שתי מחרוזות בסדר לקסיקוגרפי (על סמך ערכי ה-Unicode שלהן). מחזירה 0 אם המחרוזות שוות, מספר שלילי אם המחרוזת הראשונה קטנה מהשנייה, ומספר חיובי אם המחרוזת הראשונה גדולה מהשנייה. שיטה זו רגישה לאותיות רישיות וקטנות.
  • compareToIgnoreCase(String other): בדומה ל-compareTo, אך מתעלמת מהבדלי רישיות.

הנה דוגמה:

String str1 = "hello";
String str2 = "hello";
String str3 = "HELLO";
String str4 = "world";

boolean eq1 = str1.equals(str2); // נכון
boolean eq2 = str1.equals(str3); // לא נכון
boolean eq3 = str1.equalsIgnoreCase(str3); // נכון

int cmp1 = str1.compareTo(str2); // 0
int cmp2 = str1.compareTo(str4); // ערך שלילי
int cmp3 = str4.compareTo(str1); // ערך חיובי
int cmp4 = str1.compareToIgnoreCase(str3); // 0
challenge icon

אתגר

קל

צרו מתודה בשם compareStrings שמקבלת שתי מחרוזות כקלט ומבצעת את ההשוואות הבאות:

  1. בודקת אם שתי המחרוזות שוות באמצעות equals ומדפיסה את התוצאה.
  2. בודקת אם שתי המחרוזות שוות (ללא התחשבות באותיות גדולות וקטנות) באמצעות equalsIgnoreCase ומדפיסה את התוצאה.
  3. משווה בין שתי המחרוזות באמצעות compareTo ומדפיסה את התוצאה.
  4. משווה בין שתי המחרוזות (ללא התחשבות באותיות גדולות וקטנות) באמצעות compareToIgnoreCase ומדפיסה את התוצאה.

דוגמת פלט עבור מחרוזות הקלט HELLO ו-hello:

HELLO equals hello: false
HELLO equalsIgnoreCase hello: true
HELLO compareTo hello: -32
HELLO compareToIgnoreCase hello: 0

נסו בעצמכם

import java.util.Scanner;

public class Main {
    public static void compareStrings(String str1, String str2) {
        // כתבו את הקוד שלכם כאן
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str1 = scanner.nextLine();
        String str2 = scanner.nextLine();
        compareStrings(str1, str2);
    }
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר Java אונליין