String-Vergleich

Romolus

Mitglied
Java:
public static void main(String[] args) {
        String a1 = "foo";
        String a2 = a1;
        testStrings( "a1, a2" , a1 , a2);
        String a3 = "foo";
        testStrings( "a1, a3" , a1 , a3);
        String a4 = new String( "fo" )+"o";
        testStrings( "a1, a4" , a1 , a4);
        String a5 = a4.intern();
        testStrings( "a1 a5" , a1 , a5);
    }

        static void testStrings( String info,String a,String b) {
            System.out.println( info );
            System.out.printf( "<%s>.equals(<%s>) -> %s\n",a,b,a.equals(b));
           System.out.printf( "<%s>==<%s> -> %s\n\n",a,b, a== b);
     }

Es wir a1 als Typ String (Zeichenkette) deklariert mit den Anfangswert foo. Nun wir a2 ebenfalls als Typ string deklariert und ihn auch den Anfangswert foo zugewiesen.
Was wird bei testStrings( "a1, a2" , a1 , a2); gemacht?
Nun wird a3 als String deklariert mit dem gleichen Anfangswert foo wie a1.
Ein Literal "foo" wird definiert und ein neues String a4 wird definiert. a1 und a4 haben den selben Wert, aber bei a4 handelt es sich um 2 strings und nicht einen.
Nunwird ein neuer String deklariert, der denselben Wert wie der String a4 hat, so dass kein weiterer Speicherplatz für die Zeichen benötigt wird schreibt man es mit intern.

2Teil weiß ich nur:
%s .. Platzhalter für ein String
equals..Führt einen inhaltlichen Vergleich durch und liefert True, wenn beide beteiligten Objekte gleich sind.
\n .. Neue Zeile
printf .. ist auch klar ;)

Was heißt <&s> mit den Relationszeichen?
Wir haben b doch gar nicht definiert?

Mir ist das proramm noch nicht ganz klar!
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
< > sind nur Deko,
bei String-Variablen nie verkehrt um z.B. Leerzeichen am Anfang oder Ende zu erkennen
 
S

SlaterB

Gast
man SOLLTE nur mit equals vergleichen, das ist das tägliche Brot,
hier wird einmalig untersucht, wieso man das macht, was zu == der Unterschied ist
 

Romolus

Mitglied
Okay , ich hätte noch ne Frage dazu:
Java:
String a1 = "foo";
String a4 = new String( "fo" )+"o";
Nun wird ein Stringliteral "fo" kreiert und ein anderer String mit dem Wert foo wird erschaffen. Beide Strings (a1, a4) haben den selben Wert, aber a4 wäre zwei Strings, nicht einer wie a1.
Ist das so richtig erklärt?
 
G

Gast2

Gast
Nein, nicht wirklich.
Code:
new String("foo")
und
Code:
new String("foo")
wären auch zwei unterschiedliche Strings.
 
S

SlaterB

Gast
a4 ist ein String, ein String kann nur ein String sein, nicht zwei Strings,

und was das Ziel der Aufgabe ist, aber zugegeben auch schwer zu erkennen ist:
a4 wurde aus zwei Strings zusammengebaut, deswegen ist es trotz gleichen Inhalts nicht derselbe String wie a1,
kein fertiges Literal, Compile-Time-Konstante wie tfa es nannte
http://www.java-forum.org/java-basics-anfaenger-themen/134676-bedeutung-zeichen.html

== wird daher scheitern, equals klappt, und aus diesem Grund Strings immer nur mit equals vergleichen,
damit auch die häufigen zusammengesetzen oder aus einer sonstigen Quelle, nicht schon im Quellcode stehenden Strings
inhaltlich verglichen werden
 

Romolus

Mitglied
Java:
String a1 = "foo";
String a4 = new String( "fo" )+"o";

Wie würdest du dann den Unterschied erklären?
Ich hab mir bei paar Seiten was dazu durchgelesen, versteh den Unterschied aber nicht ganz.
 
M

Marcinek

Gast
== vergleicht die Speicheradresse und equals den Inhalt.

Was ist daran schwer zu verstehen?

P.S: oben wurde ein Link gepostet. Hast du dir den angesehen?
 

Nodiraa

Mitglied
String ist KEIN einfacher Datentyp, auch wenn er fast immer mit int und chat und so weiter zusammen genannt wird.

String ist ein Objekt, das heißt im Speicher steht nicht foo sondern eine Adresse.

Also vergleicht == nur steht da das gleiche und das ist nicht so, weil sie unterschiedliche Adressen haben.

equals schaut sich den Inhalt drin Zeichen für Zeichen an... (bei Strings)
 

rokko123

Mitglied
Java:
String a1 = "foo";
String a4 = new String( "fo" )+"o";

