Logischer Operator in einem Beispiel

Phoney

Grünschnabel
Hi.

Was && und & unterscheidet weiß ich. & soll dabei allerdings nicht das bitweise Operator sein.
Angenommen A ist vom Typ Bool, genau wie B, A ist falsch und B ist true
dann würde bei A && B sich das Programm nur A angucken, A ist falsch und lässt es aus.
Bei A&B wird trotzdem noch geguckt oder berechnet, welchen Datentyp B hat.
Das müsste sich doch auch irgendwie in einem JAVA Programm schön sichtbar unterzukriegen sein. Der Trick ist mir aber nicht geläufig. Wie kann man in Java denn darstellen dass er nur das ausgibt, was er berechnet hat?
 
Hallo,

schau mal hier:
Java:
/**
 * 
 */
package de.tutorials;

/**
 * @author Tom
 *
 */
public class BooleanExpressionEvaluationExample {

  /**
   * @param args
   */
  public static void main(String[] args) {
    System.out.println(" -> " + (a(true) && b(true)));
    System.out.println(" -> " + (a(false) && b(true)));
    System.out.println(" -> " + (a(true) && b(false)));
    System.out.println(" -> " + (a(false) && b(false)));
    
    System.out.println("################");
    
    System.out.println(" -> " + (a(true) & b(true)));
    System.out.println(" -> " + (a(false) & b(true)));
    System.out.println(" -> " + (a(true) & b(false)));
    System.out.println(" -> " + (a(false) & b(false)));
    
    System.out.println("###############");
    
    System.out.println(" -> " + (a(true) || b(true)));
    System.out.println(" -> " + (a(false) || b(true)));
    System.out.println(" -> " + (a(true) || b(false)));
    System.out.println(" -> " + (a(false) || b(false)));
    
    System.out.println("################");
    
    System.out.println(" -> " + (a(true) | b(true)));
    System.out.println(" -> " + (a(false) | b(true)));
    System.out.println(" -> " + (a(true) | b(false)));
    System.out.println(" -> " + (a(false) | b(false)));
  }

  private static boolean b(boolean value) {
    System.out.print("b: " + value +" ");
    return value;
  }

  private static boolean a(boolean value) {
    System.out.print("a: " + value + " ");
    return value;
  }
}

Ausgabe:
Code:
a: true b: true  -> true
a: false  -> false
a: true b: false  -> false
a: false  -> false
################
a: true b: true  -> true
a: false b: true  -> false
a: true b: false  -> false
a: false b: false  -> false
###############
a: true  -> true
a: false b: true  -> true
a: true  -> true
a: false b: false  -> false
################
a: true b: true  -> true
a: false b: true  -> true
a: true b: false  -> true
a: false b: false  -> false

Gruß Tom
 
Zurück