Stringvergleich mit equals

wernom

Mitglied
Stringerzeung:
Java:
String s = In.readString();
Stringvergleich laut Lehrbuch:
Java:
if(s.equals("Hello")){
 Out.print(true);
}else{
 Out.print(false);
}

1. Frage: Wenn der String nicht mit In.readString() erzeugt wird, sondern vorher ihm zum Beispiel auf diese Weise ein String zugewiesen wird:
Java:
String s = "Hello"
Dann liefert das Programm true.

Obiges Programm hingegen liefert false(wegen Zeigervergleich). Wo liegt denn der Unterschied zwischen beiden Stringerzeugungen?

2. Frage: Handelt es sich bei diesem In.readString() um eine vereinfachte Möglichkeit? Ich habe in einem Forum nämlich gelesen, das Einlesen von Strings sei aufwändiger.
 

Fab1

Top Contributor
In ist ja wahrscheinlich vom Typ Scanner oder? Ansich ist das Einlesen von Strings nicht sehr schwer.

Auch das obere Beispiel sollte "true" ergeben, wenn der eingelesene String "Hello" ist.

Der Unterschied, naja der einen Variablen weist du direkt einen String zu.

und hier
Java:
String s = In.readString();
machst du das mit einer Methode von einem Objekt. Diese Methode gibt einen String zurück der dann der Variablen zugewiesen wird.
 

Dekker

Bekanntes Mitglied
1. Frage: Wenn der String nicht mit In.readString() erzeugt wird, sondern vorher ihm zum Beispiel auf diese Weise ein String zugewiesen wird:
Java:
String s = "Hello"
Dann liefert das Programm true.

Obiges Programm hingegen liefert false(wegen Zeigervergleich). Wo liegt denn der Unterschied zwischen beiden Stringerzeugungen?

Ich schätze in.readString() hat ein Steuerzeichen im String (z.b. Linefeed oder sowas), das du nicht siehst.
 

irgendjemand

Top Contributor
wegen Zeigervergleich

es gibt in java KEINE pointer ...

allerhöchstens "Referenzen" ...

und selbst wenn : ein referenzvergleich wird mit "==" durchgeführt ... equals() hingegen vergleicht den "inhalt" eines objektes ...

diese klasse "In" ist vermutlich vom lehrbuch vorgegeben *gewöhn dir das bitte gleich wieder ab ... es wird der moment kommen in dem du diese helper-klasse NICHT mehr zur verfügung hast*

zum einlesen von daten im allgemeinen gibt es verschiedene methoden ...
für simple consolen eingaben macht sich Scanner schon ganz gut ...

warum aller dings das was du einliest equals "Hello" false ist ... nun ... liegt vielleicht daran das in dem was eingelesen wird etwas anderes steht als in dem worauf du prüfst ...

lasse dir also das eingegebene einfach mal ausgeben ... dann siehst du in der regel schon ob es auch da ist was du wirklich eingegeben hast
 

x22

Bekanntes Mitglied
doofe Frage.. aber gibts du das "h" auch als "H" ein?
Bei mir funkt. das wunderbar.

Abgesehen davon braucht du ja gar keine if-Anweisung.. es reicht schon wenn du das in deiner Ausgabe einfach so schreibst:

Java:
System.out.println(eingabe.equals(string)); // string="Hello"
 

irgendjemand

Top Contributor
in anspielung an x22

wenn du anstatt "Hello" nur "hello" eingibst dann ist klar das FALSE rauskommt ...

willst du aber nur vergleichen ob das wort an sich stimmt ... dir die schreibweise aber egal ist ... dann gibt es bei String noch das spezielle equalsIgnoreCase() ... wie das ganze intern arbeit weis ich gerade nicht aus dem kopf ... aber grob erklärt werden sowohl das objekt selbst als auch der parameter durch toLowerCase() bzw toUpperCase() geschoben und dann am ende wieder nur ein normales equals() darauf angewendet ...
 
G

Gast2

Gast
es gibt in java KEINE pointer ...

allerhöchstens "Referenzen" ...

Verwechsel nicht Pointer mit Pointerarithmetik. Wie maki schon sagt gibt es sehr wohl pointer aber eben keine pointer arithmetik!

Sprich sowas wie:

Code:
int i;
int *j = &i;
j++;

geht nicht!
 

irgendjemand

Top Contributor
ja natürlich geht pointer-arithmetik nicht ... weil es eben keine ponter gibt ...

guckt doch bitte selbst mal in die java specs ... dort ist eindeutig und ausschließlich von referenzen die rede ...

das das ganze intern durch die programmierung der VM in C/++ dann auf pointer abgebilted wird ... ist mir auch klar ... aber POINTER in dem sinne gibt es nun mal nicht *gott sei dank* ... sondern nur REFERENZEN ...
 

x22

Bekanntes Mitglied
in anspielung an x22

