^^^ agreed.
Also, if it's any help, I have a piece of advice that I wish someone had told me when I started coding.
Java (and probably many other coding languages) is very literal. What always helped me code is saying what I want to happen in my head, turn it to very basic, literal speech, and applying that to code.
For example, if we want this:
A FireBlast that shoots fire when it's charged.
Then in Java's "literal language" we would have this:
If a player is shifting with an ability named "FireBlast" and if the ability "FireBlast" is charged then shoot the ability.
Now another thing that comes with Java is learning to identify the "broad terms" or "broad statements" that could have many different applications. For example, when I said "if the ability FireBlast is charged" that could be considered a broad statement. This is because extra code would need to be used to figure out when FireBlast is charged. A "literal" statement we could use to find this in Java's "literal language" is this:
If the current run time of the ability is longer than the charge duration, then the ability "FireBlast" is considered charged.
Also, the same thing could be applied to "then shoot the ability" because extra code and another "literal" statement would be needed to consider that function.
So, as you can see Java and code in general is very literal. This won't help you learn the vocabulary of Java as Pride stated above, but this will help you understand how the language works when you start making abilities. These are just the things that run through my head when I code. Figure out what you want to achieve, make your goal extremely literal. And write out your goal into your IDE. Translate your goal from english into java, because java is a language.
Edit
This also makes Java just like any other language you would learn. For example, when you learn Spanish you not only learn it's vocabulary but you also learn sentence structure.