본문 바로가기
국비학원 전 강의 필사/점프 투 자바

#04-01 if 문 - <점프 투 자바>

by kkooHan 2022. 9. 1.

 

출처 : https://wikidocs.net/book/31

 

 

점프 투 자바

**초보 프로그래머를 위한 자바 입문서** 이 책은 문법위주의 지식보다는 이해중심의 지식을 전달하는 것을 주 목적으로 한다. 예를 들어 자바에서 잘 파악하기 힘든 개념 ...

wikidocs.net

 

 

 

 

 

 

필사 :

 

다음과 같은 상상을 해 보자.

"돈이 있으면 택시를 타고 가고 돈이 없으면 걸어 간다."

 

위와 같은 상황은 우리 주변에서 언제든지 일어날 수 있는 상황중의 하나이다.

프로그래밍도 위처럼 조건을 판단해서 그 상황에 맞게 처리해야 할 경우가 생기게 된다.

이렇듯 조건을 판단하여 해당 조건에 맞는 상황을 수행하는데 쓰이는 것이

바로 if문이다.

 

위 상황을 자바는 다음과 같이 만들 수 있다.

 

boolean money = true;

if (money) {

    System.out.println("택시를 타고 가라");

} else {

    System.out.println("걸어가라");

}

 

 

 

 1. if문의 기본 구조

 2. 조건문이란 무엇인가?

 3. 비교연산자

 4. and(&&), or(||), not(!)

 5. contains

 6. else if (다중 조건 판단)

 

 

 

1. if문의 기본 구조

다음은 구조가 if와 else를 사용하는 기본 구조이다.

 

if (조건문) {

    <수행할 문장1>;

    <수행할 문장2>;

    ...

} else {

    <수행할 문장A>;

    <수행할 문장B>;

    ...

}

 

조건문을 테스트 해서 참이면 if문에 속한 문장들을 수행하고

조건문이 거짓이면 else문에 속한 문장들을 수행한다.

 

 

 

2. 조건문이란 무엇인가?

if (조건문)에 사용한 조건문은 참과 거짓을 판단하는 문장이다.

 

즉, 위의 예에서 보았던 money가 조건문이 된다.

 

boolean money = true;

