CodeGym /Kurslar /Java SELF AZ /String-lərin məzmununa görə müqayisəsi

String-lərin məzmununa görə müqayisəsi

Java SELF AZ
Səviyyə , Dərs
Mövcuddur

1. Sətirlərin müqayisəsi

Bu hər şey əladır. Amma siz görürsünüz ki, sətirlər s1s2 faktiki olaraq eynidir — onlar eyni mətni ehtiva edir. Proqrama necə demək olar ki, sətirləri müqayisə edərkən o, String obyektlərinin ünvanlarına yox, onların məzmununa baxsın?

Bunun üçün Java-da String tipində xüsusi bir metod var — equals. Onun çağırışı belə görünür:

sətir1.equals(sətir2)
String s1 = "Salam"; String s2 = "SALAM"; String s3 = s1.toUpperCase(); System.out.println(s1.equals(s2)); System.out.println(s1.equals(s3)); System.out.println(s2.equals(s3));
// Salam
// SALAM
// SALAM

false // fərqlidir
false // fərqlidir
true  // eynidir, baxmayaraq ki, ünvanlar fərqlidir

Daha çox nümunələr:

Kod İzah
"Salam".equals("SALAM")
false
String s = "Salam";
"Salam".equals(s);
true
String s = "Sa";
"Salam".equals(s + "lam");
true
String s = "S";
(s + "alam").equals(s + "alam");
true


2. Hərf rejimini nəzərə almadan sətirlərin müqayisəsi

Son nümunədə gördünüz ki, "Salam".equals("SALAM") müqayisəsi false qaytarır. Həqiqətən də, sətirlər bərabər deyil. Amma...

Sətirlər bərabər deyil, amma axı onlarda eyni şey yazılıb, sadəcə hərflərin ölçüsü (rejimi) fərqlidir. Bəs onları necə müqayisə etmək olar ki, hərflərin ölçüsü nəzərə alınmasın? Belə ki, "Salam".equals("SALAM") true qaytarsın?

Və bu suala cavab — bəli. Java-da String tipində xüsusi bir metod var — equalsIgnoreCase. Metodun çağırışı belə görünür:

setir1.equalsIgnoreCase(setir2)

Metodun adı rejimi nəzərə almadan müqayisə etmək kimi tərcümə olunur. Metodun adında iki dik xətt var: birincisi — bu kiçik L, ikincisi isə böyük idir. Qarışdırmayın.

Nümunə:

Kod: Qeyd
String s1 = "Salam";
String s2 = "SALAM";
String s3 = s1.toUpperCase();

System.out.println(s1.equalsIgnoreCase(s2));
System.out.println(s1.equalsIgnoreCase(s3));
System.out.println(s2.equalsIgnoreCase(s3));  
// Salam
// SALAM
// SALAM

true
true
true


3. Sətirlərin müqayisə nümunəsi

Sadə bir nümunə göstərək: klaviaturadan iki sətir daxil etmək və onların eyni olub olmadığını yoxlamaq lazımdır. Kod belə görünəcək:

Scanner console = new Scanner(System.in);
String a = console.nextLine();
String b = console.nextLine();
String result = a.equals(b) ? "Eyni"" : "Fərqli";
System.out.println(result);

4. Sətirlərin müqayisəsinin maraqlı nüansı

Sən bilməlisən ki, burada bir vacib nüans var.

Əgər Java-kompilyator kodunda (məhz kodda) bir neçə eyni sətir tapsa, yaddaşa qənaət etmək üçün onlar üçün yalnız bir obyekt yaradacaq.

String text = "Bu çox vacib mesajdır";
String message = "Bu çox vacib mesajdır";

Budur, yaddaşda nəticə necə olacaq:

Sətirlərin məzmununa görə müqayisəsi

Və bu halda əgər sən text == message müqayisə etsən, true alacaqsan. Ona görə də təəccüblənmə.

Amma əgər sənə mütləq lazımdır ki, istinadlar fərqli olsun, onda belə yaza bilərsən:

String text = "Bu çox vacib mesajdır";
String message = new String ("Bu çox vacib mesajdır");

Və ya belə:

String text = "Bu çox vacib mesajdır";
String message = new String (text);

Bu iki halda da textmessage dəyişənləri eyni mətnə malik olan fərqli obyektlərə istinad edəcək.


Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION