java项目的入口

在一个java文件中,如果既有一个publicMain(Stringargs[]){...}又有一个publicstaticvoidmain(Stringargs[]){... 在一个java文件中,如果既有一个
public Main(String args[]) {...}
又有一个
public static void main(String args[]) {...}
那么程序的入口是哪里呢?我猜想是后者,但是谁能给点原因?前者算是个什么呢

谢谢
展开
 我来答
Jseven_jy
推荐于2017-11-23 · TA获得超过8122个赞
知道大有可为答主
回答量:2499
采纳率:100%
帮助的人:1128万
展开全部
所有java程序的入口都是

public static void main(String args[]) {...}
没有原因。。java就是这样的。。

public Main(String args[]) {...}
这个是Main类的一个构造方法。。当然。。如果有Main这个类的话。。
如果没有。。那么语法错误了。。因为没有定义返回值。。java中除了构造方法不能有返回值。。其他方法必须有返回值。、。
百度网友58ec04d
2010-08-31 · TA获得超过3267个赞
知道小有建树答主
回答量:206
采纳率:0%
帮助的人:102万
展开全部
public static void main() 在类中占据一个什么样的地位?一个比较少见的例子

定义一个JAVA文件,文件名为Test
class person
{
private int age;
void shout()
{
System.out.println("my age is "+age);
}
public static void main(String []args)
{
person p1=new person();
person p2=new person ();
p1.age=-30;
p1.shout();
p2.shout();
}
}
class a
{
int aa;
void show()
{
System.out.println("show us!");
}
}
可以通过编译,解析
javac Test.java
java person
输出:my age is -30
my age is 0
问题1:一般来说,我们通常都是定义一个启动类做为这个JAVA文件的入口,而这个类通常是权限定义为public,而里面的有一个函数作为整个程序的入口,这个函数被定义为public static void main(String []args),当类多于一个的时候,不是入口函数的类(person)的权限必须定义为public才可以运行的吗?
问题2:请问person类中的public static void main(String []args)算是person类中的成员函数吗?如果是的话p1.age=-30,p1直接在函数中被修改就解析的通,如果不是的话,那public static void main(String []args)和person类是怎样的关系呢?
问题3:本题JAVA源文件的文件名为Test,也就是和person类名不相同,一般我们定义的public类的类名和JAVA源文件的文件名是相同的,请问JAVA源文件是不是只是将那么多的类包含在其中而已?JAVA源文件的文件名和里面的类名并没有什么联系?就如上例,我们编译时,编译的是JAVA的源文件(javac Test.java),而解析时,则解析的是这个源文件里面的一个包含有public static void main(String []args)函数的类(java person)?

答: Java里的权限,其实是相对的.比如 定义为 public ,则为所有人都可以访问.
定义为 private 则相对于其他外部的调用来说,是不可见的.但对于定义这个属性或方法
的类本身来说.没有任何影响.
因为编写一个类,总是要实现某些功能,类中定义的方法不可能仅仅有一个(极端的空类,只有一个隐含构造
函数的例外). 但方法多了,就会产生问题.即,那个方法是整个类的入口呢? 所以 Sun 规定了,把这个入口
强制规定成 main. 因为这个方法是在 这个类 实例化前就需要调用.所以要定义成 static .因为这个main
方法是留做给运行环境使用的.所以要定义成 public (外部运行环境不属于这个类本身,也不属于这个类所在的
包.) 又因为这个main方法仅仅是调用这个类内部其他方法的一个入口, 所以他不需要任何的返回值.因此就定义成 void . 把以上各点都归纳起来,也就是现在的样子 public static void main(String[] args);

至于类本身是否定义成 public 跟 main 的修饰符,是两个意思.如果要访问一个main 方法,首先要判断
这个类本身的修饰符是什么.就好比 国内的学校,对我们(有权限的人)都是可以随便访问的.但一个外国人
却不可以.他首先要取得入境证明,才可以再继续深入访问这个学校.也就是类的修饰符优先于类内部方法的
修饰符.

这个main类属于这个类的一个成员方法.但在你举的例子里却错了. p1.age 并没有调用 main 方法.
而是调用了person 的构造函数.main方法只有在这个类需要单独运行的时候才是必须的.如果他仅仅
是其他类的一个附属的类(或者说补充,扩展),则main方法不是必须的.也就是上面说的,main方法是给
运行环境用的.比如jvm.不是给其他类调用的.

在一个文件里,主类(也就是跟这个文件同名的类)不必要定义成public.这个要看具体的使用情况.
如果这个类有必要让其他任何地方的类来调用.则必须定义为public,反之,则没这个必要.如果缺省了
.则默认为包访问权限.

Java里允许在一个文件里写若干个类的实现.但必须有一个类的名字与这个文件同名.在一定意义上,这个类
也就是其他类的总领.解析的时候并不是看哪个类里有main就调用那个,而是看哪个类跟文件同名.
其实,虽然我们在写代码时,在一个文件里写了若干个类。但在编译后,jdk 还是将各个类分离了开来.
这也就是为什么我们写一个包含若干类的文件,编译后会出现不止一个.class文件的原因.
在你的狸子里, java person 调用的是 person.class 这个文件,但在这个时间内. person.class 这个文件
里只有 person 这一个类.

另:我觉得你的类如果写完整了,应该是不能运行的.(可以通过编译,Jdk编译器不会去检查类名是否与文件名
相同,这个应该有程序员自己去避免出错).应该提示找不到类的错误.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dapangzisibing
2010-08-31 · TA获得超过313个赞
知道小有建树答主
回答量:258
采纳率:0%
帮助的人:169万
展开全部
public static void main(String args[]) {...}

Java程序,入口函数要求的是这样的,要是静态,没有返回值,有字符串数组参数,,,,main是入口函数名

Java程序,,,函数名,或者称方法名,写作习惯,要求第一个字母,小写
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我今天上课了
2010-08-31 · TA获得超过1410个赞
知道小有建树答主
回答量:844
采纳率:0%
帮助的人:674万
展开全部
程序入口public static void main

前者只是一个方法,是属于对象而不是类的(非static),可以给其他方法调用
比如在public static void main里写 new 你的类名().Main(strs)

strs是一个字符串数组
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
safasgsg
2010-08-31
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
Java私塾——《深入浅出学Java开发初级》系列精品教程

学习Java开发初级部分的知识
第一章:Java入门
第二章:Java基础语法
第三张:Java类和对象
第四章:Java高级类特性
第五章:数组和枚举
第六章:常见累的使用
第七章:抽象类和接口
第八章:异常和断言
csdn可以下载的到
他们正赶上4周年庆,学费9折,想报班的话,机会难得哦~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式