제어문

  • Java
  • 2021년 1월 25일

1. 조건문

1) Switch

특정 데이터의 값에 따라 수행할 작업을 선택하는 구문으로 switch를 사용한다.

일반적인 사용법은 C/C++와 다르지 않다.

public class example {
    public static void main(String[] args) {
        String select = "ORANGE";
        String fruit;

        switch(select){
            case "APPLE" :
                fruit = "apple";
                System.out.println("사과");
                break;
            case "BANANA" :
                fruit = "banana";
                System.out.println("바나나");
                break;
            case "ORANGE" :
                fruit = "orange";
                System.out.println("오렌지");
                break;
            default:
                fruit = "default";
                System.out.println("default");
                break;
        }
        System.out.println(fruit);
    }
}

switch() 매개변수에 데이터 값을 입력하고 case : 를 이용해 값에 따라 구문을 구분하면 된다.

  • String이나 ,Integer과 같은 Wrapper타입이 올 수 있다.
  • case의 값에는 리터럴 이나 상수가 와야 하고 중복해서는 안된다. Java 12버전 이후에 case -> 를 이용하여 작업할 구문을 작성할 수 있게 되었고 break를 생략이 가능해졌다.

또한, ->yield를 사용하여 switch도 값을 반환할 수 있게 되었다.
case에 따라 특정 변수의 값을 바꾸는 경우에는 위의 코드와 같이 외부의 변수에 값을 할당해주는 방법으로 비슷한 코드를 반복작성해야하는 단점이 존재했는데 쉽게 값을 바꿀 수 있게 되었다.

public class example {
    public static void main(String[] args) {
        String select = "ORANGE";
        String fruit;

        fruit = switch(select){
            case "APPLE" -> {
                System.out.println("사과");
                yield "apple";
            }
            case "BANANA" -> {
                System.out.println("바나나");
                yield "banana";
            }
            case "ORANGE" -> {
                System.out.println("오렌지");
                yield "orange";
            }
            default -> {
                System.out.println("없음");
                yield "default";
            }
        };
        System.out.println(fruit); //orange
    }
}

yield는 case문에서 키워드로 사용되지만 변수 명으로 사용이 가능하다.

int yield = 10; //error가 나지 않는다.

2) if문

if() 괄호안의 오는 데이터(구문의 반환 값)은 boolean형으로 true일 때 수행하는 문법

int i = 10;
if(i == 1){
    System.out.println("1");
} else if( i > 1 && i < 7) {
    System.out.println("2이상 6이하");
}
else {
    System.out.println("7이상");
}



2. 반복문

1) for

for(int i=0; i < 10; i++){
    System.out.print(i+ " ");
}

//0 1 2 3 4 5 6 7 8 9

2) for-each문

기본 for문은 괄호 안에 구문은 3가지가 올 수 있으며 초기식, 조건 식, 증감 식 으로 제어가 가능하다.

for(int i : new int[]{0,1,2,3,4,5,6,7,8,9}){
            System.out.print(i+ " ");
}

//0 1 2 3 4 5 6 7 8 9

조건식이 아닌 변수타입 변수명 : 배열/컬렉션 을 입력하면 해당 레퍼런스 데이터의 값을 처음부터 끝까지 조회가 가능하다. (컬렉션에 저장되어있는 요소들을 읽어오기 위한 Iterator를 통해 조회를 한다.)


3) Iterator

반복문과는 밀접한 관련은 없는 내용일 수 있지만 나온김에 정리하려고 한다.

Collection을 기반으로 각 자료구조들을 조회 하는 데 있어 데이터를 읽는 방법을 동일한 방식으로 가능하게 제공해준다. (다형성)

메서드

  • hasNext() : 다음 요소가 있는지 체크 (있다면 true)
  • next() : 다음 데이터 반환
  • remove() : next()로 읽은 요소를 삭제

배열/컬렉션에 데이터 타입이 명시되어있기 때문에 앞의 변수타입을 var 키워드를 사용하여 타입추론도 가능하다.

C++의 for(auto : ) 구문과 비슷하다.


4) while

C/C++과 while문은 동일하고 while() 괄호안의 조건식이 true이면 반복문을 돌게된다.



3. 분기문

1) break

기본 switch문에서 쓰인다면 각 case 구문을 중단하기 위한 구문으로 break가 없다면 다음 case가 이어서 실행이된다.

반복문에서 쓰인다면 현재 코드 블럭( {} ) 에 해당하는 반복문을 탈출한다.

2) continue

while에서 사용하면 다음 구문을 실행하지 않고 다시 처음부터 반복문을 실행하게 되며 for 문에서 사용하면 마찬가지로 다음 구문은 실행하지 않고 처음부터 반복하게 되는데 증감 식을 한번 수행 후 시작한다.

설명이 애매한데 한마디로 반복문 중 conitnue를 만나면 반복문의 가장 끝으로 가는 느낌이다.

3) return

메서드 안에서 사용하며 메서드의 결과를 반환하는 구문

Tags :

Related Posts

[SPSP] Dijkstra 알고리즘

[SPSP] Dijkstra 알고리즘

그래프 중에서 최단 경로를 찾는 알고리즘중에 하나로 하나의 정점에서 다른 모든 정점까지의 최단경로를 구하는 알고리즘 (single-source shortest path algorithmm)으로 우선순위 큐의 방법을 이용하는 알고리즘이다. 가장 최적의 vertex를 한개씩 선택하며 최단 경로를 찾는 방법으로 relax의 개념을 이용하며 relax는 현재 계산된 v노드까지의 거리보다 현재 노드 u까지의 경로와 u에서 v의 가중치 ( e(u,v) ) 가 더 작다면 값을 갱신해준다....

Read More
Array와 List

Array와 List

1. 배열 가장 기본적인 자료구조로써, 논리적 저장 순서와 물리적 저장 순서가 일치하고 인덱스를 통하여 원소에 접근이 가능하다. 대부분의 언어에서 [] 를 이용해서 배열을 제공한다. 2. 리스트 배열과 달리 원소들 간의 논리적인 순서로 연결되어 구성있고, 삽입과 삭제를 수행하기 위해서는 첫 원소부터 모두 search해야한다. 자료구조 Tree에 기본이 되는 자료구조이다....

Read More
PointRee 프로젝트 2 - front 개발환경 셋팅과 전체적인 디자인

PointRee 프로젝트 2 - front 개발환경 셋팅과 전체적인 디자인

가장 먼저 vscode를 통해 wsl2에 접속하고 wsl2에 폴더를 만들어 주고 react-create-app으로 간단하게 react프로젝트를 시작했다. 그리고 npm run start로 시작해보면 정상적으로 프로젝트가 실행되는 것을 확인 할 수 있다. 이때 나처럼 wsl2로 실행시킨 사람이라면 window의 브라우저에 localhost:3060을 타이핑해서 들어간다면 접속이 되지 않을 것이다....

Read More