Java

논리 연산자

논리 연산자

조건문 수업에서 Boolean에 따라서 프로그램이 다르게 동작하도록 하는 방법을 배웠다. 이번 시간에는 Boolean의 값을 결합해서 코드를 좀 더 간결하게 만들 수 있는 논리 연산자(Conditional Operator)에 대해서 알아보자. 뒤에서는 조건문 수업의 예제에 논리 연산자를 결합해 볼 것이다. 

&&

&&는 좌항과 우항의 값이 모두 참(true)일 때 참이 된다. And라고 읽는다. 다음 예제를 보자. 결과는 1이다. and의 좌우항이 모두 true인 것은 첫 번째 조건문 밖에 없기 때문이다. (실행)

package org.opentutorials.javatutorials.conditionaloperator;

public class AndDemo {

    public static void main(String[] args) {
		if (true && true) {
			System.out.println(1);
		}

		if (true && false) {
			System.out.println(2);
		}

		if (false && true) {
			System.out.println(3);
		}

		if (false && false) {
			System.out.println(4);
		}

	}

}

논리 연산자를 이용한 사례를 살펴보자. 다음 예제는 논리 연산자를 이용해서 이전 예제를 개선한 것이다.

package org.opentutorials.javatutorials.conditionaloperator;

public class LoginDemo3 {
    public static void main(String[] args) {
		String id = args[0];
		String password = args[1];
		if (id.equals("egoing") && password.equals("111111")) {
			System.out.println("right");
		} else {
			System.out.println("wrong");
		}
	}
}

중첩된 if 문을 하나로 줄였다. 덕분에 코드의 복잡성도 낮아졌다. 위의 코드에서 &&는 아래와 같은 의미가 된다.

"id의 값이 egoing이고 password의 값이 111111이면 참이다"

즉 and 연산자의 좌항과 우항이 모두 참일 때 전체가 참이 되는 것이다.

||

||(or)는 좌우항 중에 하나라도 true라면 전체가 true가 되는 논리 연산자다. 다음 예를 보자. 결과는 1,2,3이 출력된다. 마지막 조건문의 or는 좌항과 우항이 모두 false이기 때문에 false가 된다. (실행)

package org.opentutorials.javatutorials.conditionaloperator;

public class OrDemo {

    public static void main(String[] args) {
		if (true || true) {
			System.out.println(1);
		}
		if (true || false) {
			System.out.println(2);
		}
		if (false || true) {
			System.out.println(3);
		}
		if (false || false) {
			System.out.println(4);
		}

	}

}

다음 예제는 id 값으로 egoing, k8805, sorialgi 중의 하나를 사용하고 비밀번호는 111111을 입력하면 right 외의 경우에는 wrong를 출력하는 예다.

package org.opentutorials.javatutorials.conditionaloperator;

public class LoginDemo4 {
    public static void main(String[] args) {
		String id = args[0];
		String password = args[1];
		if ((id.equals("egoing") || id.equals("k8805") || id.equals("sorialgi"))
				&& password.equals("111111")) {
			System.out.println("right");
		} else {
			System.out.println("wrong");
		}
	}
}

위의 예제에서는 or와 and를 혼합해서 사용하는 방법을 보여준다. id 값을 테스트하는 구간을 괄호()로 묶었다. 사용자가 id의 값으로 egoing 비밀번호를 111111을 입력했다면 연산의 순서는 아래와 같이 된다.

  1. (id=="egoing" or id=="k8805" or id=="sorialgi") : true가 된다.
  2. password=='111111' : true가 된다.
  3. true(1항) and true(2항) : true가 된다.

사칙 연산을 할 때 괄호부터 계산하는 것과 같은 원리다.

!

!는 부정의 의미로 not이라고 읽는다. Boolean의 값을 역전시키는 역할을 한다. true에 !를 붙으면 false가 되고 false에 !을 붙이면 true가 된다. 아래의 결과는 2다. (실행)

package org.opentutorials.javatutorials.conditionaloperator;

public class NotDemo {

    public static void main(String[] args) {
		if (!true) {
			System.out.println(1);
		}
		if (!false) {
			System.out.println(2);
		}

	}

}

댓글

