thinking in java chapter 09