static things (static method and variables) are accessible in both non-static and static methods because static exists in the class. you do not need to create an instance of the class just to use that static variable/method.
Static variables are initialized when the class is loaded. A class gets loaded the first time it is referenced in the program. Therefore static variables are accessible to any instance method or constructor because they are already initialized before any instance of an object is created.
Instance variables are initialized during the creation of an instance (an object).