- 浏览: 752945 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
webcover:
最新的中文网络记事本: 破笔记
网络记事本:http://w ...
五个最佳的免费网络记事本 -
fred_nxh:
很好,长见识了
java中堆(heap)和堆栈(stack)有什么区别 -
efeige:
兄弟,请问一下,为什么我的2003系统 网站属性 里面没有“服 ...
启用IIS Gzip 页面压缩技术 加速网页的浏览速度 -
252401762:
同样的问题啊,不知道楼主是否已经转做售前了
售前和 开发的选择 -
yuan:
膜拜玩静电的现在呢?
来回顾一下,当年的“发烧史”吧:
Java中的main()方法详解
--------------------------------------------------------------------------------
2007-12-03 10:45:39 标签:Java 编程 main() [推送到技术圈]
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lavasoft.blog.51cto.com/62575/53263
Java中的main()方法详解
在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等。
在看Java中的main()方法之前,先看一个最简单的Java应用程序HelloWorld,我将通过这个例子说明Java类中main()方法的奥秘,程序的代码如下:
/**
* Java中的main()方法详解
*/
public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello World!");
}
}
一、先说类:
HelloWorld 类中有main()方法,说明这是个java应用程序,通过JVM直接启动运行的程序。
既然是类,java允许类不加public关键字约束,当然类的定义只能限制为public或者无限制关键字(默认的)。
二、再说main()方法
这个main()方法的声明为:public static void main(String args[])。必须这么定义,这是Java的规范。
为什么要这么定义,和JVM的运行有关系。
当一个类中有main()方法,执行命令“java 类名”则会启动虚拟机执行该类中的main方法。
由于JVM在运行这个Java应用程序的时候,首先会调用main方法,调用时不实例化这个类的对象,而是通过类名直接调用因此需要是限制为public static。
对于java中的main方法,jvm有限制,不能有返回值,因此返回值类型为void。
main方法中还有一个输入参数,类型为String[],这个也是java的规范,main()方法中必须有一个入参,类细必须String[],至于字符串数组的名字,这个是可以自己设定的,根据习惯,这个字符串数组的名字一般和sun java规范范例中mian参数名保持一致,取名为args。
因此,main()方法定义必须是:“public static void main(String 字符串数组参数名[])”。
三、main()方法中可以throw Exception
因此main()方法中可以抛出异常,main()方法上也可以声明抛出异常。
比如,下面这个写法是正确的:
public class TestMain {
public static void main(String[] args) throws Exception {
System.out.println("哈哈哈哈哈");
throw new Exception("");
}
}
运行结果:
哈哈哈哈哈
Exception in thread "main" java.lang.Exception:
at maintest.TestMain.main(TestMain.java:11)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
Process finished with exit code 1
四、main()方法中字符串参数数组作用
main()方法中字符串参数数组作用是接收命令行输入参数的,命令行的参数之间用空格隔开。
下面给出一个例子,看看如何初始化和使用这个数组的。
/**
* 打印main方法中的输入参数
*/
public class TestMain {
public static void main(String args[]){
System.out.println("打印main方法中的输入参数!");
for(int i=0;i<args.length;i++){
System.out.println(args[i]);
}
}
}
执行方法和运行结果
D:\Study\basetest\src>javac TestMain.java
D:\Study\basetest\src>java TestMain 1 2 3
打印main方法中的输入参数!
1
2
3
五、给出HelloWorld的另外一个版本
/**
* 变态版的HelloWorld.呵呵
*/
public class HelloWorld2 {
static {
System.out.println("Hello Wordld!");
}
public static void main(String args[]){
System.exit(0);
}
}
这个main()方法执行的内容就一句"System.exit(0);" ,目的是让程序正常结束。那“HelloWorld!”是从哪里打印的,秘密就是在static打印的,因为static代码块的内容会在main调用前调用。
总结:
main方法作为一个特殊的规范,与普通的方法有很大区别,限制很多,理解其原理需要学习JVM相关知识。是Java中学习中大障碍。这是我对main原理和使用的总结,欢迎各位在此讨论。
本文出自 “熔 岩” 博客,请务必保留此出处http://lavasoft.blog.51cto.com/62575/53263
本文出自 51CTO.COM技术博客
上一篇 Java中的return语句使用总结 下一篇 Java5新特征之foreach语句使用总结
类别:J2SE ┆ 技术圈( 5 ) ┆ 阅读( 3454 ) ┆ 评论( 4 ) ┆推送到技术圈 ┆返回首页
相关文章Java编程--break和continue语句程序员都应该关注的问题:Java编程规则王者再次归来《Java编程思想 第4版》JAVA编程艺术Java的网络功能与编程Vector在Java编程中的应用Java多线程编程经验谈java泛型编程简析JAVA的XML编程java多线程编程
文章评论
[1楼] [匿名]black angle
2007-12-03 12:25:06
好久不见java
短消息通知评论者
[2楼] [匿名]frade
2007-12-03 14:18:13
main()方法很重要 以前主要是用的C 这次学学java
短消息通知评论者
[3楼] [匿名]tuiroger
2008-03-21 23:25:07
初学JAVA,请高手指点
//Test2.java
class Test1{
private String s="Test1";
public void append (String a) {s+=a;}
public void me() {append("me()");}
public String toString() {return s;}
public static void main(String[] arg) { //Test1 main()
Test1 t1=new Test1();
t1.me();
System.out.println(t1);
}
}
public class Test2 extends Test1{
public void you() {append("you()");}
public static void main(String[] args) { //Test2 main()
Test2 t2=new Test2();
t2.me();
t2.you();
System.out.println(t2);
Test1.main(args);
//Test1.main(arg); error
}
}
//output :Test1me()you()
Test1me()
提问:1.Test2 main()中Test1.main(args);语句,用类名直接调用main(),括号中的参数应该是什么
2.参数为什么只能是args
3.参数换成arg,就出错,由此看Test1.main(args);是调用的子类中main(),为什么由输出结果看是调用的父类的main()
短消息通知评论者
[4楼] leizhimin
2008-03-22 10:18:26
非也,main方法参数名字无所谓,只要参数是字符串数组即可.
短消息通知评论者
--------------------------------------------------------------------------------
2007-12-03 10:45:39 标签:Java 编程 main() [推送到技术圈]
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lavasoft.blog.51cto.com/62575/53263
Java中的main()方法详解
在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等。
在看Java中的main()方法之前,先看一个最简单的Java应用程序HelloWorld,我将通过这个例子说明Java类中main()方法的奥秘,程序的代码如下:
/**
* Java中的main()方法详解
*/
public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello World!");
}
}
一、先说类:
HelloWorld 类中有main()方法,说明这是个java应用程序,通过JVM直接启动运行的程序。
既然是类,java允许类不加public关键字约束,当然类的定义只能限制为public或者无限制关键字(默认的)。
二、再说main()方法
这个main()方法的声明为:public static void main(String args[])。必须这么定义,这是Java的规范。
为什么要这么定义,和JVM的运行有关系。
当一个类中有main()方法,执行命令“java 类名”则会启动虚拟机执行该类中的main方法。
由于JVM在运行这个Java应用程序的时候,首先会调用main方法,调用时不实例化这个类的对象,而是通过类名直接调用因此需要是限制为public static。
对于java中的main方法,jvm有限制,不能有返回值,因此返回值类型为void。
main方法中还有一个输入参数,类型为String[],这个也是java的规范,main()方法中必须有一个入参,类细必须String[],至于字符串数组的名字,这个是可以自己设定的,根据习惯,这个字符串数组的名字一般和sun java规范范例中mian参数名保持一致,取名为args。
因此,main()方法定义必须是:“public static void main(String 字符串数组参数名[])”。
三、main()方法中可以throw Exception
因此main()方法中可以抛出异常,main()方法上也可以声明抛出异常。
比如,下面这个写法是正确的:
public class TestMain {
public static void main(String[] args) throws Exception {
System.out.println("哈哈哈哈哈");
throw new Exception("");
}
}
运行结果:
哈哈哈哈哈
Exception in thread "main" java.lang.Exception:
at maintest.TestMain.main(TestMain.java:11)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
Process finished with exit code 1
四、main()方法中字符串参数数组作用
main()方法中字符串参数数组作用是接收命令行输入参数的,命令行的参数之间用空格隔开。
下面给出一个例子,看看如何初始化和使用这个数组的。
/**
* 打印main方法中的输入参数
*/
public class TestMain {
public static void main(String args[]){
System.out.println("打印main方法中的输入参数!");
for(int i=0;i<args.length;i++){
System.out.println(args[i]);
}
}
}
执行方法和运行结果
D:\Study\basetest\src>javac TestMain.java
D:\Study\basetest\src>java TestMain 1 2 3
打印main方法中的输入参数!
1
2
3
五、给出HelloWorld的另外一个版本
/**
* 变态版的HelloWorld.呵呵
*/
public class HelloWorld2 {
static {
System.out.println("Hello Wordld!");
}
public static void main(String args[]){
System.exit(0);
}
}
这个main()方法执行的内容就一句"System.exit(0);" ,目的是让程序正常结束。那“HelloWorld!”是从哪里打印的,秘密就是在static打印的,因为static代码块的内容会在main调用前调用。
总结:
main方法作为一个特殊的规范,与普通的方法有很大区别,限制很多,理解其原理需要学习JVM相关知识。是Java中学习中大障碍。这是我对main原理和使用的总结,欢迎各位在此讨论。
本文出自 “熔 岩” 博客,请务必保留此出处http://lavasoft.blog.51cto.com/62575/53263
本文出自 51CTO.COM技术博客
上一篇 Java中的return语句使用总结 下一篇 Java5新特征之foreach语句使用总结
类别:J2SE ┆ 技术圈( 5 ) ┆ 阅读( 3454 ) ┆ 评论( 4 ) ┆推送到技术圈 ┆返回首页
相关文章Java编程--break和continue语句程序员都应该关注的问题:Java编程规则王者再次归来《Java编程思想 第4版》JAVA编程艺术Java的网络功能与编程Vector在Java编程中的应用Java多线程编程经验谈java泛型编程简析JAVA的XML编程java多线程编程
文章评论
[1楼] [匿名]black angle
2007-12-03 12:25:06
好久不见java
短消息通知评论者
[2楼] [匿名]frade
2007-12-03 14:18:13
main()方法很重要 以前主要是用的C 这次学学java
短消息通知评论者
[3楼] [匿名]tuiroger
2008-03-21 23:25:07
初学JAVA,请高手指点
//Test2.java
class Test1{
private String s="Test1";
public void append (String a) {s+=a;}
public void me() {append("me()");}
public String toString() {return s;}
public static void main(String[] arg) { //Test1 main()
Test1 t1=new Test1();
t1.me();
System.out.println(t1);
}
}
public class Test2 extends Test1{
public void you() {append("you()");}
public static void main(String[] args) { //Test2 main()
Test2 t2=new Test2();
t2.me();
t2.you();
System.out.println(t2);
Test1.main(args);
//Test1.main(arg); error
}
}
//output :Test1me()you()
Test1me()
提问:1.Test2 main()中Test1.main(args);语句,用类名直接调用main(),括号中的参数应该是什么
2.参数为什么只能是args
3.参数换成arg,就出错,由此看Test1.main(args);是调用的子类中main(),为什么由输出结果看是调用的父类的main()
短消息通知评论者
[4楼] leizhimin
2008-03-22 10:18:26
非也,main方法参数名字无所谓,只要参数是字符串数组即可.
短消息通知评论者
发表评论
-
ocx插件插入网页实现自动更新与安装注册
2010-07-27 16:17 6584ocx插件插入网页实现 ... -
JIRA
2010-04-02 16:28 1184JIRA 百科名片 JIRA是集项目计划、任务分配、需求管 ... -
ArrayList和LinkedList的用法区别
2010-03-17 10:58 1843ArrayList和LinkedList的用法区别 (2 ... -
Java 中Vector、ArrayList和LinkedList 的区别时间
2010-03-17 10:25 1665Java 中Vector、ArrayList和LinkedLi ... -
多层架构的Web开发框架模型
2010-03-14 00:31 1920摘要:在经典的J2EE四层体系结构的基础上增加数据持久层,提出 ... -
Java语言编码规范(Java Code Conventions
2010-03-08 01:17 7561 介绍(Introduction)1.1 为什么要有编码规范 ... -
IT 的规划
2010-02-21 21:07 746本文说的这位网友,在I ... -
记忆学
2010-02-10 00:50 643http://bbs.jiyifa.cn/read.php?t ... -
java析构函数替代者finalize()解说
2010-01-21 22:18 2505java析构函数替代者finali ... -
Java的GC机制总结(0) ---finalize()方法
2010-01-21 22:00 1184其实了解JAVA的人,都知道JAVA的GC机制是其的一大优点, ... -
Java认证考试
2010-01-14 12:30 815Java认证考试 关于Java方面,Sun推出四项认证:Su ... -
集合框架
2010-01-13 23:24 629java 集合框架 对象的集合 如果程序的 ... -
Java集合框架使用总结
2010-01-13 21:31 641Java集合框架使用总结 ... -
关于JAVA中的线程安全
2010-01-13 10:34 1519关于JAVA中的线程安全 ... -
Java 理论与实践: 并发集合类
2010-01-13 01:27 759DougLea的 util.concurrent 包除了包含许 ... -
java main 主函数
2010-01-10 14:28 2299java主函数一般定义如下:public static ... -
java新式for循环
2009-12-29 15:51 769java新式for循环 2008-08-04 13:48:2 ... -
2009年的Java技术发展趋势展望
2009-11-08 21:28 736已经有14岁的Java在日新月异的IT技术领域内不算年轻,但它 ... -
MyEclipse要注册
2009-11-07 18:37 1674yEclipse怎么注册都不知道。我说他没有注册,他硬要说已经 ... -
浅谈设计模式在JAVA中的具体运用
2009-10-27 23:32 926浅谈设计模式在JAVA ...
相关推荐
JAVA入门必备知识:JAVA之Main方法详解
Java中的main()方法详解.doc
Java中main()方法详解,对初学者来说是个不错的切入点.
第04章 面向对象(上) 11 完整内存结构图与main方法详解
020511_【第5章:面向对象基础】_理解main方法笔记.pdf 020512_【第5章:面向对象基础】_代码块笔记.pdf 020513_【第5章:面向对象基础】_构造方法私有化笔记.pdf 020514_【第5章:面向对象基础】_对象数组笔记.pdf ...
Java中Robot类详解 概述 概述 Java中Robot类位于java.awt.Robot,该类⽤于为测试⾃动化,⾃运⾏演⽰程序和其他需要控制⿏标和键盘的应⽤程序⽣成本机系统输⼊ 事件,Robot类的主要⽬的是便于Java平台实现⾃动测试。...
在java中main()方法是java应用程序的入口方法,由此可见main方法是很重要的,那么下面这篇文章就给大家详解介绍了Java中的main()方法,需要的朋友可以参考下。
主要介绍了Java中的main函数的详细介绍的相关资料,main()函数在java程序中必出现的函数,这里就讲解下使用方法,需要的朋友可以参考下
执行带main方法的class文件,命令行为: java 注意:CLASS文件名不要带文件后缀.class 例如: 代码如下: java Test 如果执行的class文件是带包的,即在类文件中使用了:package <包名> ...
JAVA断言技术详解,1、What will happen when you attempt to compile and run the following code? (Assume that the code is compiled and run with assertions enabled) 1. public class AssertTest 2. { 3. ...
系统存在一个主内存(Main Memory), Java中所有变量都储存在主存中,对于所有线程都是共享的。每条线程都有自己的工作内存(Working Memory),工作内存中保存的是主存中某些变量的拷贝,线程对所有变量的操作都是...
public static void main(String[] args) { Class<?> demo=null; try{ demo=Class.forName("Reflect.Person"); }catch (Exception e) { e.printStackTrace(); } Person per=null; try { per=(Person)demo....
会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,这样,代码中的...
在main方法中,我们首先通过Scanner对象提示用户输入他们的个人信息,然后将这些信息传递给DynamicSelfIntroduction类的构造方法,最后创建一个新的DynamicSelfIntroduction对象并调用introduce方法进行自我介绍。
主要介绍了Java使用agent实现main方法之前的实例详解的相关资料,希望通过本文能帮助到大家,让大家理解这部分内容,需要的朋友可以参考下
5.6.9 理解main方法语法及命令行参数147 5.6.1 0递归算法147 5.7 this关键字148 5.8 JavaBean149 5.9 包150 5.9.1 为什么需要包?150 5.9.2 如何创建包151 5.9.3 编译并生成包:151 5.9.4 使用带包的类152 5.9.5 JDK...
不难看出,虽然在 test(boolean) 方法中改变了传进来的参数的值,但对这个参数源变量本身并没有影响,即对 main(String[]) 方法里的 test 变量没有影响。那说明,参数类型是简单类型的时候,是按值传递的。以参数...
Java继承机制详解 Java继承是面向对象编程(OOP)的一种机制,允许一个类继承另一个类的成员变量和成员方法。通过继承,可以实现代码的重用和扩展。 在Java中,继承是通过使用关键字`extends`来实现的。例如,`...
示例源码:Main.java, ExternalLibrary.java。 阅读建议: 在设置classpath环境变量之前,请确保已经正确配置了Java开发工具包(JDK)。 按照示例代码和步骤指导进行操作,特别是在配置环境变量时要注意路径的正确...