*NB: I know that I have probably done somethings in a less than optimal way, like not using static for example, but I've just made that program using the stuff I've learned so far.
It is not necessarily true that static makes the code significantly more optimal. But regardless, that is not a good reason to use static anyway. My general guideline is to use it for shared utility classes (like the Math class) and other classes which require a method to serve a functional purpose and does not require direct access to any instance fields other than via the argument list.
Regards,
Jim