Solved

Why main method required in java

Posted on 2003-11-09
2
266 Views
Last Modified: 2010-04-17
Why the signature of main method be always public static void main(String args[])?
What actually happens when we write >> java <classname> <argument1> ?
0
Comment
Question by:amol_ingle
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 9

Expert Comment

by:bhagyesht
ID: 9712763
Its public static void main for the following reasons.
public since we need to access it outside out class
static since we dont create an instance of the class for executing main
void is the return type (since we are calling from outside return value serves almost no purpose.
string args[] is for storing the arguments as an array

when u call the java class with arguments the arguments are stored in the array and you can access them later in your code.
0
 
LVL 15

Accepted Solution

by:
jimmack earned 250 total points
ID: 9713241
>> What actually happens when we write >> java <classname> <argument1> ?

1) The Java Virtual Machine is started ("java") and it attempts to load the specified class ("<classname>").
2) When the class is successfully loaded, the JVM looks for the main() method entry-point and passes the remaining command line parameters ("<argument1> ...") to this method as an array of Strings.

That's why if you make a typo on the command line, step 1) responds with "NoClassDefFoundError".
If main() is not defined correctly, then step 2) responds with "NoSuchMethodError: main"

Just for information: The main method signature should *always* be the same.  The Java Virtual Machine specifically looks for this method, so if you were to write:

public static void main()
{
   .
   .
}

It wouldn't run.

Also, because Java is fairly relaxed about array definitions, you can also use:

public static void main(String[] args)

(This is the preferred way to define an array - ie. with the [] following the class/type rather than the variable - but both will work OK)
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Entering a date in Microsoft Access can be tricky. A typo can cause month and day to be shuffled, entering the day only causes an error, as does entering, say, day 31 in June. This article shows how an inputmask supported by code can help the user a…
This is about my first experience with programming Arduino.
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

739 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question