큐범
Just do debug
큐범
전체 방문자
오늘
어제
  • 전체보기 (128)
    • 회고 (4)
    • JAVA (16)
      • JAVA 기초 (18)
      • JAVA Algorithm, Datastruct (13)
    • Spring (11)
    • Micro Service Architecture (3)
    • JPA (6)
    • gRPC (4)
    • Network (8)
    • Process (7)
    • Cloud (4)
    • Python (10)
    • Web(vue) (2)
    • UMC (1)
    • DB (9)
    • CS (1)
    • Clean Code (1)
    • TDD (9)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
큐범

Just do debug

JAVA/JAVA 기초

[JAVA 기초] 논리연산자(&&, ||, !)

2021. 7. 16. 09:30

논리연산자 &&, ||, !

  1. x는 5보다 크고, 10보다 작다.
    • x > 10 && x < 20
  1. i는 2의 배수 또는 3의 배수이다.
    • i%2==0 || i%3==0
  1. i는 2의 배수 또는 3의 배수지만 6의 배수는 아니다.
    • (i%2==0 || i%3==0) && i%6!=0
  1. 문자 ch는 숫자 (0~9)이다.
    • '0' <= ch && ch <= '9'
  1. 문자 ch는 대문자 또는 소문자이다.
    • ('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'z')
public static void main(String[] args) {
		int x = 0 ;
		char ch = ' ';
		
		x=15;
		System.out.printf("x=%2d, 10 < x && x < 20 = %b%n", x, 10< x && x <20);
		
		x=6;
		System.out.printf("x=%2d, x%%2==0 || x%%3==0 && x%%6!=0 =%b%n", x, x%2==0 || x%3==0 && x%6!=0);
		System.out.printf("x=%2d, (x%%2==0 || x%%3==0) && x%%6!=0 =%b%n", x, (x%2==0 || x%3==0) && x%6!=0);
		
		x='1';
		System.out.printf("ch='%c', '0' <= ch && ch <= '9' = %b%n", ch, '0' <= ch && ch <= '9');
		
		ch='a';
		System.out.printf("ch='%c', 'a' <= ch && ch <= 'z' =%b%n", ch, 'a' <= ch && ch <= 'z');
		
		ch='A';
		System.out.printf("ch='%c', 'a' <= ch && ch <= 'z' =%b%n", ch, 'A' <= ch && ch <= 'Z');
		
		ch='q';
		System.out.printf("ch='%c', ch=='q' || ch=='Q' = %b%n", ch,ch=='q' || ch=='Q');
	}

//결과
x=15, 10 < x && x < 20 = true
x= 6, x%2==0 || x%3==0 && x%6!=0 =true
x= 6, (x%2==0 || x%3==0) && x%6!=0 =false
ch=' ', '0' <= ch && ch <= '9' = false
ch='a', 'a' <= ch && ch <= 'z' =true
ch='A', 'a' <= ch && ch <= 'z' =true
ch='q', ch=='q' || ch=='Q' = true

 

public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		char ch = ' ';
		
		System.out.print("문자를 하나 입력해주세요 : ");
		
		String input = scanner.nextLine();
		ch=input.charAt(0);
		
		if('0'<= ch && ch <= '9') {
			System.out.printf("입력하신 문자는 숫자입니다. %n");
		}
		if(('a'<=ch && ch <='z') || ('A'<= ch && ch <= 'Z')) {
			System.out.printf("입력하신 문자는 영문자입니다. %n");
		}
	}
//결과
문자를 하나 입력해주세요 : a
입력하신 문자는 영문자입니다.

연산의 규칙

  • or연산 '||'은 둘 중 하나라도 참이라면 참(true)이다. 즉, 좌측이 참이면 우측은 연산자에 대해서는 평가하지 않는다.
  • and 연사 '&&'은 둘 중 하나라도 거짓(false)이라면 전체 연산결과가 '거짓(false)'이므로 좌측 연산결과가 거짓이라면 우측 연산은 평가하지 않는다.
  • 따라서, or연산의 경우 참일 확률이 높은 피연산자를 왼쪽에 두는 것이 더 빠른 검사 결과를 얻을 수 있다.
public static void main(String[] args) {
		int a = 5;
		int b = 0;
		
		System.out.printf("a=%d, b=%d%n", a, b);
		System.out.printf("a!=0 || ++b!=0 = %b%n", a, a!=0 || ++b!=0);
		System.out.printf("a=%d, b=%d%n", a, b);
		System.out.printf("a==0 && ++b!=0 = %b%n", a==0 && ++b!=0);
		System.out.printf("a=%d, b=%d%n", a, b);
	}
//결과
a=5, b=0
a!=0 || ++b!=0 = true
a=5, b=0
a==0 && ++b!=0 = false
a=5, b=0

위에 코드를 통해 변수 b에 증감 연산자 '++'을 사용해서 우측 피연산자가 처리되면, b의 값이 증가하도록했으나, 두번의 연산 후에도 b의 값은 여전히 0이다. 그 이유는 우측의 값이 정해져서 좌측의 값이 실행되지 않음을 알 수 있다.

출처 : JAVA의 정석 - (남궁성지음)

    'JAVA/JAVA 기초' 카테고리의 다른 글
    • [JAVA 기초] 비트 전환 연산자
    • [JAVA 기초] 논리 부정 연산자(true, false)
    • [JAVA 기초]비교 연산자
    • [JAVA 기초]산술 연산자
    큐범
    큐범

    티스토리툴바