wenn du anstatt "Hello" nur "hello" eingibst dann ist klar das FALSE rauskommt ...

willst du aber nur vergleichen ob das wort an sich stimmt ... dir die schreibweise aber egal ist ... dann gibt es bei String noch das spezielle equalsIgnoreCase()

Mir ist klar, dass es den IgnoreCase fall gibt.

Habe es mit beiden gemacht, funkt. einwandfrei.
 

faetzminator

Gesperrter Benutzer
Hast du noch irgendwo ein Leerzeichen? Dann könnte dir [c]trim()[/c] helfen.
Ansonsten nimmst du den Debugger oder lässt dir folgendes ausgeben, dann siehst du "versteckte" Zeichen: [c]System.out.println("\"" + s + "\"");[/c].
 

x22

Bekanntes Mitglied
ich meinte doch nicht dich mensch xDD

ich meinte mit meinem post eigentlich TO ...

das du weist das es equalsIgnoreCase gibt war mir klar ... *verdammt .. man kann sich auch echt irgendwie falsch ausdrücken ... ahh foo xD*


war kein Angriff gegen dich :)
Und ja, faetzminator hat den richtigen Vorschlag getroffen: Benutz trim():toll:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Stringvergleich funktioniert nicht Java Basics - Anfänger-Themen 8
W Stringvergleich Java Basics - Anfänger-Themen 7
D Stringvergleich funktioniert nicht Java Basics - Anfänger-Themen 7
C Probleme bei einem Stringvergleich - Attribut "value" unterscheidet sich Java Basics - Anfänger-Themen 9
D Probleme mit Stringvergleich Java Basics - Anfänger-Themen 7
D Stringvergleich Java Basics - Anfänger-Themen 7
B Datentypen Stringvergleich mit == Java Basics - Anfänger-Themen 18
F Stringvergleich mit CharAt Java Basics - Anfänger-Themen 9
J Stringvergleich Java Basics - Anfänger-Themen 4
E Probleme bei Stringvergleich, leer String = gefülltem String Java Basics - Anfänger-Themen 2
N Stringvergleich Java Basics - Anfänger-Themen 7
S Stringvergleich funktioniert nicht ? Java Basics - Anfänger-Themen 12
G Stringvergleich Java Basics - Anfänger-Themen 2
G Problem mit .substring() und Stringvergleich Java Basics - Anfänger-Themen 3
G Was is falsch mit meinem program? (stringvergleich-problem) Java Basics - Anfänger-Themen 8
Say Equals Java Basics - Anfänger-Themen 6
W LocalDate vergleichen mit Equals? Java Basics - Anfänger-Themen 7
W Equals-Methode überschreiben bei composition Java Basics - Anfänger-Themen 20
W Wann und warum hashcode und equals? Java Basics - Anfänger-Themen 14
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
C Long value an Stringbuilder übergeben, equals Methode funktioniert nicht Java Basics - Anfänger-Themen 2
J compareTo()- und equals-Methode Java Basics - Anfänger-Themen 3
S 2 Strings mit Equals vergleichen Java Basics - Anfänger-Themen 11
lallmichnichtzu Methoden Überladen des .equals-Operators Java Basics - Anfänger-Themen 6
C Objekt1.equals(Objekt2) = immer false. Wieso? Java Basics - Anfänger-Themen 22
NeoLexx equals()-Methode Verständnis Frage anhand Code Beispiel Java Basics - Anfänger-Themen 22
M Objekte mittels equals vergleichen Java Basics - Anfänger-Themen 14
S Interface Equals und hashCode Java Basics - Anfänger-Themen 16
G Java equals() Methode Java Basics - Anfänger-Themen 9
J equals funktioniert nicht - Warum Java Basics - Anfänger-Themen 13
B Date - Vergleich (equals / after) ? Java Basics - Anfänger-Themen 3
G Ratlosigkeit zur Aufgabe im Anhang (boolean, equals.) Java Basics - Anfänger-Themen 20
D Unterschied == und equals in Arrays Java Basics - Anfänger-Themen 2
O equals Methode möglichst effizient Java Basics - Anfänger-Themen 13
H equals methode Java Basics - Anfänger-Themen 1
L Logistiksystem Methode equals und hashcode Java Basics - Anfänger-Themen 20
J Methoden Equals Methode für Integer und Objekte überschreiben? Java Basics - Anfänger-Themen 9
M Erste Schritte Mehrere eingaben in einer Line vergleichen (if equals...) Java Basics - Anfänger-Themen 6
I equals (Override) mit eigener Exception (keine Runtime-Exception) Java Basics - Anfänger-Themen 9
A OOP Richtige Verwendung von ArrayList und equals Java Basics - Anfänger-Themen 24
E equals Prüfung fehlgeschlagen Java Basics - Anfänger-Themen 3
C Objekt equals Java Basics - Anfänger-Themen 2
L String überprüfen mit .equals .contains oder .matches? Java Basics - Anfänger-Themen 1
H equals Methode Java Basics - Anfänger-Themen 1
F String equals NULL Problem Java Basics - Anfänger-Themen 4
D Auf equals von Vaterklasse zugreifen Java Basics - Anfänger-Themen 4
S Methoden equals(object o) / toString Java Basics - Anfänger-Themen 15
E Calender - Equals Problem Java Basics - Anfänger-Themen 14
T Datentypen compareTo() u. equals() bei Strings Java Basics - Anfänger-Themen 3
Psypsy hashCode, equals und toString Java Basics - Anfänger-Themen 3
K hashCode, compareTo vs. equals Java Basics - Anfänger-Themen 3
M Vergleich zweier Array Stellen mit equals/NullpointerException Java Basics - Anfänger-Themen 9
S Unterschiede zwischen equals und contains Java Basics - Anfänger-Themen 2
F Erste Schritte Hilfe bei Übung zu String equals() und Schleifen Java Basics - Anfänger-Themen 8
A Probleme mit equals und get.Text Java Basics - Anfänger-Themen 12
S compareTo() und equals() Java Basics - Anfänger-Themen 6
S equals Methode bei String Java Basics - Anfänger-Themen 5
R illegal start of expression - 3 Strings vergleichen mit .equals () Java Basics - Anfänger-Themen 5
K Cast bei equals Java Basics - Anfänger-Themen 2
T SQL equals Java Basics - Anfänger-Themen 4
OnDemand Methoden Equals Methde Java Basics - Anfänger-Themen 3
D if block mit equals im rumpf Java Basics - Anfänger-Themen 11
K Vererbung equals-Methode bei Vererbung abstrakter Klassen Java Basics - Anfänger-Themen 8
SexyPenny90 Wieso ist diese eigene Equals-Methode schlecht? Java Basics - Anfänger-Themen 17
K String - Equals Java Basics - Anfänger-Themen 2
J Klassen Warum ist (a.equals(b)) gleich (a==b)? Java Basics - Anfänger-Themen 13
B Warum gibst hier Equals false zurück ? Java Basics - Anfänger-Themen 23
S Verständnissfrage equals() Java Basics - Anfänger-Themen 2
R compareTo & equals Java Basics - Anfänger-Themen 10
M Verschiedene Möglichkeiten mit 'equals' abdecken? Java Basics - Anfänger-Themen 9
M Collections Problem bei Überschreibung von hashcode() und equals() bei Hashset-Implementierung Java Basics - Anfänger-Themen 5
C equals() Java Basics - Anfänger-Themen 4
D Problem mit string.equals bzw string.contains Java Basics - Anfänger-Themen 4
T Problem mit der while(!string.equals("x")) Java Basics - Anfänger-Themen 2
E Equals-Methode auf Class-Object Java Basics - Anfänger-Themen 17
X problem mit equals.gelöst Java Basics - Anfänger-Themen 2
J Methode equals() Java Basics - Anfänger-Themen 7
M Equals überschreiben Java Basics - Anfänger-Themen 3
K equals() und hashcode() überschreiben Java Basics - Anfänger-Themen 5
K equals in Hashmap() Java Basics - Anfänger-Themen 4
B if equals(irgendeine Zahl+Buchstabe) Java Basics - Anfänger-Themen 6
T equals() und hashCode() Java Basics - Anfänger-Themen 7
D probs mit clone und equals Java Basics - Anfänger-Themen 10
3 Collections containsKey() liefert false obwohl equals() true liefert Java Basics - Anfänger-Themen 6
N Vergleich per equals Java Basics - Anfänger-Themen 5
S comparable und equals Java Basics - Anfänger-Themen 7
M Frage zu Textvergleich (equals) Java Basics - Anfänger-Themen 8
G Strings vergleichen mit equals, geht das kürzer? Java Basics - Anfänger-Themen 4
B Frage zu Funktion mit equals Java Basics - Anfänger-Themen 17
D Eigene equals methode schreiben Java Basics - Anfänger-Themen 4
J Gibt es eine möglichkeit ähnlich wie .equals(bedingung1 ||bedingung ..n) ? Java Basics - Anfänger-Themen 5
D "2010–03–12".equals( "2010-03-12" ) Java Basics - Anfänger-Themen 6
X Frage zur Implementierung von equals() Java Basics - Anfänger-Themen 2
T Problem mit equals Java Basics - Anfänger-Themen 5
K Equals,Instanceof und "==" Java Basics - Anfänger-Themen 7
C warum liefert equals kein TRUE Java Basics - Anfänger-Themen 12
E Java hashCode equals Problem Java Basics - Anfänger-Themen 2
S equals vergleich Java Basics - Anfänger-Themen 10
H Equals hascode Java Basics - Anfänger-Themen 5
S Equals Downcast? Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben