thinking in java chapter 04