if (money) {

...

 

money는 true이기 때문에 if문에 속한 문장들이 수행된다.

 

 

 

3. 비교연산자

이번에는 조건판단에 사용되는 비교 연산자(<, >, ==, !=, >=, <=)에 대해서 알아보자.

 

다음은 자바의 비교 연산자들이다.

비교연산자 설명
x < y x가 y보다 작다
x > y x가 y보다 크다
x == y x와 y가 같다
x != y x와 y가 같지 않다
x >= y x가 y보다 크거나 같다
x <= y x가 y보다 작거나 같다

 

 

예를 통해서 연산자들에 대해서 알아보자.

int x = 3;

int y = 2;

System.out.println(x > y);   // true 출력

 

x에 3, y에 2를 대입한 다음에 x > y 라는 조건문을 출력하니 true가 출력된다.

왜냐하면 x > y 조건문이 참이기 때문이다.

 

 

 

System.out.println(x < y);   // false 출력

 

위 조건문은 거짓이기 때문에 false가 출력된다.

 

 

 

System.out.println(x == y);   // false 출력

 

x와 y는 같지 않다. 따라서 위의 조건문은 참이다.

 

 

 

System.out.println(x != y);   // true 출력

 

x와 y는 같지 않다. 따라서 위의 조건문은 참이다.

 

 

 

앞의 택시예제를 다음처럼 바꾸어 보자.

"만약 3000원 이상의 돈을 가지고 있으면 택시를 타고 그렇지 않으면 걸어가라"

 

위 상황은 다음처럼 코딩할 수 있다.

 

int money = 2000;

if (money >= 3000) {

    System.out.prinln("택시를 타고 가라");

} else {

    System.out.println("걸어가라"

}

 

money >= 3000 이란 조건문이 거짓이 되기 때문에

else문의 문장이 수행되어 "걸어가라"가 출력된다.

 

 

 

4. and(&&), or(||), not(!)

이외에도 조건 판단에 쓰이는 and, or, not 연산자가 있다.

 

각각의 연산자는 다음처럼 동작한다.

 

 - x || y : x와 y 둘 중 적어도 하나가 참이면 참이다

 - x && y : x와 y 모두 참이어야 참이다.

 - !x : x가 거짓이면 참이다

 

 

 

이번에는 다음과 같은 상황을 코딩해 보자.

"돈이 3000원 이상 있거나 카드가 있다면 택시를 타고 그렇지 않으면 걸어가라"

 

int money = 2000;

boolean hasCard = true;

if (money >= 3000 || hasCard) {

    System.out.println("택시를 타고 가라");

} else {

    System.out.println("걸어가라");

}

 

money는 2000으로 3000보다 작지만 hasCard가 true이기 때문에

money >= 3000 || hascard 조건문이 참이 되어

"택시를 타고 가라"가 출력된다.

 

 

 

5. contains

List 자료형에는 해당 아이템이 있는지 조사하는 contains 메소드가 있다.

contains 메소드는 조건문에 많이 활용되는데 어떻게 활용이 되는지 살펴보자.

 

 

이번에는 다음의 상황을 코딩해 보자.

"만약 주머니에 돈이 있으면 택시를 타고, 없으면 걸어가라"

 

ArrayList<String> pocket = new ArrayList<>();

pocket.add("paper");

pocket.add("handphone");

pocket.add("money");

 

if (pocket.contains("money")) {

    System.out.println("택시를 타고 가라");

} else {

    System.out.println("걸어가라");

}

 

pocket 리스트 안에 'money'가 있으므로

pocket.contains("money")가 참이 되어

"택시를 타고 가라"가 출력된다.

 

 

 

6. else if (다중 조건 판단)    

if와 else만으로는 다양한 조건 판단을 하기가 어렵다.

다음과 같은 예만 하더라도 if와 else만으로는

조건 판단에 어려움을 겪게 된다.

 

 

"지갑에 돈이 있으면 택시를 타고,

 지갑에 돈이 없지만 카드가 있으면 택시를 타고,

 돈도 없고 카드도 없으면 걸어가라"

 

 

위의 문장을 보면 조건을 판단하는 부분이 두 군데가 있다.

먼저 지갑에 돈이 있는지를 판단해야 하고

지갑에 돈이 없으면 다시 카드가 있는지를 판단한다.

 

 

if와 else만으로 위의 문장을 표현하려면 다음과 같이 해야한다.

 

boolean hasCard = true;

ArrayList<String> pocket = new ArrayList<String>();

pocket.add("paper");

pocket.add("handphone");

 

if (pocket.contains("money)) {

    System.out.println("택시를 타고 가라")

} else {

    if (hasCard) {

        System.out.println("택시를 타고 가라");

    } else {

        System.out.println("걸어가라")

    }

}

 

if와 else가 여러번 사용되어 이해하기가 쉽지 않고 산만한 느낌이 든다.

위와 같은 점을 보완하기 위해서 자바는 다중 조건 판단을 가능하게 하는

else if가 있다.

 

 

 

다음은 위 예에 else if를 적용한 코드이다.

 

boolean hasCard = true;

ArrayList<String> pocket = new ArrayList<String>();

pocket.add("paper");

pocket.add("handphone");

 

if (pocket.contains("money")) {

    System.out.println("택시를 타고 가라"));

} else if (hasCard) {

    System.out.println("택시를 타고 가라"));

} else {

    System.out.println("걸어가라"));

}

 

else if이전 조건문이 거짓일 때 수행된다.

따라서 위 예에서 pocket.contains("money") 문장이 거짓이므로

else if 문이 수행되고 hasCard가 true이므로

"택시를 타고 가라"가 출력된다.

 

 

 

if, else if, else의 기본 구조는 다음과 같다.

 

if (조건문) {

    <수행할 문장1>

    <수행할 문장2>

    ...

} else if (조건문) {

    <수행할 문장1>

    <수행할 문장2>

    ...

} else if (조건문) {

    <수행할 문장1>

    <수행할 문장2>

    ...

...

} else {

    <수행할 문장1>

    <수행할 문장2>

    ...

}

 

else if는 개수에 제한 없이 사용할 수 있다.

 

 

 

 

 

요약 : 

 

 1. if문의 기본 구조
  if (조건문) {
  }

 

 

 2. 조건문이란 무엇인가?
  참과 거짓을 판단하는 문장.

 


 3. 비교연산자
  <, >, <=, >=, ==, !=

 


 4. and(&&), or(||), not(!)

  둘다 , 둘 중 하나 , 거짓이면 참.

 


 5. contains
ArrayList.contains("money")

 


 6. else if (다중 조건 판단)
개수 제한 X

 

 


boolean hasCard = true;

ArrayList<String> pocket = new ArrayList<String>();
pocket.add("paper");
pocket.add("handphone");

if (pocket.contains("money")) {
    System.out.println("택시를 타고 가라"));
} else if (hasCard) {
    System.out.println("택시를 타고 가라"));
} else {
    System.out.println("걸어가라"));
}

 

 

 

느낀점 : 

hasCard = true (X)   hasCard (O)


조건문에서는 ; 안씀.


아이템이 (key, value)가 아니구나.

-> Map에서의 아이템과 헷갈렸다. 하나의 구성요소를 아이템이라고 하나보다.


경우의 수가 8개인 경우 한 번 직접 해보면
else if에 대해 더 확실히 알 것 같다.

댓글