Bin ja auch n Anfänger, also was ich hier schreibe... nja.. ihr wisst schon^^

Bei String a1 wird a1 der String "foo" zugewiesen, und bei a4 als erstes ein neues String Objekt erzeugt, das "fo" (+ "o" jetzt erstmal ignoriert)

Das sind dann also quasi zwei Objekte, wenn du jetzt vergleichen würdest a1 == a4, dann wird geschaut, ob a1 und a4 aufs gleiche Objekt zeigen, was sie in diesem Fall halt nicht so wäre, da "foo" ein anderes Objekt ist als "fo", du hattest ja mit new String("fo") ein neues, also ein zweites erstellt...

wärs dagegen

String a1 = "foo" und
String a4 = "foo"

dann würden beide auf das gleiche Objekt refernzieren, == wäre also true

Jetzt kommt halt zusätzlich zu String a4 = new String("fo") noch das "o" per Konkatenation dazu, wird also an dein neues String Objekt drangehängt, ist dann aber immernoch n neues Objekt, also besitzt nicht die gleiche Referenz und dein vergleich mit == würde false zurückgeben

mit equals dagegen vergleichst du den Inhalt (foo und foo) und nicht die Referenz

Java:
public static void main( String[] args )
  {
	String a1 = "foo";
	String a4 = new String( "fo" )+"o";
	
	if( a1 == a4){
		System.out.println("gleiche referenz");
	}
	else{
		System.out.println("nicht gleiche referenz");
	}


	if(a1.equals(a4)){
		System.out.println("Der inhalt ist gleich");
		}
	else{
		System.out.println("Der inhalt ist NICHT gleich");
			}
  		}
	
	}

Damit kannst du bisschen rumspielen, indem du z.b. die Strings änderst, das new String weglässt etc. vielleicht hilfts dir ja beim verstehen

