제어문

  • 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

[Disjoint Set] Union Find 알고리즘

[Disjoint Set] Union Find 알고리즘

1. Disjoint Set 번역하면 서로소 집합으로 서로 중복 되지 않는 부분 집합들로 이루어진 집합(set)으로 교집합이 존재 하지 않는 부분집합들로 이루어진 집합이다. 2. Union-Find Union : 두개의 집합을 하나의 집합으로 합치는 것. Find : 어떤 원소가 주어졌을 때 이 원소가 속한 집합을 반환하는(찾는) 것. 집합들을 tree구조로 나타내어 해당원소가 어떤 집합에 속하는지 판단...

Read More
Spring Security Cors Mapping Error

Spring Security Cors Mapping Error

  • Error
  • 2022년 2월 14일

CORS 란? Cross-Stie HTTP Requests의 약자로 한 도메인이 다른 도메인의 자원을 사용하는 것을 의미하는데, chrome cors 기본정책이 strict-origin-when-cross-origin으로 Same Origin에 대해서만 자원을 사용하도록 제한되어 있다. 여기서 Same-Origin이란 호스트명, 프로토콜, 포트가 같은 도메인을 말한다. Front...

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

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

mkdir pointRee cd pointRee mkdir front cd front npm init -y npm install react-create-app 가장 먼저 vscode를 통해 wsl2에 접속하고 wsl2에 폴더를 만들어 주고 react-create-app으로 간단하게 react프로젝트를 시작했다. 그리고 npm run start로 시작해보면 정상적으로 프로젝트가 실행되는 것을 확인 할 수 있다. 이때 나처럼 wsl2로 실행시킨 사람이라면 window...

Read More