zuweisung ergibt doch true, oder?

Status
Nicht offen für weitere Antworten.

ARadauer

Top Contributor
Code:
public class AA {		
	public static void main(String[] args) {
		boolean encode = false;
		if(encode = false){
			System.out.println("eins");
		}else if(encode = true){
			System.out.println("zwei");
		}else{
			System.out.println("drei");
		}
	}
}

hier müsste doch eins raus kommen oder?
eine Zuweisung ergibt doch immer true, oder?
 

The_S

Top Contributor
ausprobieren?

Es müsste 2 rauskommen. Du weißt encode einen Wert zu und überprüfst dann diesen Wert in der if-abfrage.
 

ARadauer

Top Contributor
stimmt, hab jetzt aber irgendwie eins erwartet.
aber ich denke der gedanke kam aus meine c zeiten. ich glaub da ist es anders.
 

hugo

Bekanntes Mitglied
Also meiner Ansicht nach wird die Zuweisung vor dem Vergleich durchgeführt. Somit erhält die boolsche Variable im ersten if-Konstrukt der Wert false. Dann wird ja geprüft auf if(encode). Da diese jetzt den Wert false hat trifft der Punkt nicht zu. Im zweiten if() wird der Variable der Wert true zugeordnet und die if()-Abfrage ergibt somit true. Das Ergebnis ist zwei. Kann man durch Copy-Paste ja auch ganz einfach nachvollziehen.

Wenn meine Java-Kentnisse mich nicht zu sehr im Stich lassen, werden solche Ausdrücke von rechts nach links abgearbeitet. Also ist der erste Befehl die Zuweisung eines Wertes zu einer Variablen. Daraufhin erfolgt die Prüfung der Variablen.
 

JavaFred

Aktives Mitglied
Der Wert einer Zuweisung ist der zugewiesene Wert. Der Wert von

Code:
a = b

ist also b.
 

schalentier

Gesperrter Benutzer
Weil es schlecht lesbarer Code und leicht zu verwechseln ist. Das da nur ein '=' steht, ist vielleicht fuer einen fortgeschrittenen Java/C/C++ - Entwickler auf den ersten Blick erkennbar, aber fuer einen andren vielleicht nicht.

Zuweisungen innerhalb von Expressions sind bubu, basta! :wink:

Ausser du nennst mir einen triftigen Grund, der meine These widerlegt, bzw. einen Vorteil, warum man solche Sachen schreiben sollte.
 
M

maki

Gast
Klar kann man damit Mist bauen, muss aber nicht:

Code:
while ((line = bufReader.readLine()) != null) {
...

Ja nachdem, gibt es sinnvolle Anwendungen dafür, ein pauschales "böse" sehe ich als übertrieben, selbst wenn die sinnvollen Anwendungen sehr begrenzt sind.
 

Leroy42

Top Contributor
schalentier hat gesagt.:
Zuweisungen innerhalb von Expressions sind bubu, basta! :wink:

Ausser du nennst mir einen triftigen Grund, der meine These widerlegt, bzw. einen Vorteil, warum man solche Sachen schreiben sollte.

Klar doch, einfach weil Anweisungen die nicht innerhalb von Expressions
stehen, in Java gar nicht möglich sind.

Oder willst du soetwas etwa auch verbieten?

Code:
int i;
i = 42;

:shock:

Code:
i=42;
ist doch eine Zuweisung innerhalb einer Expression!

Oder was genau meinst du jetzt? ???:L
 

schalentier

Gesperrter Benutzer
Okay, ich meinte natuerlich Zuweisungen in Boolean-Expressions. Also solchen, die true oder false zurueckliefern, um dann eine Bedingung, Schleife, etc. abzuarbeiten.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Wert zuweisung Allgemeine Java-Themen 1
Killunox MaxHeap Zuweisung unter Linux funktioniert nicht Allgemeine Java-Themen 1
P Zuweisung verändert den Ausgangswert Allgemeine Java-Themen 7
A Observer Pattern: feuern bei neuer Referenz-Zuweisung? Allgemeine Java-Themen 8
Semox Fehler - Zuweisung aus BufferedReader an Variable Allgemeine Java-Themen 3
D Was ist schneller? Zuweisung oder Vergleich? Allgemeine Java-Themen 18
R ascii-wert zuweisung Allgemeine Java-Themen 4
T Problem mit Zuweisung von Objekten Allgemeine Java-Themen 5
O Variablen Addition von Double-Werten ergibt seltsame 0.9999999 Zahlen Allgemeine Java-Themen 2
B Aufruf der Methode ergibt eine Exception Allgemeine Java-Themen 13
T If Vergleich ergibt nicht das richtige Ergebnis Allgemeine Java-Themen 2
J System.arraycopy ergibt anderes Resultat als for-loop Allgemeine Java-Themen 4
A Methode ergibt Java NullpointerException. Allgemeine Java-Themen 3
D Timestamp to Date, ergibt falsches ergebnis Allgemeine Java-Themen 5
S CRC wert berechnen ergibt 0 ? Allgemeine Java-Themen 9
B SimpleDateFormat oder doch lieber GregorianCalendar Allgemeine Java-Themen 3
H Erste Schritte Java installiert oder doch nicht? Allgemeine Java-Themen 8
G Java Preferences API oder lieber doch nicht? Allgemeine Java-Themen 10
P Runnable Jar File über Windows ausführbar doch über Linux nicht Allgemeine Java-Themen 8
C Java Polling, Server Prozedur oder doch Datenbank? Allgemeine Java-Themen 4
G Observer / Observable oder doch lieber Message Broker? Allgemeine Java-Themen 2
A Primitive oder doch nicht? Allgemeine Java-Themen 11
spacegaier invokeLater wird doch immer ausgeführt, oder? Allgemeine Java-Themen 8
J Textdatei oder doch DB? Allgemeine Java-Themen 2
V String oder doch InputStream? Allgemeine Java-Themen 9
thE_29 Foxtrot doch nicht so super. Allgemeine Java-Themen 12
A StringTokenizer oder doch anders? Formelinterpretieren. Allgemeine Java-Themen 4
C Thread zu langsam ==> kann doch nicht sein oder? Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben