|
Spec-Zone .ru
спецификации, руководства, описания, API
|
break Оператор break у оператора есть две формы: маркированный и немаркированный. Вы видели немаркированную форму в предыдущем обсуждении switch оператор. Можно также использовать немаркированный break завершать a for, while, или do-while цикл, как показано в следующем BreakDemo программа:
class BreakDemo {
public static void main(String[] args) {
int[] arrayOfInts =
{ 32, 87, 3, 589,
12, 1076, 2000,
8, 622, 127 };
int searchfor = 12;
int i;
boolean foundIt = false;
for (i = 0; i < arrayOfInts.length; i++) {
if (arrayOfInts[i] == searchfor) {
foundIt = true;
break;
}
}
if (foundIt) {
System.out.println("Found " + searchfor + " at index " + i);
} else {
System.out.println(searchfor + " not in the array");
}
}
}
Эта программа ищет номер 12 в массиве. break оператор, показанный в полужирном стиле, завершается for цикл, когда то значение находится. Поток управления тогда передает оператору после for цикл. Вывод этой программы:
Found 12 at index 4
Немаркированный break оператор завершает самое внутреннее switch, for, while, или do-while оператор, но маркированный break завершает внешний оператор. Следующая программа, BreakWithLabelDemo, подобно предыдущей программе, но использует вложенный for циклы, чтобы искать значение в двумерном массиве. Когда значение находится, маркированный break завершает внешнее for цикл (маркированный "поиск"):
class BreakWithLabelDemo {
public static void main(String[] args) {
int[][] arrayOfInts = {
{ 32, 87, 3, 589 },
{ 12, 1076, 2000, 8 },
{ 622, 127, 77, 955 }
};
int searchfor = 12;
int i;
int j = 0;
boolean foundIt = false;
search:
for (i = 0; i < arrayOfInts.length; i++) {
for (j = 0; j < arrayOfInts[i].length;
j++) {
if (arrayOfInts[i][j] == searchfor) {
foundIt = true;
break search;
}
}
}
if (foundIt) {
System.out.println("Found " + searchfor +
" at " + i + ", " + j);
} else {
System.out.println(searchfor +
" not in the array");
}
}
}
Это - вывод программы.
Found 12 at 1, 0
break оператор завершает помеченный оператор; это не передает поток управления к метке. Поток управления сразу передается оператору после маркированного (завершенного) оператора.
continue Оператор continue оператор пропускает текущую итерацию a for, while , или do-while цикл. Немаркированная форма пропускает до конца тела самого внутреннего цикла и оценивает boolean выражение, которое управляет циклом. Следующая программа, ContinueDemo , шаги через a String, подсчет происшествий буквы "p". Если текущий символ не является p, continue оператор пропускает остальную часть цикла и продолжается к следующему символу. Если это - "p", программа постепенно увеличивает количество буквы.
class ContinueDemo {
public static void main(String[] args) {
String searchMe
= "peter piper picked a " +
"peck of pickled peppers";
int max = searchMe.length();
int numPs = 0;
for (int i = 0; i < max; i++) {
// interested only in p's
if (searchMe.charAt(i) != 'p')
continue;
// process p's
numPs++;
}
System.out.println("Found " +
numPs + " p's in the string.");
}
}
Вот вывод этой программы:
Found 9 p's in the string.
Чтобы видеть этот эффект более ясно, попытайтесь удалить continue оператор и перекомпиляция. Когда Вы выполните программу снова, количество будет неправильным, говоря, что это нашло 35 p's вместо 9.
Маркированный continue оператор пропускает текущую итерацию внешнего цикла, отмеченного с данной меткой. Следующий пример программы, ContinueWithLabelDemo, вложенные циклы использования, чтобы искать подстроку в пределах другой строки. Требуются два вложенных цикла: один, чтобы выполнить итерации по подстроке и один, чтобы выполнить итерации по искавшей строке. Следующая программа, ContinueWithLabelDemo, использует маркированную форму, продолжают пропускать итерацию во внешнем цикле.
class ContinueWithLabelDemo {
public static void main(String[] args) {
String searchMe
= "Look for a substring in me";
String substring = "sub";
boolean foundIt = false;
int max = searchMe.length() -
substring.length();
test:
for (int i = 0; i <= max; i++) {
int n = substring.length();
int j = i;
int k = 0;
while (n-- != 0) {
if (searchMe.charAt(j++)
!= substring.charAt(k++)) {
continue test;
}
}
foundIt = true;
break test;
}
System.out.println(foundIt ?
"Found it" : "Didn't find it");
}
}
Вот вывод из этой программы.
Found it
return ОператорПоследний из переходящих операторов return оператор. return оператор выходит от текущего метода, и возвратов потока управления туда, где метод был вызван. return у оператора есть две формы: тот, который возвращает значение, и тот, который не делает. Чтобы возвратить значение, просто поместите значение (или выражение, которое вычисляет значение) после return ключевое слово.
return ++count;
Тип данных возвращенного значения должен соответствовать тип объявленного возвращаемого значения метода. Когда метод объявляется void, используйте форму return это не возвращает значение.
return;
Урок Классов и Объектов покроет все, что Вы должны знать о методах записи.