5.7. Static Variables and Methods

In Unit 2, we explored the Math class and its many static methods like Math.random(), and we’ve always used a main method which is static. In this lesson, you will learn to write your own static variables and methods.

Static variables and methods belong to a class and are called with the Class Name rather than using object variables. There is only one copy of a static variable or method for the whole class. For example, the main method is static because there should only be 1 main method. Static methods can be public or private.

The static keyword is placed right after the public/private modifier and right before the type of variables and methods in their declarations, as seen below. To use a static method or variable, you use the Class Name and the dot (.) operator.

// static variable
public static type variableName;

// static method
public static returnType methodName(parameters) {

}

// To call a static method or variable, use the Class Name
System.out.println(ClassName.staticVariable);
ClassName.staticMethod();

Since there is only 1 copy of a static variable or method, static variables are often used to count how many objects are generated. In the following class Person, there is a static variable called personCounter that is incremented each time the Person constructor is called to initialize a new Person object. The static method printCounter() prints out its value. Note that static methods only have access to static variables and static methods, not the other instance variables or methods. You can also watch how it works in the Java visualizer.

5.7.1. groupwork Programming Challenge : Static Song and counter

In the last lesson, we wrote a class with methods to print out the song The Ants Go Marching. Notice that this is a class where there are no instance variables and we don’t really need to generate multiple objects. With students or pets, it makes sense to have multiple objects. With the Song, we can just make the methods static and have just 1 copy of them.

  1. Copy in your class from the last lesson into this active code window. Change the method(s) that print out the verses of the Song to be static. In the main method, change how you call the static methods by using just the classname instead of creating an object.

  2. Add a static variable to the class that keeps track of the number of verses. Increment this variable each time the method to print a verse is called and print it out.

5.7.2. Summary

  • Static methods and variables include the keyword static before their name in the header or declaration. They can be public or private.

  • Static variables belong to the class, with all objects of a class sharing a single static variable.

  • Static methods are associated with the class, not objects of the class.

  • Static variables are used with the class name and the dot operator, since they are associated with a class, not objects of a class.

  • Static methods cannot access or change the values of instance variables, but they can access or change the values of static variables.

  • Static methods cannot call non-static methods.

You have attempted of activities on this page
Next Section - 5.8. Scope and Access