JavaRush /Kurslar /All lectures for UZ purposes /Qatorlarni tarkibiy qiyoslash

Qatorlarni tarkibiy qiyoslash

All lectures for UZ purposes
Daraja, Dars
Mavjud

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)
Ikki qatorni qiyoslash

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
String s1 = "Salom";
String s2 = "SALOM";
String s3 = s1.toUpperCase();

System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(s2.equals(s3));
// Salom
// SALOM
// SALOM

false // farqli
false // farqli
true  // bir xil, lekin manzillar farqli

Yana misollar:

Kod Izoh
"Salom".equals("SALOM")
false
String s = "Salom";
"Salom".equals(s);
true
String s = "Sa";
"Salom".equals(s + "lom");
true
String s = "S";
(s + "alom").equals(s + "alom");
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
String s1 = "Salom";
String s2 = "SALOM";
String s3 = s1.toUpperCase();

System.out.println(s1.equalsIgnoreCase(s2));
System.out.println(s1.equalsIgnoreCase(s3));
System.out.println(s2.equalsIgnoreCase(s3));  
// Salom
// SALOM
// SALOM

true
true
true


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:

Qatorlarni tarkibiy qiyoslash

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.


Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION