I see java and android as languages that you dont need to know you just look bits up and use them, I cant learn to use these languages freely like c++.
What an immensely silly thing to say. Of course you need to "know" Java, but Java is not C++ so the things you need to know about Java are different then the ones you need to know about C++. The fact that you can use Java without being overwhelmed with it's subtle pitfalls and intricacies at every turn is a *strength* and is a natural effect of it being a higher-level language. Just because you can't understand why something is done a certain way doesn't necessarily mean it is a flaw in a language, just a hole in your knowledge that needs to be filled.