There's absolutely no way you can start programming games in Java before you can grasp the fundamentals of programming in Java.
I built games when I started programming. In my first week of programming I followed a tutorial to build a simple FPS and after only another week I had a world map (with a building), could move & look around, some collisions and a gun floating in front of the camera. The results were simplistic and the language I used had a very simple 3D engine in-built which did most of the hard work (like I didn't know how to perform simple collisions until after another month) but from a beginner point of view it's awesome when your able to build something like that very quickly.
Plus there are also tonnes of "learn to program with game development" style books. I personally think they tend to be terrible books not because they are too difficult but because they are too simple.
If done right, game development is one of the best methods for teaching people to program. At least it's more exciting then building example apps for doing dull stuff like converting centimetres to inches.
ok i saw this line
public static void main(String[] args) {
I dont know what it means and what it does can someone explain it in simple terms for me?
When your Java program runs it needs to know where to start, an entry point for your program. To do this there is a common 'signature' that the entry point takes and that is the 'private static void main(String[] args)' method above. All of that is required for the entry point to work, if any of it is missing then Java will not think it's the entry point of your program. A quick cooks tour of what all those keywords do are:
'public' means it can be accessed by any part of the program. Until you fully understand what public does, and what it's alternatives (private, protected and package-private) do, you should just always start your methods with the 'public' keyword.
'static' is optional and means it's class-wide, but I wouldn't worry too much about this yet (you should learn more about classes first).
Next some functions return a value, so when you call them you get something back. If they don't return a value they have the return type 'void'.
'main' is the name of the function. The entry point must be called main, but when you define other functions you can give them other names.
The '(String[] args)' is the parameter that is passed into the application when it's started. The 'String[]' is the type of the parameter and 'args' is the name of the parameter variable. The '[]' bit means it's an array and 'String' means the array can only hold Strings. Finally a String is essentially a piece of text.