#java
#java
Вопрос:
Я готовлюсь к получению моего первого сертификата Java! Ура! Извините, не хочу показаться таким дерзким, но я ничего не могу с собой поделать 🙂 В любом случае, пытаюсь понять приведенный ниже вопрос и ответ. Я не понимаю . На самом деле я не так часто использую командную строку (в основном NetBeans и я знакомлюсь с Eclipse). Любые указания приветствуются.
ЦЕЛЬ: 7.2: Учитывая пример класса и командной строки, определите ожидаемое поведение во время выполнения. 10)
Дано:
1. class x {
2. public static void main(String [] args) {
3. String p = System.getProperty("x");
4. if(p.equals(args[1]))
5. System.out.println("found");
6. }
7. }
Какой вызов командной строки приведет к получению найденного результата?
a) java -Dx=y x y z
b) java -Px=y x y z
c) java -Dx=y x x y z (*)
d) java -Px=y x x y z
e) java x x y z -Dx=y
f) java x x y z -Px=y
// Итак, ответ — C
ССЫЛКА:
API для java command
, опция C правильная. -D задает свойство, а args[1] является вторым аргументом (значение которого равно y).
Хм … итак, почему args[1] является вторым аргументом? я думал, что «p» будет равно строке {y x x y z}?
Ответ №1:
Хм … итак, почему args[1] является вторым аргументом? я думал, что «p» будет равно строке {y x x y z}?
Вопрос сложный. В c) мы начинаем класс x
с аргументов x y z
. И опция -D приведет к тому, что x
свойству будет присвоено значение y
.
Итак, когда класс x
запускается:
args
будет `String[]{«x», «y», «z»}, иp
будет"y"
.
Затем мы сравниваем p
с args[1]
… и две строки являются equal
.
(Конечно, в реальном мире ни один человек, который назвал свой класс x
, не продержался бы достаточно долго, чтобы получить свой первый платежный чек 🙂 )
Комментарии:
1. Прохладный. Я понял. Sweeeeeeeeet. Спасибо, ребята!
2. Этот вопрос слишком сложный. ЕСЛИ БЫ я БЫЛ КОРОЛЕМ, я БЫ НАЗВАЛ КЛАСС «MAIN.JAVA » ВМЕСТО ЭТОГО — НА САМОМ ДЕЛЕ НЕ УМАЛЯЕТ ПЕДАГОГИЧЕСКОЙ ЦЕННОСТИ. Классный вопрос, но слишком сложный. (К вашему СВЕДЕНИЮ, КОГДА я КОРОЛЬ, я ГОВОРЮ ЗАГЛАВНЫМИ БУКВАМИ.)
3. @Julius — спасибо за демонстрацию того, что монархия — устаревшая концепция 🙂
Ответ №2:
На самом деле, когда вы вызываете это как java -Dx=y x x y z
то -Dx=y
, устанавливая системному свойству x
значение y
, оно не считается аргументом, первым x
является имя вызываемого вами класса, а последние «x, y, z» являются фактическими аргументами, передаваемыми программе.
Кроме того, когда вы устанавливаете системное значение с помощью аргумента командной строки -D, согласно общепринятому соглашению, аргументы командной строки разделяются пробелом. Вот почему значение системного свойства x
равно y
, а не y x x y z
.
Ответ №3:
Хитрость в том,
class x {
Так что вы можете почти забыть, что первым аргументом после ‘java’ (за исключением опций) является имя класса (в данном случае ‘x’), затем остальные являются списком входных аргументов.
Я вообще не думаю, что это хороший вопрос. Кто вообще назовет класс ‘x’? Человек, который разработал этот вопрос, должен быть повешен.