Java入门:main方法的String类型参数数组args是否按空格分隔输入
结论
main方法入参String[] args的空格分割逻辑,不是Java实现的,而是你启动Java程序的命令行环境(CMD、PowerShell、Bash等)的默认处理规则。
原理说明
- 你在命令行执行类似
java 你的主类名 one two的命令时,命令行环境会先对整行命令做解析,默认把无引号包裹的空格作为参数分隔符,把整行拆分为多个独立的参数段。 - 命令行环境会把拆分后除了
java指令、主类名之外的参数段,按顺序传递给Java程序的args数组,所以Java拿到数组的时候,one和two已经是两个独立的元素了,遍历自然会分两行输出。 - 空格本身是普通字符,只是在命令行的默认解析规则里,未被引号包裹的空格会被当做参数分隔符使用。
传入带空格的单个参数的方法
如果需要把包含空格的内容作为args的单个元素,只需要用双引号把对应内容包裹起来即可,比如执行命令:java 你的主类名 "one two"
此时命令行环境会把引号内的one two识别为单个参数,args数组只会包含一个元素,运行你提供的代码就会直接输出完整的one two。
你测试所用的代码逻辑没有问题:
public static void main(String[] args) { for(String e : args) { System.out.println(e); } }
内容的提问来源于stack exchange,提问作者Sage
相关产品推荐
相关产品推荐

