网站首页 > java教程 正文
在Java中,main()方法是Java应用程序的入口方法,程序在运行的时候,第一个执行的方法就是main()方法。main()方法和其他的方法有很大的不同。
下面先来看最简单的一个Java应用程序HelloWorld,我们将通过这个例子讲解Java类中main()方法的奥秘,程序的代码如下:
public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello World!");
}
}12345复制代码类型:[java]
其中,使用main()方法时应该注意如下几点:
访问控制权限是公有的(public)。
main()方法是静态的。如果要在main()方法中调用本类中的其他方法,则该方法也必须是静态的,否则需要先创建本类的实例对象,然后再通过对象调用成员方法。
main()方法没有返回值,只能使用void。
main()方法具有一个字符串数组参数,用来接收执行Java程序的命令行参数。命令行参数作为字符串,按照顺序依次对应字符串数组中的元素。
字符串中数组的名字(代码中的args)可以任意设置,但是根据习惯,这个字符串数组的名字一般和Java规范范例中main()参数名保持一致,命名为args,而方法中的其他内容都是固定不变的。
main()方法定义必须是“publicstaticvoidmain(String[]字符串数组参数名)”。
一个类只能有一个main()方法,这是一个常用于对类进行单元测试(对软件中的最小可测试单元进行检查和验证)的技巧。
下面的示例代码演示了如何在main()方法中调用本类的静态和非静态方法。
public class Student {
public void Speak1() {
System.out.println("你好!");
}
public static void Speak2() {
System.out.println("Java!");
}
public static void main(String[] args) {
// Speak1(); // 错误调用
Speak2(); // 可以直接调用静态方法Speak2()
Student t = new Student();
t.Speak1(); // 调用非静态方法,需要通过类的对象来调用
}
}1234567891011121314复制代码类型:[java]
由上面代码可以看出,在main()方法中只能直接调用静态方法,如果想调用非静态方法,需要将当前类实例化,然后通过类的对象来调用。
例1
创建一个Java程序,编写代码实现程序执行时统计传递参数的数量及每个参数值。示例代码如下:
public class TestMain {
public static void main(String[] args) {
int n = args.length; // 获取参数数量
System.out.println("一共有 "+n+" 个参数");
if(n > 0) {
// 判断参数个数是否大于0
for(int i = 0;i < n;i++) {
System.out.println(args[i]);
}
}
}
}123456789101112复制代码类型:[java]
1)将代码保存到TestMain.java文件中(这里把TestMain.java文件放到了D盘的myJava文件夹),然后用如下Java命令对程序进行编译:
javac TestMain.java1复制代码类型:[java]
2)程序编译成功后用如下Java命令执行Test程序:
java TestMain 参数列表 // 多个之间用空格隔开1复制代码类型:[java]
这里使用如下三个语句执行程序:
java TestMain
java TestMain apple banana
java TestMain one two three four five six123复制代码类型:[java]
3)执行结果如下所示:
C:\Users\leovo>d:
D:\myJava>javac TestMain.java
D:\myJava>java TestMain
一共有 0 个参数
D:\myJava>java TestMain apple banana
一共有 2 个参数
apple
banana
D:\myJava>java TestMain one two three four five six
一共有 6 个参数
one
two
three
four
five
six
D:\myJava>12345678910111213141516171819202122复制代码类型:[java]
由此可见,main()方法可以以字符串的形式接收命令行参数,然后在方法体内进行处理。
猜你喜欢
- 2024-11-17 Maven 干货: 简单两步,Maven Wrapper 接管你的Java项目编译!
- 2024-11-17 Java字节码指令:invokestatic(0xB8)
- 2024-11-17 Java小白入门教程(2)——基本语法&变量
- 2024-11-17 Jvm从编译到执行
- 2024-11-17 这样做优化,实现 0.059s 启动一个SpringBoot项目
- 2024-11-17 Java 8:一文掌握 Lambda 表达式 | CSDN 博文精选
- 2024-11-17 面试官:Java从编译到执行,发生了什么
- 2024-11-17 五、编写第一个Java程序
- 2024-11-17 掌握这些Maven命令,让你的Java项目开发更高效!
- 2024-11-17 深入解析java虚拟机:编译概述,即时编译技术
你 发表评论:
欢迎- 最近发表
-
- 你真的会用 Java 中的线程池吗?多个企业级线程池工具类封装实践
- 线程池的实现原理、优点与风险、以及四种线程池实现
- Java线程池ThreadPoolExecutor实现原理剖析
- 深入分析线程池的实现原理(线程池是干嘛的)
- 一文搞懂JAVA线程池工作原理(java线程池的工作流程)
- Java线程池的工作原理(java线程池的实现原理)
- 5分钟读懂C#中TcpClient、TcpListener和Socket三个类的角色
- JVM对象的创建过程(jvm运行过程中创建的对象一般存放在方法区)
- 对象组成与Java内存模型JMM分析(java对象在内存中存储的结构)
- JVM对象内存分配详细过程(栈上分配->TLAB->老年代->Eden区)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)