Java: Unterschiede zwischen && vs. &

Viele, denke ich, wissen gar nicht, das man eine Verknüpfung auch mit einem einfach & durchführen kann. Was der Unterschied zum doppelten && ist, soll der folgende Artikel beleuchten. Dieses Verhalten ist unabhängig von der Programmiersprache, für PHP habe ich es auch nochmals demonstriert. Im folgenden Beispiel wird Java verwendet. Grundsätzlich müssen bei einer UND-Verknüpfung alle Bedingungen WAHR sein, damit das Statement ausgeführt wird. Sollte nur eine Bedingung FALSE sein, wird der ELSE-Zweig genommen. Der Unterschied zwischen & und && ist jetzt nur, wie geht es weiter, wenn die erste Bedingung bereits FALSE ist.

Beispiel von && vs &

public class UndUnd {

	public static void main(String[] args) {

		if(a() && b()){
			System.out.println("Fertig");
		}else{
			System.out.println("UnFertig");
		}
		
	}
	
	public static boolean a(){
		System.out.print("Hallo ");
		return false;
	}
	
	public static boolean b(){
		System.out.println("Welt");
		return true;
	}
}

// Ausgabe: Hallo
//               Unfertig

Bei Verwendung des && Operators, wird sofort nach der ersten fehlerhaften Bedingung abgebrochen. Für die Performance ist dies natürlich optimal. Jedoch könnte es sein, das sich in der Funktion B Programmcode befindet der trotzdem auf jeden Fall ausgeführt werden soll, genauso wie in der Funktion A. Hier würde man den einfach & Operator verwenden.

public class UndUnd {

	public static void main(String[] args) {

		if(a() & b()){
			System.out.println("Fertig");
		}else{
			System.out.println("UnFertig");
		}
		
	}
	
	public static boolean a(){
		System.out.print("Hallo ");
		return false;
	}
	
	public static boolean b(){
		System.out.println("Welt");
		return true;
	}
}

// Ausgabe: Hallo Welt
//              UnFertig

Performance && vs. &

Für die Performance sollte man immer && verwenden, weil dann bereits nach der ersten fehlerhaften Bedingung abgebrochen wird. Wenn man gewährleisten will das alle Bedingungen überprüft werden, sollte man dagegen das einfach & wählen.

Zusammenfassung – tl;dr

Soll sichergestellt werden, dass alle Bedingungen in einem if untersucht werden, sollte ein einfaches & verwendet werden, besser für die Performance ist die Verwendung ist &&.

Weitere Fragen zur Java-Programmierung? Jetzt einfach und schnell einen Kommentar hinterlassen, mit E-Mail Adresse, und deine Frage wird ausführlich im BugBlog beantwortet.

[random_content group_id=”210" num_posts=”1"]

Leave a Reply

Your email address will not be published. Required fields are marked *