Java中Main方法的args参数是什么如何使用?

引言

最近同事通过shell脚本中用命令编译Java项目,而不是通过用Maven对整个项目进行打包编译。其中有个功能是通过命令传入指定的配置文件路径,然后在main方法中的args参数读取该路径值,接着加载配置文件中的相关属性。

整个流程不是很困难,不过工作两年半的我,发出了疑问;怎么给这个args参数赋值呢??我怎么感觉我白学了。。。

Main方法

相信所有学Java甚至任何一门编程语言的时候,我们的第一个程序都是输出Hello World,那么我们就来看看Java是如何写的吧。

java 复制代码
public class Hello{
    public static void main(String[] args){
        System.out.print("Hello World");
    }

}

程序点击运行,输出

txt 复制代码
Hello World

通过两年半的工作经验,我们对以上代码进行分析:

  1. 创建了一个类class名为Hello
  2. 创建了一个main方法,它是Java程序的起点。在程序执行时,从main方法开始执行。main方法是程序的入口,可以执行程序中的其他代码。
  3. 其中public表示这个程序的访问权限,表示的是任何场合都可以被引用,这样Java虚拟机就可以找到main()方法从而运行javac程序。
  4. static表示方法是静态的,是属于类的,在类加载的时候main()方法也随着加载到内存中去。
  5. void表示不需要返回值的。
  6. main方法名,规定的。
  7. String[] args一个String数组变量的参数,名为args。目前不知道怎么赋值。。。
  8. 输出语句。

String[] args传值

所以到底怎么传值呢?前面提过同事是使用命令来编译Java项目的,所以我们先来看看如何怎么编译一个Java程序呢。众所周知。一个.java程序JVM虚拟机是无法识别的,它能识别的只有字节码文件.class。所以我们要先将其编译成字节码文件。

如何编译呢也十分简单。使用javac xxxx.java即可。

我们找到要编译的文件路径,在控制台中输入命令javac Hello.java

接着得到了一个Hello.class文件,我们使用java Hello运行

成功输出Hello World。以上就是我们第一次学Java时都会学到的过程,那么到底怎么给args参数赋值呢??其实非常简单就是在java命令运行字节码文件后赋值,多个参数以空格区分。

bash 复制代码
java 字节码文件 参数1 参数2 参数3

看了同事的shell脚本中写的这句,眼泪掉下来。我怎么记得当初学的时候没人教我呢 我们将上面的代码进行修改

java 复制代码
public class Hello{
    public static void main(String[] args){
        System.out.println("Hello World");
        for(String arg : args){
            System.out.println(arg);
        }
    }
}

接着将其编译,运行以下命令java Hello arg1 arg2 arg3

成功验证,真相往往就这么简单。。。

其中还发现了jdk11后,javac可以直接使用java

总结:多多帮助同事,互帮互助。总能从同事中学到一些你不会的知识。

相关推荐
人道领域6 分钟前
SSM从入门到入土(Spring Bean实例化与依赖注入全解析)
java·开发语言·spring boot·后端
long31610 分钟前
Z算法(线性时间模式搜索算法)
java·数据结构·spring boot·后端·算法·排序算法
小楼v19 分钟前
如何实现AI生成应用部署功能
java·后端·ai·部署
李慕婉学姐37 分钟前
Springboot眼镜店管理系统ferchy1l(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
暴躁小师兄数据学院1 小时前
【WEB3.0零基础转行笔记】Golang编程篇-第4讲:Go语言中的流程控制
开发语言·后端·golang·web3·区块链
Honmaple1 小时前
openclaw 钉钉 Webhook 完全指南
后端
短剑重铸之日1 小时前
《设计模式》第十篇:三大类型之行为型模式
java·后端·设计模式·责任链模式·访问者模式·行为型模式
独自破碎E1 小时前
Spring Boot测试启动失败:SLF4J日志多实现冲突解决方案
spring boot·后端·log4j
Coder_Boy_1 小时前
企业级项目高并发监控场景-Spring Boot 集成 Graphite & InfluxDB 实战文档
java·spring boot·后端·系统架构
索荣荣14 小时前
Java Session 全面指南:原理、应用与实践(含 Spring Boot 实战)
java·spring boot·后端