thinking in java chapter 03