黑马程序员技术交流社区

标题: 谁解释一下一个程序中有多个main函数的问题 [打印本页]

作者: 周志伟    时间: 2013-5-29 22:57
标题: 谁解释一下一个程序中有多个main函数的问题
本帖最后由 周志伟 于 2013-5-29 22:59 编辑
  1. class Car
  2. {
  3.         static String color = "pink";
  4.         static int num = 10;
  5.         
  6.         public static void main(String[] args)
  7.         {
  8.                 System.out.println("color = " + color + " ,num = " + num);
  9.         }
  10. }

  11. class CeShi
  12. {
  13.         static String name = "wesley";
  14.         static int num = 10;

  15.         public static void main(String[] args)
  16.         {
  17.                 System.out.println("Hello World!");
  18.                 System.out.println("name = " + name + " ,num = " + num);
  19.         }
  20. }
  21. class Car1
  22. {
  23.         static String color = "pink";
  24.         static int num = 10;
  25.         
  26.         public static void main(String[] args)
  27.         {
  28.                 System.out.println("color = " + color + " ,num = " + num);
  29.         }
  30. }

  31. class CeShi1
  32. {
  33.         static String name = "wesley";
  34.         static int num = 10;

  35.         public static void main(String[] args)
  36.         {
  37.                 System.out.println("Hello World!");
  38.                 System.out.println("name = " + name + " ,num = " + num);
  39.         }
  40. }
复制代码
一个程序中一般有一个main函数,我的这个程序有4个main函数,也可以运行。运行结果见图。为什么啊?能讲解一下原理吗?谢谢啦。




作者: 刘勇强    时间: 2013-5-29 23:10
这跟你把car car1 ceshi ceshi1分别写到不同的java文件里是一样的

编译后生成了4个class文件,你用java.exe执行时需要选择执行哪一个类文件,比如 Car的类文件,java.exe会去找这个类的main函数入口.

跟普通java程序没什么区别.你只不过写到了一个java文件里。关键是你的类文件都定义成了默认权限。  main就是个程序执行的入口
作者: 神之梦    时间: 2013-5-29 23:12
一个.java文件中可以有多个类,每个类里面都可以有一个主函数,但是如果有一个public类,那么.java文件名只能和那个public类名相同
所以.java文件的限制是只能有一个被public修饰的类。
楼主编译后,会生产四个.class文件,虚拟机执行的是class文件,几个class文件没有相互调用等关系,所以这是不成问题的。如果一个类中有两个主函数才会出问题。
按楼主这样写完全没啥错。


作者: 孙百鑫    时间: 2013-5-29 23:15
老周.编译出来的是4class文件,而你运行的只是一个,当然就会没什么问题了.
作者: 周志伟    时间: 2013-5-29 23:17
本帖最后由 周志伟 于 2013-5-29 23:19 编辑
刘勇强 发表于 2013-5-29 23:10
这跟你把car car1 ceshi ceshi1分别写到不同的java文件里是一样的

编译后生成了4个class文件,你用java.ex ...


写在一起的话,编译程序的时候只需要运行:javac 文件名.java,而分别写4个.java文件的话就得需要一个一个的执行javac 文件名.java。只有这一点区别,对吗? 反正最后得到的都是4个.class文件,对吗?
作者: 刘勇强    时间: 2013-5-29 23:20
周志伟 发表于 2013-5-29 23:17
写在一起的话,编译程序的时候只需要运行:javac 文件名.java,而分别写4个.java文件的话就得需要一个一 ...

是的 分开写就需要编译四次 但结果都是每个类都会生成一个class文件.  java.exe执行的时候就是执行class文件






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2