Rogers Cadenhead is a ServiceNow developer who has created applications in insurance and customer service. He is also the author of more than a dozen books on computer programming and web publishing, including the Sams Teach Yourself Java in 21 Days series, and the chairman of the RSS Advisory Board, the group that publishes the RSS 2.0 specification.
This book appears to throw you in at the deep end. If a new programmer just looked at Day 1 it could be quite intimidating, as it goes into classes, inheritance and has you type a lot of code you won't understand, but Day 2 moves into explanations of variables, data types, operators and so on, which will make that beginning programmer sigh with relief.
I think it would be helpful if you already understand the basic concepts of programming and want some practical experience with Java; I wouldn't recommend this for anyone who doesn't already have some experience (even if tiny) because the nuances of things like class/local/instance variables might be very confusing to someone who has only just learned what a variable is. In short, it's better for a novice than a complete beginner.
This book does guide you towards best practices, and helps with the more abstract areas, and seems good at bolstering existing knowledge.
Unfortunately, I'm going to read this cover to cover again because I haven't retained much aside from basic OOP principles and method chaining concepts. While I initially thought memorizing syntax was the key, I've realized I need to focus more on understanding core programming patterns and problem-solving approaches. I want to solidify my grasp of Java's type system, generics, and memory management before moving on, since my goal is eventually learning C++ for performance-critical applications and game development. Java and C++ share many fundamental concepts, so building a strong foundation in object-oriented design patterns and understanding how different languages handle memory will serve me well. One thing I will say about this book is that it's full of practical examples and hands-on projects, though I should note that since this covers Java 7 and older Android development approaches, I'll need to supplement it with more current resources covering modern Java features and Kotlin for Android development.