Java Programming Mysteries Explained for Those Learning to Program for the First Time, and for Experienced Programmers Just Learning Java