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. 치키티타
    220617
  2. 220425
  3. 행달
    22.02.04 완료
  4. 행달
    22.02.04 완료
  5. 모찌말랑카우
    22.01.24 완료
  6. 생동태
    2022.01.21 완료
  7. 구니
    22.01.08 완료
  8. nagvert
    2021.12.19 수강완료
  9. syh712
    2021-11-26
    08:25-08:45 자바강의<논리 연산자>
    1. B and B/ B or B
    2. && =>and
    if (id.equals("egoing") && password.equals("111111")) {
    System.out.println("right");
    } else {
    System.out.println("wrong");

    3. || => or
    if ((id.equals("egoing") || id.equals("k8805") || id.equals("sorialgi"))
    && password.equals("111111")) {
    System.out.println("right");
    } else {
    System.out.println("wrong");

    4. ! => not
    if (!true) {
    System.out.println(1);
    }
    if (!false) {
    System.out.println(2);
  10. 네제가해냈습니다
    211114
  11. 드림보이
    2021.11.12. 논리 연산자 파트 수강완료
  12. 10.27수강완료
  13. 안젤라비
    21-10-21
  14. 성치
    2021-10-21일 완료
  15. 1011
  16. 미NI언
    10.7 완료!
  17. 아하
    21.09.28 완료
  18. 베이스박
    210823 학습완료했습니다. 감사합니다.
  19. 오션멍키
    210822완료
  20. super1Nova
    210811
  21. 이땅콩
    JAVA에서도 short circuit을 실행한다.
    && : and
    || : or
    ! : not

    &, | : 비트연산자
  22. B=loom
    2021.07.19
  23. 악어수장
    5.12 2회독 완료
  24. 개발꾸꾸
    5.11
  25. 드림보이
    수강완료했습니다...
  26. Ruinark
    21.03.18 완료
  27. 하연주
    210202 완료
  28. 윤성원
    21/01/27 완료!
  29. 김민혁
    21/1/10 수강완료
  30. 코린이
    2020.11.21 학습완료
  31. 자바남
    수강완료 !
  32. 오석민
    2020.09.21
  33. 프로페쎠널
    2020.08.24 - 완료
  34. 김태현
    공부완료
  35. hvii
    20200807 학습완료
  36. EunSeok Kang
    2020 0803 잘보고갑니다.
  37. yulrinam
    200803 시청완료 감사합니다 :)
  38. yuji
    자바왕초보 2일차 완료

    논리연산자는 논리를 나타내고 있고 T/F 로 구분된다.

    종류에는 &&(AND),ll(OR),!(NOT)이 있고
    AND는 좌항과 우항의 값둘다 참이어야지 TRUE가 되고 하나라도 거짓 일시 FALSE가 된다.
    반면 OR는 하나의 값이라도 참이면 그 값이 TRUE가 된다.(두개가 동시에 FALSE인 경우만 FALSE가 된다)
    NOT은 부정의 의미를 가지고 있고 !TRUE에 붙이면 FALSE, !FALSE에 붙이면 TRUE가 된다.
  39. 수고했어오늘도
    2020-03-23
  40. 20200321
  41. 흐무
    2020-02-29 완료
    논리연산자 And,or 가 있고 And는 두개의 값이 true면 출력하고 하나라도 false면 출력이 안되고 or는 하나의 값이 true라도 출력이된다. Not 연산자는 boolean연산자의 true나false의 앞에 붙여서 반대의 의미를 나타낸다.
  42. 베이비유저<baby user>
    2020/02/18 min 완
  43. 과연다볼수있을까?
    200105 완료
  44. 강연지
    20191213 완료
  45. 이재우
    완ㅇ
  46. 엘비
    20191105 완료
  47. gwonran
    19/10/19 복습완료
  48. 허공
    감사합니다!
  49. 워나
    2019/10/09 완료

    혹시나 해서 또 써두는 것

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

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

    이때 대략적으로..

    int a;

    a=1

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

    처럼 쓰이곤 합니다.
  50. 2019-09-19
버전 관리
egoing
현재 버전
선택 버전
graphittie 자세히 보기