Liigu peamise sisu juurde

Võrdlemine

Sissejuhatus

Võrdlusoperaatorid võimaldavad võrrelda kahte väärtust omavahel. Kõik võrdlusoperaatorid tagastavad boolean tüüpi tulemuse ehk kas tõene (true) või väär (false).

Võrdlusoperaatorid

Võrdub/ei võrdu

== operaator kontrollib kahe väärtuse 1:1 vastavust:

int a = 5;
int b = 5;
int c = 3;

boolean result1 = (a == b); // true
boolean result2 = (a == c); // false

// Also used in if-statements
if (a == b) {
System.out.println("a and b are equal");
}
oht

Primitiivsete tüüpide puhul kasutage ==:

int x = 5;
int y = 5;
boolean result = (x == y); // true - ÕIGE

Objektide (nt String) puhul kasutage .equals() meetodit:

String s1 = new String("tere");
String s2 = new String("tere");

boolean wrong = (s1 == s2); // Võrdleb viiteid, mitte sisu
boolean correct = s1.equals(s2); // true - võrdleb sisu

Täpsemalt saab selle kohta lugeda siit.

!= operaatoriga saab kontrollida, kas kaks väärtust on erinevad:

int a = 5;
int b = 3;

boolean result = (a != b); // true

if (a != b) {
System.out.println("a and b differ");
}

Suurem/väiksem kui

> operaatoriga kontrollitakse, kas vasakpoolne väärtus on suurem kui parempoolne:

int a = 10;
int b = 5;

boolean result = (a > b); // true

if (a > b) {
System.out.println("a is larger than b");
}

< operaatoriga kontrollitakse, kas vasakpoolne väärtus on väiksem kui parempoolne:

int a = 3;
int b = 5;

boolean result = (a < b); // true

if (a < b) {
System.out.println("a smaller than b");
}

Suurem/väiksem või võrdne

>= operaator kontrollib, kas vasakpoolne väärtus on suurem või võrdne parempoolsega:

int a = 5;
int b = 5;
int c = 3;

boolean result1 = (a >= b); // true (both are equal)
boolean result2 = (a >= c); // true (a is larger)
boolean result3 = (c >= a); // false

<= operaator kontrollib, kas vasakpoolne väärtus on väiksem või võrdne parempoolsega:

int a = 3;
int b = 5;
int c = 5;

boolean result1 = (a <= b); // true (a is smaller)
boolean result2 = (b <= c); // true (both are equal)
boolean result3 = (b <= a); // false

Erinevate tüüpide võrdlemine

Numbrilised tüübid

Java teisendab automaatselt väiksema tüübi suuremaks enne võrdlemist:

int a = 5;
double b = 5.0;

boolean result = (a == b); // true (a gets converted into double)

int x = 5;
double y = 5.1;
boolean result2 = (x < y); // true

Sümbolid (char)

Sümboleid võrreldakse nende Unicode väärtuste järgi:

char a = 'A';  // Unicode value 65
char b = 'B'; // Unicode value 66

boolean result1 = (a < b); // true (65 < 66)
boolean result2 = (a == 'A'); // true

// Can be useful in checking for alphabetical order of letters
char letter = 'M';
if (letter >= 'A' && letter <= 'Z') {
System.out.println("Suur täht");
}

Boolean väärtused

Tõeväärtuseid saab võrrelda ainult == ja != kaudu:

boolean a = true;
boolean b = false;

boolean result1 = (a == b); // false
boolean result2 = (a != b); // true

// NB! This is bad style
if (a == true) {
// ...
}

// Correct style
if (a) { // HEA
// ...
}

Võrdlusahelad

hoiatus

Javas ei saa võrdlusi ahelda nagu matemaatikas (või nagu Python'is):

int x = 5;

// In math we usually write: 3 < x < 10
// Java doesn't operate like that:
if (3 < x < 10) { // Compilation error
// ...
}

// Everything has to be a separate comparisson
if (3 < x && x < 10) {
// ...
}