go to previous page   go to home page   go to next page highlighting
    String stringG = "Red Delicious" ;  // create a String literal, stringG points to it
    String stringH = "Red Delicious" ;  // point stringH to the same String literal

    if (stringG == stringH)
      System.out.println( "One Literal" );
    else
      System.out.println( "NOT Equal" );         

Answer:

One Literal 

Recall that, as an optimization, only one object is made for string literals containing the same characters.

So in the above, both variables point to the same object. The == returns true because stringG and stringH contain identical references.

When the new operator is used in the previous version of this code, two individual objects are constructed and == returns false.


equals Method

Here is another misleading situation:

class ArrayEquality
{
  public static void main ( String[] args )
  {
    int[] arrayE = { 1, 2, 3, 4 };
    int[] arrayF = { 1, 2, 3, 4 };
    
    if (arrayE.equals( arrayF ) )
      System.out.println( "Equal" );
    else
      System.out.println( "NOT Equal" );      
  }
}

Output:
NOT Equal

The equals() method for arrays returns the same boolean value as does ==.

Again, the array object referred to by the variable arrayE is not the same array object that is referred to by the variable arrayF. The two objects look the same, but are different objects, and not equal.


QUESTION 23:

Are there times when you would like a method that examines two arrays (like the above two) and returns true or false depending on the elements of the arrays?


go to previous page   go to home page   go to next page