Static Methods

Classic programmed-learning exercises, refreshed for modern Java and presented in the current MrStyner.com portfolio style.

Modern Java noteThis archive has been refreshed for Java 25 LTS. Core language concepts remain useful, while outdated setup instructions and browser-era Java are labeled or replaced. Java 26 is the current feature release; Java 25 is used here as the stable teaching baseline.
go to previous page   go to home page   go to next page        

Answer:

Yes. A class definition will have its own variables (state), and will have its own methods (behavior.)

Static Methods

The methods that a class definition has are called static methods. (Sometimes they are called class methods, but this is confusing.) A static method is a characteristic of a class, not of the objects it has created.

Important: A program can execute a static method without first creating an object! All other methods (those that are not static) must be part of an object. An object must exist before they can be executed.

Here is the example program again:

// The file StringTester.java
//
class StringTester
{

  public static void main ( String[] args )
  {
    String str1;   // str1 is a reference to an object, 
    int    len;    // len is a primitive variable of type int

    str1 = new String("Random Jottings");  // create an object of type String
                                                           
    len  = str1.length();  // invoke the object's method length()

    System.out.println("The string is " + len + " characters long");
  }
}

This application is similar to many you have seen so far. Now you can understand more details about what is going on. Assume that a file named StringTester.java contains the above source code.

  • The file defines a class called StringTester.
  • The class has a static method called main().
  • Since main() is a static method, it is a characteristic of the class. Objects of the class do not have a main() method.
    • Since main() is a static method, there will be only one main() method.
  • After the file has been compiled, the resulting bytecodes are executed by the Java virtual machine.
    • The user executes the program by typing java StringTester.
  • The Java virtual machine looks into the bytecode version of the class definition for the main() method.
    • No object exists at this point.
  • The main() method starts running, creates a String object using new, invokes its length() method, and continues.

Remember the idea of object-oriented programming: an application consists of a collection of cooperating software objects whose methods are executed in a particular order to get something useful done. The steps listed above is how the collection of objects gets started. (In this case only one object was created.)

QUESTION 13:

Say that you create a file that contains the definition of a class, but the the class contains no main() method. Can the methods of this class ever be executed?