A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 周志伟 于 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函数,也可以运行。运行结果见图。为什么啊?能讲解一下原理吗?谢谢啦。



评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

5 个回复

倒序浏览
这跟你把car car1 ceshi ceshi1分别写到不同的java文件里是一样的

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

跟普通java程序没什么区别.你只不过写到了一个java文件里。关键是你的类文件都定义成了默认权限。  main就是个程序执行的入口

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
一个.java文件中可以有多个类,每个类里面都可以有一个主函数,但是如果有一个public类,那么.java文件名只能和那个public类名相同
所以.java文件的限制是只能有一个被public修饰的类。
楼主编译后,会生产四个.class文件,虚拟机执行的是class文件,几个class文件没有相互调用等关系,所以这是不成问题的。如果一个类中有两个主函数才会出问题。
按楼主这样写完全没啥错。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
老周.编译出来的是4class文件,而你运行的只是一个,当然就会没什么问题了.
回复 使用道具 举报
本帖最后由 周志伟 于 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:17
写在一起的话,编译程序的时候只需要运行:javac 文件名.java,而分别写4个.java文件的话就得需要一个一 ...

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

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马