댓글 본문
작성자
비밀번호
  1. 이재우
    완ㅇ
  2. 엘비
    20191105 완료
  3. gwonran
    19/10/19 복습완료
  4. 허공
    감사합니다!
  5. 워나
    2019/10/09 완료

    혹시나 해서 또 써두는 것

    ! 같은 경우는 비교문에서 많이 쓰입니다.

    예를 들어 if문에서 ~와 같지 않을 경우 처럼 사용되는데

    이때 대략적으로..

    int a;

    a=1

    if(a!=0){ // a가 0과 같지 않은 경우 true
    System.out.println("a는 0이 아니다);
    }

    처럼 쓰이곤 합니다.
  6. 2019-09-19
  7. ㅇㅇㅇㅇ
    ddd
    대화보기
    • PassionOfStudy
      190906 Note
      * 논리연산자
      논리연산자의 종류는 &&(AND), ||(OR), !(NOT) 세 가지가 존재한다
      - &&(AND)연산자는 두가지 피연산자가 모두 true일 경우에 true값을 나머지인 경우는 모두 false값을 반환한다.
      - ||(OR)연산자는 두가지 피연산자가 모두 false일 경우에 false값을 나머지인 경우는 모두 true값을 반환한다.
      - !(NOT)연산자는 ture일 경우는 false를 false일 경우에는 true를 반환한다.
    • 헁훈
      수강완료!
    • 홍주호
      20190902 완료
    • doevery
      수강완료
    • 다나가
      190819 - 수강완료!!!
    • 김혜민
      조건식에서 많이 사용합니다. 숙지하세요.

      좋은 강의 감사합니다
    • Hyeon-Jun Ha
      완료
    • 얼그레이
      190630 완료! 감사합니다 :)
    • 진한
      done ~
    • 6/17시작
      6/19 완료
    • 목단화국화차
      완료
    • 김동현
      감사합니다
    • silver94
      수업 잘듣고 갑니다 감사합니다~
    • YukiHo
      감사합니다~
    • ㅇㅇ
      잘보고 갑니다
    • 라또마니
      잘 봤습니다.
    • 호두
      고맙습니다.
    • j-graphy
      2019. 2. 1. 학습완료
    • 랑호앙
      and 연산자는 동시에 만족해야 성립하는거고
      or 연산자는 몇개 중 하나라도 만족하면 성립하는거군요
      다시 보니 중딩때 합의법칙이랑 곱의법칙이네요
    • 코아
      1/20 완료
    • 비교 (산술?)
      불린(명제)
      조건(if 문)
      논리연산( && or)
    • 열공합세
      갈수록 더 흥미로워 지네요!! 좋은 수업 감사합니다~
    • 전민희
      2018.10.01 완료!
      && = and 를 의미, 좌항과 우항이 모두 true 일 때 전체가 true
      || = or 을 의미, 좌항 혹은 우항 중 하나라도 true이면 true가 된다.
      ! = 부정의 의미, not. !true = false / !false = true 활용도가 많지 않다.
    • 1.0139871565065826
      ^=xor
    • Daydream
      오늘도 열공 화이팅

      &&
      ||
      !
    • 2018.08.31 완료 2주안에 끝낸당
    • 이지선
      2018.08.31 완료
    • 날다람쥐
      2018.08.27일 강의봄
    • 전하연
      감사합니다
    • 진영
      8/13 완료
    • 완료
    • winny32
      세번째 if (( > if (
      괄호가 하나아닌요
      대화보기
      • 멀캠A_Son
        완료
      • 이태호
        6/27
      • ozic
        감사합니다
      • 조원
        java의 초기 접근에 아주 유용한 강의 입니다.
        잘 공부하고 있습니다.
        감사합니다.
      • Ryan Paul Lagace
        자바가 c를 기반으로 만들어서인진 몰라도 대부분 변수,함수,연산자들이 다 똑같고 비슷해서 배우는 속도가 엄청난거같아요
      • Ra Yo
        감사합니다
      • 4월 25일 논리연산자
      • 송영일
        20180424
      • 박현모
        감사합니다~
      • ㅎㅎ
        으아앗! 다음은 반복문!!
      • java
        4/9
      버전 관리
      egoing
      현재 버전
      선택 버전
      graphittie 자세히 보기