|
|
|
1000 Java Tips ebook
|
|
 

Free "1000 Java Tips" eBook is here! It is huge collection of big and small Java
programming articles and tips. Please take your copy here.
Take your copy of free "Java Technology Screensaver"!. |
|
The Java Lesson 6: Boolean expressions and operations
|
JavaFAQ Home » Java Lessons by Jon Huhtala

The Java Lesson 6
Boolean expressions and operations
Boolean expressions
-
Always result in a boolean value (either true or false)
-
Are used to resolve logic
questions, such as determining if two variables have the same value
-
May contain several different
operators
Comparison operators
| Operator |
Operation |
| < |
Less than |
| <= |
Less than or equal |
| > |
Greater than |
| >= |
Greater than or equal |
| == |
Equal |
| != |
Not equal |
Note: Java makes a clear distinction between assignment ( = ) and a test for equality (
== ). Failure to
understand this leads to many programming errors!
Example: This program reads two
numeric values from the user and displays the result of several comparisons
involving the two numbers.
public class App { public static void
main(String[] args) {
// Variables for holding two
numeric values entered by the user
int
x; double y;
// Prompt for
and read the two numeric values
System.out.print("First number (integer): "); x =
Keyboard.readInt(); System.out.print("Second number
(floating-point): "); y =
Keyboard.readDouble();
// Display information
comparing the two values
System.out.println("
"
+ x + " < " + y + " is " + (x "<" y));
System.out.println(" " + x + " <= " + y + " is " + (x <=
y)); System.out.println(" " + x + " > " + y + " is
" + (x > y)); System.out.println(" " + x + " >=
" + y + " is " + (x >= y)); System.out.println(" "
+ x + " == " + y + " is " + (x == y));
System.out.println(" " + x + " != " + y + " is " + (x != y));
} }
Note: When you test this code, use
several different values - including the same value for both numbers.
Logical operators
-
Combine the results of two Boolean expressions
into a single boolean
value
-
Provide for complex logic.
The following table shows the operators and how they can be used to combine
the results of two Boolean expressions X and Y:
| Operator |
Operation |
Resulting value
true
if... |
X and Y
always evaluated? |
| & |
AND |
X and Y are both true |
Yes |
| | |
OR |
either X or Y is true |
Yes |
| ^ |
XOR (exclusive OR) |
X and Y have different
values |
Yes |
| && |
Conditional AND |
X and Y are both true |
No |
| || |
Conditional OR |
either X or Y is true |
No |
The conditional AND ( && ) and OR ( || ) are sometimes called "short-circuit" operators because the
second operand is not always evaluated depending on the value of the first
operand. If the first operand is false, the result of an AND will always be false regardless of the value
of the second operand. If the first operand is true, the result of an OR will always be true regardless of the value of
the second operand.
Example: The following program
uses two values entered by the user to determine if a customer is entitled to
free shipping. A customer receives free shipping if their order amount is
greater than or equal to 100 and they are a preferred customer.
public class App { public static void
main(String[] args) {
// Variables for holding
order amount and valued customer data to be // entered
by the user
double amount;
char valuedCust;
// Variables for holding
information about free shipping
boolean
isFree;
// Prompt for and read order amount and
valued customer data
System.out.print("Order
amount (floating-point): "); amount =
Keyboard.readDouble(); System.out.print("Valued
customer? (Y)es or (N)o: "); valuedCust =
Keyboard.readChar();
// Determine and display
information about free shipping. // Shipping is free
if the order amount is greater than or equal $100 //
AND the customer is a valued customer.
isFree =
(amount >= 100 && (valuedCust == 'Y' || valuedCust ==
'y')); System.out.println("
Free shipping? " +
isFree); } }
Note: When you test this code, use
several different values - including upper and lower case 'Y' or 'N' in
response to the "Valued Customer?" prompt.
A warning about comparing
strings
-
Strings are objects. If you attempt to compare
them using the comparison operators, you are comparing where they are stored
in memory (their addresses) and NOT their contents.
-
To properly compare the
contents of two String
objects you should use the equals() method. This will be covered in a later lesson.
Example: This program reads a
string from the user and erroneously tests it to determine if they entered
"Monday". Because the user's String object and the literal's
String object are in
different memory locations, the result of the comparison will always be false, even if the user enters
"Monday".
public class App { public static void
main(String[] args) {
// String variable for the
day of the week
String
weekDay;
// Variable for indicating if the day is
Monday
boolean isMonday;
// Prompt for and read the day of the week
System.out.print("Day of the week (Monday, Tuesday, etc.):
"); weekDay =
Keyboard.readString();
// Determine and display
information about the day of the week.
isMonday =
(weekDay == "Monday"); System.out.println("
Is the
day Monday? " + isMonday); } }
Certain logical operators
can be combined with assignment
-
The operators are &= (AND equals), |= (OR equals), and ^= (XOR equals)
-
The left operand must be
boolean
Example: The following
program reads a boolean
value from the user and displays its opposite value.
public class App { public static void
main(String[] args) {
// Variable for holding a
boolean value entered by the user
boolean
value;
// Prompt for and read the boolean
value
System.out.print("Enter a boolean value
(true or false): "); value =
Keyboard.readBoolean();
// Determine the opposite
value. If the value is false, XOR with // true results
in true. If the value is true, XOR with true results
// in false.
value ^=
true;
// Display the new value of the
value.
System.out.println("
The opposite value
is " + value); } }
Note: An alternate way to set the
opposite value is to code.
value =
!value;
Review questions
-
If x is a long variable with
a value of 654321 and y is a float variable with a value of 654321.0, what will result from the following expression?
x = y
-
true
-
false
-
0
-
1
-
a compile error
-
What will be displayed by
the following code fragment?
boolean x = true; boolean y = false; boolean z =
!x; System.out.println("Test 1: " + (x | y)); System.out.println("Test
2: " + (y & z)); System.out.println("Test 3: " + (z ^ x));
-
Test 1: true Test 2: true Test 3: true
-
Test 1: true Test 2: false Test 3: true
-
Test 1: true Test 2: false Test 3: false
-
Test 1: false Test 2: false Test 3: true
-
Test 1: false Test 2: true Test 3: false
-
What will happen if an
attempt is made to compile and execute the following code? You may assume the
statements are within a valid main method of a valid application class and
that the line numbers are for reference purposes only.
1 2 3 4 |
double big
= 45.67; byte little = 45; boolean result = big > little
&& little != 100; System.out.println("
The result is " +
result); |
-
the program will compile
and run to display "The result is
true"
-
the program will compile
and run to display "The result is
false"
-
the program will compile
but an error will occur at run time
-
a compile error will occur
at line 3
-
a compile error will occur
at line 4
-
Which of the expressions
below are equivalent to the following? (choose two)
x <= 0
-
!(x >= 0)
-
0 > x
-
!(x > 0)
-
0 >= x
-
0 => x Printer Friendly Page
Send to a Friend
..
Search here again if you need more info!
|
|
|