Static variables and methods belong to the class rather than any instance. They are shared across all instances of the class. A static method cannot access a non-static variable because an instance is not present. Static variables and methods are accessed using the class name rather than an instance. Static initialization blocks run when the class is first loaded.