2016-03-16 11 views
1

Я знаю, что это глупо, но, по-видимому, это сложно исследовать должным образом из-за его простой природы.Объявление переменных другого типа для состояния в Java

for (char letter = 'a', int num = 1; maxLine - num > 0; letter++, num++) { 
    System.out.print(letter); 
} 

Это стандартный способ определения переменных внутри а при условии для C и C#, но это не похоже на работу здесь. Зачем?

+0

Может ли когда-либо определять 'int i = 0, char c = 'a';' ?, не думаю, что он работает в C++ или C# – Ramanlfc

+0

Пожалуйста, не добавляйте метатеги, такие как «» в заголовки. Правильный способ - принять ответ, или - если вопрос не был закрыт - опубликовать свой собственный ответ (если ни один из текущих ответов не будет достаточным) и принять его после периода восстановления. –

ответ

0

Это тоже не работает на C/C++, но не уверен в C#.

Первая часть вашего оператора for может иметь несколько переменных, но с одним и тем же типом. Причиной этого является то, что, как правило, невозможно написать:

int n = 0, char c = 5; 

Если вы хотите сделать это, вам понадобится два заявления. Аналогично, первая часть for принимает только одно утверждение, так что вы не можете поместить здесь два.

1

Поскольку объявление переменной в цикле for следует за циклом local variable declaration.

Подобно тому, как следующее не действует в качестве локального объявления, поскольку он содержит несколько типов:

char letter = 'a', int num = 1; 

Он также не действует в цикле. Вы можете, однако, определить несколько переменных одного и того же типа:

for (int n = 0, m = 5; n*m < 400; n++) {} 

Как почему дизайнеры сделали это таким образом, спросите их, если вы их видите.