Аргументы командной строки Java. Использование * в качестве аргумента для умножения
Я пытаюсь запустить приложение калькулятора java из командной строки. параметры следующие: оператор operand1 operand2. Я могу успешно запустить java-программу для + и -.
например
java calc + 2 4
java calc - 10 4
Но когда я пытаюсь запустить
java * 2 5
System.out.println(args[0]);
System.out.println(args[1]);
System.out.println(args[2]);
дает результат:
.classpath
.project
.settings
Я узнал по проб и ошибок, что использование одинарных кавычек ('*') решило мою проблему.
У меня сейчас два вопроса.
1. Использует ли одинарные кавычки правильный способ сделать это? (java calc '*' 2 5)
2. В чем смысл * в командной строке java? (Я пытался найти это в Интернете, но не нашел большой помощи)
Спасибо,
Punit
Ответы
Ответ 1
Это не Java, это оболочка (cmd
, если вы работаете в Windows), которую вы используете, которая интерпретирует *
как "все файлы и папки в текущем каталоге".
Итак, когда вы пишете:
java calc * 2 5
Фактически вы передадите вашей программе следующие аргументы:
java calc file_1 file_2 ... file_n 2 5
Где file_1 ... file_n
- все файлы (и папки) в текущем каталоге).
Если вы не хотите, чтобы ваша оболочка интерпретировала *
как все файлы, которые вам нужны (как вы заметили), чтобы процитировать этот аргумент.
Ответ 2
Если вы укажете аргументы команды, оболочка не будет расширять их до имен файлов. '*' не имеет особого значения для java, это оболочка, обрабатывающая этот вход.