hoe gebruik ik gelijken van het personage () in Java

Als de string is een object, moet u de string.equals(string)methode om te bevestigen dat de twee strings zijn gelijk te gebruiken.

Maar waarom heb je de ==gebruiken om te controleren of twee tekens gelijk zijn, char1 == char2, in plaats van char1.equals(char2)?


Antwoord 1

Misschien is dit zal helpen om het verschil op te begrijpen ==versus equals.

 @Test
  public void testCharacterEquals() {
    //primitive type uses == operator for equals comparasion
    char a1 = 'A';
    char a2 = 'A';
    if (a1 == a2) {
      System.out.println("primitive type comparasion: it's equal");
    }
    //From Java doc; The Character class wraps a value of the primitive type char in an object. An object of type Character contains a single field whose type is char.
    //Object type uses equals method for equals comparasion
    Character character1 = 'A';
    Character character2 = 'A';
    if (character1.equals(character2)) {
      System.out.println("object type comparasion: it's equal");
    }
  }

Antwoord 2

Het hangt af van het gebruik van een primitief soort, char, int, etc. En met behulp van voorwerpen zoals String. Een primitieve als een int kan worden vergeleken 1 == 1 en als je 2 objecten controleren elkaar Objecta! = ObjectB.

Controle uit dit antwoord hier: Primitieve vs soort object in Java
Of hier: https://chortle.ccsu.edu/java5/Notes/ chap09C / ch09C_2.html

Quote:

Een primitieve gegevenstype wordt een kleine hoeveelheid geheugen een representeren
enkelvoudig gegeven. Alle gegevens van hetzelfde primitieve type zijn hetzelfde
maat.

Het primitieve type int staat bijvoorbeeld voor gehele getallen met 32 bits. Alle
variabelen van het type int gebruiken 32 bits.

Er zijn slechts acht primitieve gegevenstypen in Java: byte, short, int,
long, float, double, char en boolean. Een Java-programma kan niet definiëren
andere primitieve gegevenstypen.

Een object is een groot stuk geheugen dat mogelijk een . kan bevatten
veel gegevens samen met methoden (kleine programma’s) om te verwerken
die gegevens. Er zijn duizenden objectklassen die standaard worden geleverd
met Java, en een programmeur kan gemakkelijk extra klassen maken.
(Hoewel er duizenden standaardlessen zijn, moet je voor deze cursus
je hoeft maar een tiental lessen te leren.)

Waarbij 2 strings 2 verschillende objecten zijn. Dus niet hetzelfde object en niet dezelfde string. Hoewel de karakters misschien hetzelfde zijn.


Antwoord 3

In principe heeft Java primitieve typen (int, char, short, long, byte ….)
en referentiegegevenstypes/objecten samengesteld uit andere primitieven en objecten.

equals() is een methode van alle Java-objecten. Maar char is geen objecttype in Java, het is een primitief type, het heeft geen methode of eigenschappen, dus om de gelijkheid te controleren, kunnen ze gewoon de ==equals-operator gebruiken.


Antwoord 4

Omdat chareen primitief type is en equalsniet implementeert, vergelijkt ==charwaarden rechtstreeks in deze zaak. waar als Stringobject is, wordt voor objectvergelijking de gelijkheidsoperator toegepast op de verwijzingen naar de objecten, niet op de objecten waarnaar ze verwijzen. Twee verwijzingen zijn gelijk als en slechts dan als ze naar hetzelfde object verwijzen, of beide naar nul.

Als u strings wilt vergelijken (om te zien of ze dezelfde tekens bevatten), moet u de snaren vergelijken met gelijken.

Vandaar de operator ==controleert gelijkheid van waarden op primitieve typen ,. Maar het controleert referenties voor objecten. Als de twee objecten worden verwezen door gelijke referenties. Een referentie en een object zijn anders in Java.


Antwoord 5

U kunt ook een comparator gebruiken als u wilt.

public static boolean compareChars(char c1, char c2){
        int comp = Character.compare(c1, c2);
        if(comp>0){
            return false;
        }else{
            return true;
        }
 }
 public static void main (){
   boolean b1 = compareChars('A', 'A') //return true;
   boolean b2 = compareChars('A', 'C') //return false;
 }

Other episodes