thinking in java chapter 08