Hoffe ich hab kein Dünnpfiff rausgelassen, ansonsten steinigt mich nicht gleich, ich lerns auch erst^^
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
B String vergleich Java Basics - Anfänger-Themen 3
C Probleme mit String-Vergleich Java Basics - Anfänger-Themen 4
T Input/Output String-Vergleich schlägt fehl Java Basics - Anfänger-Themen 7
M String-Vergleich und NullPointerException Java Basics - Anfänger-Themen 4
N Vergleich zweier String Arrays scheitert Java Basics - Anfänger-Themen 3
P String-Vergleich Java Basics - Anfänger-Themen 3
C String Objekte Vergleich je nach Instanzierung unterschiedlich!!?!! Java Basics - Anfänger-Themen 4
J Erste Schritte Vergleich der String-Objekte Java Basics - Anfänger-Themen 17
P Erste Schritte vergleich substring und string Java Basics - Anfänger-Themen 4
Y Java Programm URL und String Vergleich! Java Basics - Anfänger-Themen 4
S String Vergleich funktioniert nicht Java Basics - Anfänger-Themen 3
A String-Vergleich geht nicht Java Basics - Anfänger-Themen 2
U Automatenprüfung in Java implementieren — String Vergleich klappt nicht Java Basics - Anfänger-Themen 40
L Problem String-Vergleich Java Basics - Anfänger-Themen 2
Y Datentypen String vergleich Java Basics - Anfänger-Themen 3
S String Vergleich mit Passwort geht nur bei Zahlen ? Java Basics - Anfänger-Themen 7
G Komplizierterer String Vergleich Java Basics - Anfänger-Themen 10
G String-Vergleich: Was ist besser "equals()" oder & Java Basics - Anfänger-Themen 4
S String Vergleich. Java Basics - Anfänger-Themen 4
G exception bei String-Vergleich Java Basics - Anfänger-Themen 3
S Vergleich String Java Basics - Anfänger-Themen 4
M Vergleich von String mit String bzw. Stringkonstante Java Basics - Anfänger-Themen 2
N String Vergleich!!! Java Basics - Anfänger-Themen 9
krgewb String mit Datumsangabe in Long umwandeln Java Basics - Anfänger-Themen 2
D String Groß/Kleinschreibung Ignorieren Java Basics - Anfänger-Themen 4
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
J Ähnlichen String in Liste finden Java Basics - Anfänger-Themen 6
Kartoffel_1 String transformation Java Basics - Anfänger-Themen 7
H String-Operation replace() - Zeichenkette verdoppeln Java Basics - Anfänger-Themen 2
K String analysieren Java Basics - Anfänger-Themen 27
Beowend String zu Date parsen Java Basics - Anfänger-Themen 1
Beowend String auf Satzzeichen überprüfen? Java Basics - Anfänger-Themen 6
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
I Sass Compiler und String erhalten? Java Basics - Anfänger-Themen 7
Avalon String in Double bzw. Währung konvertieren Java Basics - Anfänger-Themen 6
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
F Arraylist<String>Ein Wort pro Zeile Java Basics - Anfänger-Themen 6
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
N String überprüfen Java Basics - Anfänger-Themen 3
E String zerlegen aus args Java Basics - Anfänger-Themen 1
M Long-Typ in String-Änderung führt zu keinem Ergebnis bei großer Zahl Java Basics - Anfänger-Themen 11
Ostkreuz String Exception Java Basics - Anfänger-Themen 8
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
J String Filter Java Basics - Anfänger-Themen 5
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Größter zusammenhängender Block gleicher Zeichen im String Java Basics - Anfänger-Themen 1
XWing Randomizer mit einem String Java Basics - Anfänger-Themen 2
D 2D Char Array into String Java Basics - Anfänger-Themen 2
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
I Zerlegen von String Java Basics - Anfänger-Themen 3
B Beliebiger String gegeben Suche Datum in String Java Basics - Anfänger-Themen 6
I String Java Basics - Anfänger-Themen 4
I API - zurückgegebener JSON String lesen und in Entity konvertieren Java Basics - Anfänger-Themen 2
H Zu langen String aufteilen - bequeme Methode? Java Basics - Anfänger-Themen 14
W String einer Textdatei in einzelne Stringobjekte pro Zeile aufteilen Java Basics - Anfänger-Themen 14
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
M Kommandozeilenparamter als EINEN String werten Java Basics - Anfänger-Themen 5
M RandomAccessFile int und String gleichzeitig in einer Datei Java Basics - Anfänger-Themen 49
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
Distanz zwischen zwei Zeichenfolgen in einem String bestimmen Java Basics - Anfänger-Themen 5
Substring in einem String finden Java Basics - Anfänger-Themen 13
BeginnerJava String mit vorgegebener Länge und Buchstaben erzeugen/ mit Leerstellen Java Basics - Anfänger-Themen 8
I Eindeutiger String mit maximaler Anzahl an Zeichen Java Basics - Anfänger-Themen 11
H Interface Wieso "List<String> list = new ArrayList<>[…]" Java Basics - Anfänger-Themen 4
JavaBeginner22 Integer in String umwandeln Java Basics - Anfänger-Themen 7
HolyFUT JSON String in Java Object schreiben - Anführungszeichen rauskriegen? Java Basics - Anfänger-Themen 17
Fodoboo131 RegEx- Umwandlung von String in ausführbares Objekt/ Befehl Java Basics - Anfänger-Themen 9
HolyFUT Input/Output Leerzeichen aus String entfernen - klappt nicht! Java Basics - Anfänger-Themen 13
viktor1 Methoden Methode schreiben static void readText (String filename) {...} zu WordHistogramSample.java Java Basics - Anfänger-Themen 13
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
Alen123 String wiederholen mit Schleifen Java Basics - Anfänger-Themen 1
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
T String splitten Java Basics - Anfänger-Themen 3
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
T Platzhalter in String? Java Basics - Anfänger-Themen 14
M String mit Variable vergleichen Java Basics - Anfänger-Themen 9
I String Kombination erstellen anhand fortlaufender Zahl (Vertragsnummer) Java Basics - Anfänger-Themen 13
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
M Wie kann eine Methode (string) eine andere Methode (void) mit zufälligen int-Werten aufrufen? Java Basics - Anfänger-Themen 4
P9cman Vokale in einem String überprüfen mittels Rekursion Java Basics - Anfänger-Themen 8
schredder Strings und reguläre Ausdrücke - Methode mit return string.matches Java Basics - Anfänger-Themen 5
R Ein Multidimensionales String Array initialisieren und Deklarieren Java Basics - Anfänger-Themen 2
H String Repräsentation eines Rechtecks mit Instanz-Methode Java Basics - Anfänger-Themen 8
Dorfschmied Kartesisches Produkt von zwei Liste mit Hashmaps<String,String> erstellen Java Basics - Anfänger-Themen 4
S String mit Int input vergleichen Java Basics - Anfänger-Themen 5
C String/Char-API Java Basics - Anfänger-Themen 13
U Char zu einem String machen Java Basics - Anfänger-Themen 1
B Anzahl Nullen uns Einsen in String ermitteln Java Basics - Anfänger-Themen 3
T Leerzeichen im String entfernen Java Basics - Anfänger-Themen 6
Jose05 Nullpointerexception bei Umwandlung von String zu int Java Basics - Anfänger-Themen 2
O Ich habe einen String und soll mit matches schauen, ob ein Buchstabe zu einer geraden ANzahl im String vorkommt, wie soll das gehen? Java Basics - Anfänger-Themen 7
M String beim einlesen formatieren Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben