| The "Hello World" Application

## The main Method

> The first bold line in the following listing begins the definition of a `main` 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.
> >         }
> >     }

> Every Java application must contain a `main` method whose signature looks like this:

> >     public static void main(String[] args)

> The method signature for the `main` method contains three modifiers:
> - `public` indicates that the `main` method can be called by any object. Controlling Access to Members of a Class covers the ins and outs of the access modifiers supported by the Java language.
> - `static` indicates that the `main` method is a class method. Instance and Class Members talks about class methods and variables.
> - `void` indicates that the `main` method doesn't return any value.

> #### How the `main` Method Gets Called

> > The `main` method in the Java language is similar to the `main` function in C and C++. When the Java interpreter executes an application (by being invoked upon the application's controlling class), it starts by calling the class's `main` method. The `main` method then calls all the other methods required to run your application.

> > If you try to invoke the Java interpreter on a class that does not have a `main` method, the interpreter refuses to compile your program and displays an error message similar to this:

> > >     In class NoMain: void main(String argv[]) is not defined

> #### Arguments to the `main` Method

> > As you can see from the following code snippet, the `main` method accepts a single argument: an array of elements of type `String`.

> > >     public static void main(String[] args)

> > This array is the mechanism through which the runtime system passes information to your application. Each String in the array is called a command-line argument. Command-line arguments let users affect the operation of the application without recompiling it. For example, a sorting program might allow the user to specify that the data be sorted in descending order with this command-line argument:

> > >     -descending

> > Note to Mac OS JDK Programmers only: The JDK compiler for Mac OS allows an application that does not need to accept command-line arguments to declare its `main` method without any arguments, like this:

> > >     public static void main() {
> > >     . . .
> > >     }

> > An application with such a `main` method will not prompt the user for command-line arguments.

> > The "Hello World" application ignores its command-line arguments, so there isn't much more to discuss here. However, you can get more information about command-line arguments, including the framework for a command-line parser that you can modify for your specific needs, in the Setting Program Attributes lesson.

> > Note to C and C++ Programmers: The number and type of arguments passed to the `main` method in the Java runtime environment differ from the number and type of arguments passed to C and C++'s `main` function. For further information refer to Command Line Arguments in the Setting Program Attributes lesson.

| The "Hello World" Application