1. Qatorlarni qiyoslash
Bularning hammasi a'lo darajada. Lekin siz ko'rayapsizki, s1 va s2 qatorlari amalda bir xil – ular bir xil matnni o'z ichiga oladi. Qanday qilib dasturni qatorlarni qiyoslashda, String obyektlarining manzillari emas, balki ularning tarkibi ko'rilishi kerakligini aytish mumkin?
Buning uchun Java’da String tipida maxsus metod mavjud — equals. Uning chaqiruvi quyidagicha ko'rinadi:
qator1.equals(qator2)
Bu metod true (rost) qaytaradi, agar qatorlar bir xil bo'lsa, va false (yolg'on) qaytaradi, agar ular bir xil bo'lmasa.
Misol:
| Kod: | Izox |
|---|---|
|
|
Yana misollar:
| Kod | Izoh |
|---|---|
|
false |
|
true |
|
true |
|
true |
2. Registr hisobiga olmasdan qatorlarni qiyoslash
Oxirgi misolda siz ko'rdingizki, "Salom".equals("SALOM") qiyoslash false qaytaradi. Haqiqatdan ham, qatorlar teng emas. Lekin...
Qatorlar, albatta, teng emas, lekin ularda bir xil narsa yozilgan, faqat harflarning o'lchami (registri) farq qiladi. Ularni qandaydir tarzda qiyoslash mumkinmi, shunda harflarning o'lchami hisobga olinmaydi? Ya'ni "Salom".equals("SALOM") true qaytaradimi?
Va bu savolga javob bu — ha. Java’da String tipida yana bir maxsus metod mavjud — equalsIgnoreCase. Uning chaqiruvi quyidagicha ko'rinadi:
qator1.equalsIgnoreCase(qator2)
Metodning nomi registrni hisobga olmay qiyoslash deb tarjima qilinadi. Metod nomida ikkita vertikal chiziq bor: birinchi — bu kichik L, va ikkinchi — bu katta i. Chalkashtirmang.
Misol:
| Kod: | Izox |
|---|---|
|
|
3. Qatorlarni qiyoslash misoli
Faqat bir oddiy misol: klaviaturadan ikki qator kiritilishi kerak va ular bir xil yoki yo'qligini aniqlash kerak. Mana bu kod shunday ko'rinadi:
Scanner console = new Scanner(System.in);
String a = console.nextLine();
String b = console.nextLine();
String result = a.equals(b) ? "Bir xil" : "Farqli";
System.out.println(result);
4. Qatorlarni qiyoslashda qiziqarli nuktalar
Bilishingiz kerak bo'lgan muhim bir masala mavjud.
Agar Java-kompilyatori kodingizda bir necha bir xil qatorlarni topsa, xotirani tejash uchun ular uchun faqat bitta obyekt yaratadi.
String text = "Bu juda muhim xabar";
String message = "Bu juda muhim xabar";
Va natijada xotirada nima bo'ladi:
Va bu holatda text == message ni qiyoslasangiz, true olasiz. Shunday qilib, hayron qomang.
Agar sizga birdaniga juda ham kerak bo'lsa, manzillar farq qilishi uchun shunday yozishingiz mumkin:
String text = "Bu juda muhim xabar";
String message = new String ("Bu juda muhim xabar");
Yoki shunday:
String text = "Bu juda muhim xabar";
String message = new String (text);
Har ikkala holatda ham text va message o'zgaruvchilari bir xil matnni o'z ichiga olgan har xil obyektlarga ishora qiladi.
GO TO FULL VERSION