Main Method in Java

The main method is the entry point to a desktop based core Java application.

Previously, we created our first Java program "Hello.java" as:

public class Hello {

  public static void main(String[] args)

  {

     System.out.println("Hello");

  }

}

We then compiled it using javac as:

javac Hello.java 

We then executed it as:

java Hello

And output should be:

Hello

Though we did not tell which method to execute, Java executed the main method and printed "Hello". This is because main method is the entry point to a desktop based core Java application.

 

Signature of the entry main method

The main method that Java executed is like any other method in Java. However, JVM is programmed to call a main method with a particular signature as below. 

public static void main (String [] args)

Each element of the signature can be explained as below:

  • public - public is the least restricted access modifier. Because jvm, which is outside our program will have to invoke main, we need to give public.

  • static - static methods and variables belong to class and be called without creating object using just the class name. Making main method as static allows JVM to invoke main without creating an object of your class.

  • void - as we are not returning anything back to JVM, we specify the return type as void.

  • String args[] - This String array parameter is for accepting any command line arguments, if passed. Command line arguments are any extra parameters you add to your java command line after the class name. (Note: The name args doesn't matter here and can be anything.)

 

Can we have more than one main method in a class?

Yes, we have more than one main method in our class through overloading just like any other method. The main method is just like any other method, but Java will look for a main method with the signature 'public static void main(String args[])' to start the execution of the program. We can call the other main methods (or even this one) ourselves just like any other method.

 

Quiz

Question 1

Given:

class MyClass{

public static void main (String args) {

System.out.println(args[1]);

}

}

Find output if executed as:

java MyClass Hello World

 

Question 2

Given:

class MyClass {

public static void main (String [] args) {

System.out.println(args[2]);

}

}

Find output if executed as:

java MyClass Hello World

 

Question 3

Given:

class MyClass {

public static void main (String [] args) {

System.out.println (args);

}

}

Find output if executed as:

java MyClass Hello World

 

Question 4

Given:

class MyClass {

public static void main (String [] args) {

System.out.println (args [1]);

}

}

Find output if executed as:

java MyClass Hello World

 

Answers

Answer 1

Will not compile.

String array is required, not a string as the parameter.

 

Answer 2

 We will get java.lang.ArrayIndexOutOfBoundsException.

We are passing only two command line arguments Hello and World, which should be accessed using indexes 0 and 1.

 

Answer 3

This will print: [Ljava.lang.String;@192d342

 

Answer 4

This will print: World

We are passing only two command line arguments Hello and World, which should be accessed using indexes 0 and 1.

Comments

In the main method, which one is correct for String arguments?

String[] args

String [] args

String args[]

Was it useful?

Quick Notes Finder Tags

Activities (1) advanced java (1) agile (3) App Servers (6) archived notes (2) Arrays (1) Best Practices (12) Best Practices (Design) (3) Best Practices (Java) (7) Best Practices (Java EE) (1) BigData (3) Chars & Encodings (6) coding problems (2) Collections (15) contests (3) Core Java (All) (55) course plan (2) Database (12) Design patterns (8) dev tools (3) downloads (2) eclipse (9) Essentials (1) examples (14) Exception (1) Exceptions (4) Exercise (1) exercises (6) Getting Started (18) Groovy (2) hadoop (4) hibernate (77) hibernate interview questions (6) History (1) Hot book (5) http monitoring (2) Inheritance (4) intellij (1) java 8 notes (4) Java 9 (1) Java Concepts (7) Java Core (9) java ee exercises (1) java ee interview questions (2) Java Elements (16) Java Environment (1) Java Features (4) java interview points (4) java interview questions (4) javajee initiatives (1) javajee thoughts (3) Java Performance (6) Java Programmer 1 (11) Java Programmer 2 (7) Javascript Frameworks (1) Java SE Professional (1) JPA 1 - Module (6) JPA 1 - Modules (1) JSP (1) Legacy Java (1) linked list (3) maven (1) Multithreading (16) NFR (1) No SQL (1) Object Oriented (9) OCPJP (4) OCPWCD (1) OOAD (3) Operators (4) Overloading (2) Overriding (2) Overviews (1) policies (1) programming (1) Quartz Scheduler (1) Quizzes (17) RabbitMQ (1) references (2) restful web service (3) Searching (1) security (10) Servlets (8) Servlets and JSP (31) Site Usage Guidelines (1) Sorting (1) source code management (1) spring (4) spring boot (3) Spring Examples (1) Spring Features (1) spring jpa (1) Stack (1) Streams & IO (3) Strings (11) SW Developer Tools (2) testing (1) troubleshooting (1) user interface (1) vxml (8) web services (1) Web Technologies (1) Web Technology Books (1) youtube (1)