Java 제어문 | Java의 제어 흐름
Java 컴파일러는 코드를 위에서 아래로 실행합니다. 코드의 문은 나타나는 순서에 따라 실행됩니다. 그러나 Java는 Java 코드의 흐름을 제어하는 데 사용할 수 있는 문을 제공합니다. 이러한 문을 제어 흐름 문이라고 합니다. 프로그램의 원활한 흐름을 제공하는 자바의 기본 기능 중 하나다.
Java는 세 가지 유형의 제어 흐름 문을 제공합니다.
의사 결정문
- if 문
- switch 명령문
반복문
- do while 문
- while 문
- for 문
- for-each 문
점프문
- 브레이크 문
- continue 문
의사 결정문
이름에서 알 수 있듯이 의사 결정 문은 실행할 문과 시기를 결정합니다. 의사 결정문은 제공된 조건의 결과에 따라 부울 식을 평가하고 프로그램 흐름을 제어합니다. Java에는 If 문과 switch 문 두 가지 유형의 의사 결정 문이 있습니다.
1) If 문
Java에서 "if" 문은 조건을 평가하는 데 사용됩니다. 특정 조건에 따라 프로그램 제어가 전환됩니다. If 문의 조건은 true 또는 false 중 하나의 부울 값을 제공합니다. Java에서는 아래에 제시된 네 가지 유형의 if 문이 있습니다.
- if 문
- if else 문
- if else if 문
- 내포된 if-문
1) 단순 if 문은 다음과 같습니다.
Java의 모든 제어 흐름 명령문 중 가장 기본적인 명령문입니다. 부울 식을 평가하고 식이 참이면 프로그램이 코드 블록을 입력할 수 있도록 합니다.
아래에 if 문의 구문이 나와 있습니다.
if(condition) {
statement 1; //executes when condition is true
}
Java 코드에서 if 문을 사용한 다음 예를 고려하십시오.
public class Student {
public static void main(String[] args) {
int x = 10;
int y = 12;
if(x+y > 20) {
System.out.println("x + y is greater than 20");
}
}
}
2) if-else 명령문
if-else 문은 if-문의 확장으로, 다른 코드 블록, 즉 else 블록을 사용합니다. if-block의 조건이 false로 평가될 경우 else block이 실행됩니다.
if(condition) {
statement 1; //executes when condition is true
}
else{
statement 2; //executes when condition is false
}
다음 예를 생각해 보십시오.
public class Student {
public static void main(String[] args) {
int x = 10;
int y = 12;
if(x+y < 10) {
System.out.println("x + y is less than 10");
} else {
System.out.println("x + y is greater than 20");
}
}
}
3) if else if 문
if-else-if 문에는 if-문 다음에 여러 else-if 문이 포함됩니다. 즉, 조건이 참인 코드 블록에 프로그램이 들어갈 수 있는 결정 트리를 만드는 것은 if-else 문의 연쇄라고 할 수 있습니다. 체인 끝에 else 문을 정의할 수도 있습니다.
if-else-if 문의 구문은 아래에 나와 있습니다.
if(condition 1) {
statement 1; //executes when condition 1 is true
}
else if(condition 2) {
statement 2; //executes when condition 2 is true
}
else {
statement 2; //executes when all the conditions are false
}
public class Student {
public static void main(String[] args) {
String city = "Delhi";
if(city == "Meerut") {
System.out.println("city is meerut");
}else if (city == "Noida") {
System.out.println("city is noida");
}else if(city == "Agra") {
System.out.println("city is agra");
}else {
System.out.println(city);
}
}
}
4) 내포된 if-문
내포된 if-문에서 if 문은 다른 if 또는 if-if 문 안에 if 또는 if-else 문을 포함할 수 있습니다.
중첩된 if-문의 구문은 아래에 나와 있습니다.
if(condition 1) {
statement 1; //executes when condition 1 is true
if(condition 2) {
statement 2; //executes when condition 2 is true
}
else{
statement 2; //executes when condition 2 is false
}
}
다음 예를 생각해 보십시오.
public class Student {
public static void main(String[] args) {
String address = "Delhi, India";
if(address.endsWith("India")) {
if(address.contains("Meerut")) {
System.out.println("Your city is Meerut");
}else if(address.contains("Noida")) {
System.out.println("Your city is Noida");
}else {
System.out.println(address.split(",")[0]);
}
}else {
System.out.println("You are not living in India");
}
}
}
스위치 문
Java에서 Switch 문은 if-else-if 문과 유사합니다.
switch 문에는 case라는 코드 블록이 여러 개 포함되어 있으며 단일 case가 switch되는 변수를 기반으로 실행됩니다. if-else-if 문 대신 switch 문을 사용하는 것이 더 쉽습니다. 또한 프로그램의 가독성을 향상시킵니다.
스위치 문에 대해 주의해야 할 사항은 다음과 같습니다.
- 대문자 변수는 int, short, byte, char 또는 열거형일 수 있습니다. Java 버전 7 이후 문자열 유형도 지원됩니다.
- 대/소문자는 중복될 수 없습니다.
- 기본 문은 대소문자가 식 값과 일치하지 않을 때 실행됩니다. 선택 사항입니다.
- Break 문은 조건이 충족되면 스위치 블록을 종료합니다.
- 선택 사항이며, 사용하지 않을 경우 다음 사례가 실행됩니다.
- switch 문을 사용하는 동안 대/소문자 식이 변수와 동일한 유형이어야 합니다. 그러나 이 값은 상수 값이기도 합니다.
switch 문을 사용하는 구문은 다음과 같습니다.
switch (expression){
case value1:
statement1;
break;
.
.
.
case valueN:
statementN;
break;
default:
default statement;
}
스위치 문의 흐름을 이해하려면 다음 예를 고려하십시오.
public class Student implements Cloneable {
public static void main(String[] args) {
int num = 2;
switch (num){
case 0:
System.out.println("number is 0");
break;
case 1:
System.out.println("number is 1");
break;
default:
System.out.println(num);
}
}
}
switch 문을 사용하는 동안 대/소문자 식이 변수와 동일한 유형이어야 합니다. 그러나 이 값은 상수 값이기도 합니다. 스위치는 int, string 및 Enum 유형 변수만 사용할 수 있도록 허용합니다.
반복문
프로그래밍에서, 때때로 우리는 어떤 조건이 참으로 평가되는 동안 코드 블록을 반복적으로 실행해야 합니다. 그러나 반복문은 명령 집합을 반복 순서로 실행하는 데 사용됩니다. 명령 집합의 실행은 특정 조건에 따라 달라집니다.
자바에서는 비슷하게 실행되는 세 가지 유형의 루프가 있습니다. 그러나 구문과 상태 확인 시간에는 차이가 있습니다.
1. for loop
2. while loop
3. do-while loop
루프 문을 하나씩 이해해보겠습니다.
Java for loop
자바에서 for 루프는 C와 C++와 유사합니다. 루프 변수를 초기화하고, 조건을 확인하고, 코드 한 줄에서 증감할 수 있습니다. 우리는 횟수를 정확히 알 때만 for loop을 사용하며, 코드 블록을 실행하고자 합니다.
for(initialization, condition, increment/decrement) {
//block of statements
}
for-loop에 대한 흐름도가 아래에 나와 있습니다.
Java에서 for 루프의 올바른 작동을 이해하려면 다음 예를 고려하십시오.
public class Calculattion {
public static void main(String[] args) {
// TODO Auto-generated method stub
int sum = 0;
for(int j = 1; j<=10; j++) {
sum = sum + j;
}
System.out.println("The sum of first 10 natural numbers is " + sum);
}
}
각 루프에 대해 Java를 사용
Java는 어레이 또는 컬렉션과 같은 데이터 구조를 가로지르는 루프를 개선했습니다. 각 루프에서 루프 변수를 업데이트할 필요가 없습니다. Java에서 for-each 루프를 사용하는 구문은 다음과 같습니다.
for(data_type var : array_name/collection_name){
//statements
}
Java에서 각 루프에 대한 기능을 이해하려면 다음 예를 고려하십시오.
public class Calculation {
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] names = {"Java","C","C++","Python","JavaScript"};
System.out.println("Printing the content of the array names:\n");
for(String name:names) {
System.out.println(name);
}
}
}
Java while 루프
while 루프는 또한 문의 수에 대해 여러 번 반복하는 데 사용됩니다. 그러나 반복 횟수를 미리 알 수 없는 경우에는 wailed 루프를 사용하는 것이 좋습니다. 루프와 달리 초기화 및 증분/감소는 while 루프에서 루프 문 안에서 발생하지 않습니다.
루프 시작 시 조건이 확인되므로 엔트리 제어 루프라고도 합니다. 조건이 참이면 루프 본문이 실행되고, 그렇지 않으면 루프 뒤의 문이 실행됩니다.
while 루프의 구문은 아래에 나와 있습니다.
while(condition){
//looping statements
}
while 루프의 흐름도는 다음 이미지에 나와 있습니다.
다음 예를 생각해 보십시오.
public class Calculation {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i = 0;
System.out.println("Printing the list of first 10 even numbers \n");
while(i<=10) {
System.out.println(i);
i = i + 2;
}
}
}
Java do-while 루프
do-while 루프는 루프 문을 실행한 후 루프 끝의 상태를 확인합니다. 반복 횟수를 알 수 없고 루프를 한 번 이상 실행해야 할 때 do-while 루프를 사용할 수 있습니다.
조건을 미리 확인하지 않기 때문에 출구 제어 루프라고도 합니다. 실행 중 루프의 구문은 아래에 나와 있습니다.
do
{
//statements
} while (condition);
Do-while 루프의 흐름도는 다음 이미지에 나와 있습니다.
Java에서 do-while 루프의 기능을 이해하려면 다음 예를 고려하십시오.
public class Calculation {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i = 0;
System.out.println("Printing the list of first 10 even numbers \n");
do {
System.out.println(i);
i = i + 2;
}while(i<=10);
}
}
점프 문
점프 문은 프로그램의 제어를 특정 문으로 전송하는 데 사용됩니다. 즉, 점프 문은 실행 제어를 프로그램의 다른 부분으로 전달합니다. Java에는 break과 continue의 두 가지 점프 문이 있습니다.
자바 브레이크 스테이트먼트
이름에서 알 수 있듯이 break 문은 프로그램의 현재 흐름을 차단하고 루프 또는 스위치 문 외부의 다음 문으로 컨트롤을 전송하는 데 사용됩니다. 그러나 중첩된 루프의 경우 내부 루프만 끊어집니다.
브레이크 문은 Java 프로그램에서 독립적으로 사용할 수 없습니다. 즉, 루프 또는 스위치 문 안에서만 쓸 수 있습니다.
for 루프와 함께 break 문을 사용한 다음 예를 생각해 보십시오.
public class BreakExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i = 0; i<= 10; i++) {
System.out.println(i);
if(i==6) {
break;
}
}
}
}
break 문 예제: 루프에 대한 레이블이 있습니다.
public class Calculation {
public static void main(String[] args) {
// TODO Auto-generated method stub
a:
for(int i = 0; i<= 10; i++) {
b:
for(int j = 0; j<=15;j++) {
c:
for (int k = 0; k<=20; k++) {
System.out.println(k);
if(k==5) {
break a;
}
}
}
}
}
}
Java continue 문
break 문과 달리 continue 문은 루프를 끊지 않는 반면, 루프의 특정 부분을 건너뛰고 루프의 다음 반복으로 바로 이동합니다.
Java에서 continue 문의 기능을 이해하려면 다음 예를 고려하십시오.
public class ContinueExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i = 0; i<= 2; i++) {
for (int j = i; j<=5; j++) {
if(j == 4) {
continue;
}
System.out.println(j);
}
}
}
}
'SW > Java' 카테고리의 다른 글
Java : 자바 생성자 : 개념, 예제, 개요, 설명 (0) | 2023.02.26 |
---|---|
Java : 자바 OOP 컨셉, 개념, 개요, 설명 (0) | 2023.02.22 |
Java : 자바 키워드 : 개념, 개요, 설명 (0) | 2023.02.20 |
Java : Operators 연산자 개념, 개요, 방법 (0) | 2023.02.19 |
Java : 자바 유니코드 시스템 : 개념, 개요, 설명 (0) | 2023.02.18 |