If u are learning java then learn it the actual way.. Learning from head first will be easy but then you will have to learn the actual things again later(though headfurst can helps u code fast..) so better learn only once for eg from Thinking in Java...