| The "Hello World" Application

## Using Classes and Objects

> This section explains how the "Hello World" application uses classes and objects. If you aren't familiar with object-oriented concepts, then you might find this section confusing. If so, feel free to skip ahead to the lesson Object-Oriented Programming Concepts

> The "Hello World" application is about the simplest Java program you can write that actually does something. Because it is such a simple program, it doesn't need to define any classes except for `HelloWorldApp`. However, most programs that you write will be more complex and require you to write other classes and supporting Java code.

> The "Hello World" application does use another class--the `System` class--that is part of the API (application programming interface) provided with the Java environment. The `System` class provides system-independent access to system-dependent functionality. For information about the `System` class, see Using System Resources.

> The bold code in the following listing illustrates the use of a class variable of the `System` class, and of an instance method.

> >     /**
> >      * The HelloWorldApp class implements an application that
> >      * simply displays "Hello World!" to the standard output.
> >      */
> >     class HelloWorldApp {
> >         public static void main(String[] args) {
> >             System.out.println("Hello World!"); //Display the string.
> >         }
> >     }

> #### Using a Class Method or Variable

> > Let's take a look at the first segment of the statement:

> > >     System.out.println("Hello World!");

> > The construct `System.out` is the full name of the `out` variable in the `System` class. Notice that the application never instantiates the `System` class and that `out` is referred to directly from the class name. This is because `out` is a class variable--a variable associated with the class rather than with an instance of the class. You can also associate methods with a class--class methods.

> > To refer to class variables and methods, you join the class name and the name of the class method or class variable together with a period (".").

> #### Using an Instance Method or Variable

> > Methods and variables that are not class methods or class variables are known as instance methods and instance variables. To refer to instance methods and variables, you must reference the methods and variables from an object.

> > While `System`'s `out` variable is a class variable, it refers to an instance of the `PrintStream` class (a class provided with the Java development environment) that implements the standard output stream.

> > When the `System` class is loaded into the application, it instantiates `PrintStream` and assigns the new `PrintStream` object to the `out` class variable. Now that you have an instance of a class, you can call one of its instance methods:

> > >     System.out.println("Hello World!");

> > As you can see, you refer to instance methods and variables similarly to the way you refer to class methods and variables. You join an object reference (`out`) and the name of the instance method or variable (`println`) together with a period (".").

> > The Java compiler allows you to cascade references to class and instance methods and variables together, resulting in constructs like the one that appears in the sample program:

> > >     System.out.println("Hello World!");

> > This line of code displays "Hello World!" to the application's standard output stream.

> #### Summary

> > A class method or class variable is associated with a particular class. The runtime system allocates a class variable once per class, no matter how many instances exist of that class. You access class variables and methods through the class.

> > An instance method or instance variable is associated with a particular object (an instance of a class). Every time you create an object, the new object gets a copy of every instance variable defined in its class. You access instance variables and methods through objects.

| The "Hello World" Application