Link

Puzzle (The Last Laugh)

Consider the following example.

package demo;

public class App {
  public static void main( String[] args ) {
    System.out.print( "H" + "a" );
    System.out.print( 'H' + 'a' );
  }
}

What do you think the above will print? Will it be HaHa?

Ha169

This example was taken from PUZZLE 11: THE LAST LAUGH in Java™ Puzzlers: Traps, Pitfalls, and Corner Cases.

The compiler evaluates the constant expression 'H' + 'a' by promoting each of the char-valued operands ('H' and 'a') to int values through a process known as widening primitive conversion (JLS 5.1.2, JLS 5.6.2). Widening primitive conversion of a char to an int zero extends the 16-bit char value to fill the 32-bit int. In the case of 'H', the char value is 72 and in the case of 'a', it is 97, so the expression 'H' + 'a' is equivalent to the int constant 72 + 97, or 169.