Look a static keyword in front of a member varialble is to make it global and should be accessed by the name of its Class. as ClassName.memberName
And moreever a static method can access another static method only i.e. the reason why you should declare a member static when you want to access it directly in main(). Your answer to first question also lies here.