这段代码怎么理解?

2019-09-13 12:06:02 +08:00
 zhao1014

String name; if (args.length > 0) name = args[0];

5665 次点击
所在节点    Java
16 条回复
zhao1014
2019-09-13 12:07:26 +08:00
注释是从命令行参数读取类名,但是我不懂为什么会这么写,还请大佬们赐教。
codingadog
2019-09-13 12:09:51 +08:00
这是命令行执行的时候,main 方法里读取第一个参数吧
lhx2008
2019-09-13 12:11:30 +08:00
换下行就可以看懂了,arg[0] 一般是程序自己
gIrl1990
2019-09-13 12:14:40 +08:00
??? 这能读取到吗? args[0]不是第一个参数吗?
zcmxw1
2019-09-13 12:19:54 +08:00
没有参数时的,防止报错吧?
fzdfengzi
2019-09-13 12:25:45 +08:00
main 函数的参数 args 接受输入参数。好像没毛病
CEBBCAT
2019-09-13 12:29:06 +08:00
name 永远赋值为可执行文件的文件名吧,因为 args 一般至少有一个参数,就是程序自己的文件名
fishCatcher
2019-09-13 12:49:48 +08:00
从回复来看我站的水平有待提高啊?
GrayXu
2019-09-13 12:58:10 +08:00
请问 java 如何运行程序?不就是 java <public class name>嘛。。
所以读取类名没毛病
Creamliu
2019-09-13 12:59:36 +08:00
这是赋值入参的第一个参数
zhao1014
2019-09-13 13:58:52 +08:00
@CEBBCAT @Creamliu @GrayXu @codingadog @fishCatcher @fzdfengzi @gIrl1990 @lhx2008 @zcmxw1
主函数已上传附言,麻烦大家了!
ffkjjj
2019-09-13 14:06:13 +08:00
args[0] 就是启动的时候读取命令行传的参数啊。。如果没有传就会提示你手动输入一个
比如 java Test 123
args[0] //123
ffkjjj
2019-09-13 14:07:12 +08:00
@CEBBCAT java 中 args[] 应该不包括文件本身
Sharuru
2019-09-13 14:07:35 +08:00
注释里不是写了从命令行或用户输入获得参数了吗?
args 就是你命令行的传入参数。
比如程序叫 tools.jar ,if 里的语句就是为以下运行场景(命令行)服务的:java -jar tools.jar sample.class,此时 args0 就是 sample.class
如果你这样(用户输入)运行:java -jar tools.jar
那么,else 语句就会起效,等待用户输入 className
zhao1014
2019-09-13 14:34:28 +08:00
@Sharuru 懂了😂,谢谢大佬!
gIrl1990
2019-09-13 14:45:35 +08:00
“从命令行或用户输入中读取类名” 他这个“类名”不是你当前启动程序的类名。
比如你运行 java ClassA 这个类名不是 ClassA。
而是指你输入后拿去反射用的类名 比如你运行 java ClassA ClassB 那就是指 ClassB

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/600605

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX