Что означает * в списке основных аргументов java?
Я написал такой класс и назвал его Solution.java
.
public class Solution {
public static void main(String[] args) {
System.out.println(args.length);
}
}
Если я запустил его в терминале, я получил такой результат:
> /Users/WangWei java Solution *
18
> /Users/WangWei
Почему 18?
Ответы
Ответ 1
Вероятно, количество файлов в вашем рабочем каталоге.
Результат *
не относится к Java. Он специфичен для среды, в которой вы работаете, то есть рабочего каталога и типа оболочки (командная строка Windows, bash,...), которую вы используете для запуска команды java. Это связано с тем, что оболочка обрабатывает и оценивает командную строку перед запуском процесса. Он заменяет *
.
Чтобы сохранить *
в качестве аргумента командной строки, вам необходимо указать его:
java Solution '*'
Ответ 2
Ваша оболочка интерпретирует содержимое текущей папки - туда передается 18 файлов. Используйте одиночные цитаты, чтобы избежать интерпретации звездочки
java Solution '*'
Ответ 3
Просто добавьте это в свой код, и вы увидите:
for(String line: args)
System.out.println(line);
Ответ 4
Количество файлов в вашем каталоге.
18 показывает, что в вашем каталоге есть 18 файлов.