`

public static void main(String[] args){}函数诠释

阅读更多

主函数的一般写法如下:

  public static void main(String[] args){…}

  下面分别解释这些关键字的作用:

  (1)public关键字,这个好理解,声明主函数为public就是告诉其他的类可以访问这个函数。

  (2)static关键字,告知编译器main函数是一个静态函数。也就是说main函数中的代码是存储在静态存储区的,即当定义了类以后这段代码就已经存在了。如果main()方法没有使用static修饰符,那么编译不会出错,但是如果你试图执行该程序将会报错,提示main()方法不存在。因为包含main()的类并没有实例化(即没有这个类的对象),所以其main()方法也不会存。而使用static修饰符则表示该方法是静态的,不需要实例化即可使用。

  (3)void关键字表明main()的返回值是无类型。

  **(4)参数String[] args,这是本文的重点。

  第一、程序使用者可以在命令行状态下向某个类传递参数。看下面的例子:

  public class ArgsDemo {

  public static void main(String[] args) {

  String str = new String();

  for (int i = 0; i < args.length; i++) {

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

  str += args[i];

  }

  System.out.println(str);

  }

  }

  使用javac ArgsDemo.java命令生成ArgsDemo.class文件;然后使用“java ArgsDemo 参数一 参数二 参数三 …”的格式向ArgsDemo类传递参数。该示例程序将首先输出参数,然后输出所有参数的和。比如java ArgsDemo a b c,将得到这样的输出:

  a

  b

  c

  abc

  需要注意的是,如果这里的循环条件不是i <args.length,而是i <5,则在命令行中输入的参数必须是5个,否则将会报错,错误类型为:

  Exception in thread “main” java.lang.ArrayIndexOutOfBoundException:3

  at ArgsDemo.main(ArgsDemo.java:5)

  第二、可以在另一个类中向包含main()的类传递参数,如下例:

  public class A {

  public static void main(String[] args)

  {

  for(int i=0;i <args.length;i++)

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

  }

  }

  public class B {

  public static void main(String[] args)

  {

  c = new A();

  String[] b = {"111","222","333"};

  c.main(b);

  }

  }

  首先定义一个class A,在A中定义一个main()函数,在该函数中输出参数args。然后定义一个classB,在B中初始化一个A的实例c,然后向c传递参数,并且调用c的main方法打印出传入的参数值。输出结果如下:

  111

  222

  333

  由于main()函数是静态函数,即不需要实例化也能使用,所以B使用下面的写法也能完成相同的功能:

  public class B {

  public static void main(String[] args)

  {

  //A c = new A();

  String[] b = {"111","222","333"};

  A.main(b);

  }

  }

  总结:参数args的主要作用是为程序使用者在命令行状态下与程序交互提供了一种手段。此外在其他类中直接使用main()函数,并传递参数也是可行的,虽然这种方法不太常用,但毕竟为我们提供了一种选择。

分享到:
评论

相关推荐

    稳定性专题 | StackOverFlowError 常见原因及解决方法

    每一个 JVM 线程都拥有一个私有的 JVM 线程栈,用于存放当前线程的 JVM 栈帧(包括被调用函数的参数、...public class SimpleExample {public static void main(String args[]) { a(); }public static void a() {int

    java編成百例(部分)

    public static void main( String args[] ){ //构造函数 Container container = getContentPane(); //得到容器 container.setLayout( new BorderLayout() ); //设置布局管理器为Borderlayout container.add...

    程序设计(反转、猴子).pdf

    /** * * @author * Jiayb */ public class Test { public static void main(String[] args) { getPeach(10); System.out.println("递归方式:总数="+getPeachs(10)); reverseString("abcdefgh"); } /** * 题一: * ...

    java个人所得税计算程序

    java 个人所得税计算程序 1.1. 类名:IncomeTax 1.1.1. 类描述 程序入口类,完成菜单显示、输入、回显、计算个人所得税、修改相关计算参数的总调度。...5) public static void main(String args[]) //主程序入口

    C#中委托的例子(简单)

    static void Main(string[] args) { TestClass testClass = new TestClass(); MyDelegate mydelegate = new MyDelegate(testClass.HelloDelegate); //产生delegate对象 mydelegate("Hello delegate"); ...

    Android studio 运行main 函数的方法

    标题Gradle构建问题 切换到Project工程下.idea/gradle.xml添加属性 ... public static void main(String[] args){ if(args==null){ throw new NullPointerException(The input is \null\); }else if((args

    二级java南开上机题(全)+答案

    public static void main(String args[]){ int sum; __________ ; int arrayList[ ] = new int[20]; for(int i=0; i; i++) arrayList[i]=i+1; int pos=0; while(pos){ if(______) ...

    JNI函数使用

    public static void main(String[] args) throws java.io.UnsupportedEncodingException { System.loadLibrary("Sample3"); Sample3 sample = new Sample3(); String[] texts = sample.stringMethod("java编程...

    浅析C#中的Main(String[] args)参数输入问题

    public class Hello{ public static void Main(String[] args) { switch (args[0]) { case “老板”: Console.WriteLine(“早上好!我们随时准备为您效劳!”); break; case “雇员”: 

    JAVA流式文件转版式文件pdf.jar

    public static void main(String[] args) throws Exception { //需要更改格式的文件路径,可以是docx,doc,wps String filePath = "d:\\1111.docx"; // 调用转换工具函数,在相同的文件路径下生成对应文件名的.pdf...

    j关于ava语法的ppt

    public static void main(String[] args) { int first = 20, second = 30; float floatfirst = 30f, floatsecond = 20f; long sum; double multiple; /** 变量会自动强制转换并提升为long 型 变量 */ sum ...

    上海交大网络面向对象程序设计Java第一、二、三次作业答案.doc

    D) Java 语言规定构造方法只能通过new自动调用 2、作为Java应用程序入口的main方法,其声明格式可以是( B ) A) public void main(String [] args) B) public static void main(String [] args) C) public static ...

    用java编写猜数游戏

    public static void main(String args[]){ int i; Game game=new Game(); Scanner in=new Scanner(System.in); while(true){ System.out.println("\t\t\t欢迎光临猜数游戏"); System.out.println...

    java实验报告-(2).doc

    " "public class a5 { " "public static void main(String[] args) { " "Scanner x=new Scanner(System.in); " "int i=x.nextInt(); " "x.close();}} " "6. package shiyan; " "public class a6 { " "public static...

    JAVA实验报告(1).doc

    public class prime { public static void main(String[] args) { System.out.println("100内的素数为:"); loop: for (int i = 2; i ; i++) { for (int j = 2; j ; j++) { if (i % j == 0) { continue loop; } } ...

    最新JAVA编程题全集_50题及答案

    public static void main(String[] args) { String s="ABCD";//原字符串 List&lt;String&gt; result = list(s, "");//列出字符的组合,放入result System.out.println(result.size());; System.out.println...

    j2se项目源码及介绍_飞鸽传书

    函数描述 public static void main(String[] args) 类名称 FileData 类描述 此处加入类详细说明 包描述 data 函数描述 public String getFileName() public void setFileName(String fileName) public String ...

    在系统中需要版本管理时,比较系统或系统文件版本号的大小的通用函数,java实现

    public static void main(String[] args) { String[] versions = new String[]{"17.2.3", "17.2.3", "17.2.4.01", "17.2.4.00"}; String maxOne = "0"; int flag = 0; for(int i=0; i; i++){ flag = ...

    北交《JAVA语言设计》在线作业二.docx

    A.public void main(String arg[]) B.public static void main(String[]args) C.public static void main() D.public static int main(String[]arg) 答案:B 5.下列代码中,将引起一个编译错误的行是( ) 1)public ...

    .net面向对象的实例代码

    static void Main(string[] args) { Cat bb = new Cat(); //Animal bb = new Cat(); bb.Show(); //基类方法必须声明了virtual,子类才能使用override. //通过子类创建的对象,无论被转成什么类型,都只会...

Global site tag (gtag.js) - Google Analytics