If-Then 선언문
if-then 명령문은 모든 제어 흐름 명령어 중 가장 기본입니다.
특정 테스트가 평가되는 경우에만 프로그램에 특정 코드 섹션을 실행하도록 지시합니다 .
예를 들어 Bicycle 자전거가 이미 움직이고있는 경우에만 브레이크가 자전거 속도를 감소시킬 수 있습니다.
하나의 가능한 구현 방법은 다음과 같습니다:
void applyBrakes() {
// the "if" clause: bicycle must be moving
if (isMoving){
// the "then" clause: decrease current speed
currentSpeed--;
}
}
이 테스트가 평가되면 false ( 자전거가 움직이지 않는다는 의미 ),
또한 "then"절에 하나의 명령문 만 포함 된 경우 여는 중괄호는 선택 사항입니다:
void applyBrakes() {
// same as above, but without braces
if (isMoving)
currentSpeed--;
}
중괄호를 생략 할시기를 결정하는 것은 개인적인 취향의 문제입니다. 그것들을 생략하면 코드가 더 깨지기 쉽습니다.
두 번째 문장이 나중에 "then"절에 추가되면 일반적인 실수는 새로 필요한 중괄호를 추가하는 것을 잊어 버려 잘못된 결과를 얻을 것입니다.
If-Then-Else Statement
그만큼 if-then-else 문은 "if"절이 false. 당신은 사용할 수 있습니다 if-then-else 에 진술 applyBrakes() 자전거가 움직이지 않을 때 브레이크가 가해지면 조치를 취하는 방법. 이 경우 자전거가 이미 정지되었다는 오류 메시지를 인쇄하는 것입니다.
void applyBrakes() {
if (isMoving) {
currentSpeed--;
} else {
System.err.println("The bicycle has already stopped!");
}
}
다음 프로그램, IfElseDemo, 시험 점수의 값에 기초하여 등급을 할당합니다 : 90 % 이상의 점수에 대한 A, 80 % 이상의 점수에 대한 B, 등등.
class IfElseDemo {
public static void main(String[] args) {
int testscore = 76;
char grade;
if (testscore >= 90) {
grade = 'A';
} else if (testscore >= 80) {
grade = 'B';
} else if (testscore >= 70) {
grade = 'C';
} else if (testscore >= 60) {
grade = 'D';
} else {
grade = 'F';
}
System.out.println("Grade = " + grade);
}
}
프로그램의 결과는 다음과 같습니다:
Grade = C
While and Do-while Statements
그만큼 while 특정 조건은 다음과 같지만 명령문은 지속적으로 명령문을 실행합니다 true. 구문은 다음과 같이 표현할 수 있습니다:
while (expression) {
statement(s)
}
그만큼 while 명령문은 표현식을 평가하며 boolean 값. 표현식이 평가되면 true, while 문은 statement(s) while 블록에서. 그만큼 while 표현식이 평가 될 때까지 명령문은 표현식을 계속 테스트하고 블록을 실행합니다 false. 사용 while 1에서 10까지의 값을 인쇄하는 문은 다음과 같이 수행 할 수 있습니다 WhileDemo 프로그램:
class WhileDemo {
public static void main(String[] args){
int count = 1;
while (count < 11) {
System.out.println("Count is: " + count);
count++;
}
}
}
다음을 사용하여 무한 루프를 구현할 수 있습니다 while 다음과 같은 진술:
while (true){
// your code goes here
}
Java 프로그래밍 언어는 또한 do-while 다음과 같이 표현할 수있는 진술:
do {
statement(s)
} while (expression);
차이점 do-while 과 while 그 do-while 상단 대신 루프 하단에서 표현식을 평가합니다. 따라서 do 블록은 다음에 표시된 것처럼 항상 한 번 이상 실행됩니다 DoWhileDemo 프로그램:
class DoWhileDemo {
public static void main(String[] args){
int count = 1;
do {
System.out.println("Count is: " + count);
count++;
} while (count < 11);
}
}
진술서
그만큼 for 명령문은 다양한 값을 반복하는 간단한 방법을 제공합니다. 프로그래머는 종종 특정 조건이 충족 될 때까지 반복적으로 반복되는 방식으로 인해 "루프 용"이라고합니다. 일반적인 형태 for 진술은 다음과 같이 표현 될 수 있습니다:
for (initialization; termination; increment) {
statement(s)
}
이 버전의 for 문을 사용할 때는 다음 사항을 명심하십시오:
- 그만큼 초기화 표현식은 루프를 초기화합니다. 루프가 시작되면 한 번 실행됩니다.
- 언제 종료 표현은 false, 루프가 종료됩니다.
- 그만큼 증분 루프를 통해 각 반복 후에 표현식이 호출됩니다. 이 표현식이 증가하는 것은 완벽하게 허용됩니다 또는 가치를 떨어 뜨립니다.
다음 프로그램, ForDemo, 의 일반적인 형태를 사용합니다 for 숫자 1에서 10까지를 표준 출력으로 인쇄하는 명령문:
class ForDemo {
public static void main(String[] args){
for(int i = 1; i < 11; i++){
System.out.println("Count is: " + i);
}
}
}
이 프로그램의 결과는 다음과 같습니다:
Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9
Count is: 10
코드가 초기화 표현식 내에서 변수를 선언하는 방법에 주목하십시오. 이 변수의 범위는 선언에서 블록의 끝까지 확장됩니다 for 명령문이므로 종료 및 증분 표현식에도 사용할 수 있습니다. 다음을 제어하는 변수 인 경우 for 루프 외부에서는 명령문이 필요하지 않으므로 초기화 표현식에서 변수를 선언하는 것이 가장 좋습니다. 이름들 i, j, k 종종 제어에 사용 for 고리; 초기화 표현식 내에서 선언하면 수명이 제한되고 오류가 줄어 듭니다.
의 세 표현 for 루프는 선택 사항입니다. 무한 루프는 다음과 같이 만들 수 있습니다:
// infinite loop
for ( ; ; ) {
// your code goes here
}
그만큼 for 명령문에는 컬렉션 및 배열을 통한 반복을 위해 설계된 다른 양식도 있습니다. 이 양식은 때때로 강화 루프를보다 작고 읽기 쉽게 만드는 데 사용할 수 있습니다. 이를 입증하려면 숫자 1에서 10까지의 배열을 고려하십시오:
int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
다음 프로그램, EnhancedForDemo, 강화 배열을 반복합니다:
class EnhancedForDemo {
public static void main(String[] args){
int[] numbers =
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for (int item : numbers) {
System.out.println("Count is: " + item);
}
}
}
이 예에서 변수 item 숫자 배열에서 현재 값을 보유합니다. 이 프로그램의 결과는 이전과 동일합니다:
Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count is: 6
Count is: 7
Count is: 8
Count is: 9
Count is: 10
이 양식을 사용하는 것이 좋습니다 for 가능할 때마다 일반 양식 대신 진술.
손익 계산서
그만큼 break 문에는 레이블과 레이블이없는 두 가지 형식이 있습니다. 이전 토론에서 레이블이없는 양식을 보았습니다 switch 진술. 레이블이없는 것을 사용할 수도 있습니다 break 종료 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 2 차원 배열에서 값을 검색하기 위해 루프합니다. 값이 발견되면 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 문은 레이블이 지정된 문을 종료합니다. 제어 흐름을 레이블로 전송하지 않습니다. ( terminated ) 명령문 바로 다음에 제어 흐름이 명령문으로 전송됩니다.
계속
그만큼 continue 명령문은 현재 반복을 건너 뜁니다 for, while, 또는 do-while 루프. 레이블이없는 형태는 가장 안쪽 루프 본체의 끝으로 건너 뛰고 루프를 제어하는 부울 표현식을 평가합니다. 다음 프로그램, ContinueDemo, 단계 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'9 대신.
라벨이 붙은 continue 명령문은 지정된 레이블로 표시된 외부 루프의 현재 반복을 건너 뜁니다. 다음 예제 프로그램, ContinueWithLabelDemo, 중첩 루프를 사용하여 다른 문자열 내에서 하위 문자열을 검색합니다. 두 개의 중첩 루프가 필요합니다. 하나는 하위 문자열을 반복하고 다른 하나는 검색중인 문자열을 반복합니다. 다음 프로그램, ContinueWithLabelDemo, 라벨을 사용합니다 test 의 continue 외부 루프에서 반복을 건너 뜁니다.
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 ++count;
return;
클래스 및 객체 섹션에는 작성 방법에 대해 알아야 할 모든 내용이 포함됩니다.
수율표
마지막 분기 문은 yield 진술. 그만큼 yield 문은 현재에서 종료 switch 표현입니다. ᅡ yield 명령문 뒤에는 항상 값을 생성해야하는 표현식이옵니다. 이 표현은 void. 이 표현의 값은 엔 클로징에 의해 생성 된 값입니다 switch 표현.
다음은 yield 진술.
class Test {
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public String calculate(Day d) {
return switch (d) {
case SATURDAY, SUNDAY -> "week-end";
default -> {
int remainingWorkDays = 5 - d.ordinal();
yield remainingWorkDays;
}
};
}
}
※ 쿠팡 파트너스 활동을 통해 일정액의 수수료를 제공 받을 수 있습니다
'∮explotación≒ 개발' 카테고리의 다른 글
java Record (0) | 2023.02.25 |
---|---|
java Switch 에 대한 설명 (0) | 2023.02.22 |
java Expressions (0) | 2023.02.19 |
java 연산자 에 대해서 알아보자 자바 연산자 란 (0) | 2023.02.17 |
java Var 함수에 대해서 알아보자 (0) | 2023.02.15 |
댓글