전체 방문자
오늘
어제
21종
종이의 코딩 공부방
21종
  • 분류 전체보기 (171)
    • JAVA (64)
    • Springboot (46)
      • 블로그만들기 (45)
    • Database (60)
      • Oracle (60)
    • 프로젝트 3 (CELOVER) (0)
    • 개발서버 구축 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
21종

종이의 코딩 공부방

JAVA

[자바/JAVA] 프로그래밍 - 논리연산자(Logical operator)

2023. 5. 29. 18:47

논리연산자(이항연산자)

 두 개의 논리값(true, false)을 연산해주는 연산자

논리연산한 결과마저도 논리값임 !!

 

논리값 && 논리값 (and) : 왼쪽과 오른쪽 둘다 true일 경우 결과값은 true

논리값 || 논리값 (or) : 왼쪽과 오른쪽 둘중에 하나라도 true 일 경우 결과값은 true

 

예제1) 사용자가 입력한 정수값이 1부터 100 사이의 값인지 확인

public void method1() {

    Scanner sc = new Scanner(System.in);
    System.out.print("정수 하나 입력 : ");
    int num = sc.nextInt();

    // boolean result = (1 <= num <= 100);	// => 쓸수 없음, 항을 나눠줘야 함
    boolean result = (num >= 1) && (num <= 100);	// num값이 1이상 "이고" "그리고" num값이 100 이하일 경우 
    // && 의미 : ~이고, 그리고, ~하면서
    System.out.println("사용자가 입력한 값이 1이상 100이하 입니까? : " + result);

    // && : 두개의 조건 무두가 true여야 &&연산의 결과값이 최종적으로 true
    //		둘 중에 하나라도 false 가 있을 경우 && 연산의 결과값은 false
    sc.close();
}

 

예제2) 사용자가 입력한 문자값이 영어 대문자인지 확인

'A'~'Z' : 65 ~ 90

public void method2() {
    Scanner sc = new Scanner(System.in);
    System.out.print("문자 하나 입력 : ");
    char ch = sc.nextLine().charAt(0);

    // 첫번째 방법
//		boolean result = (ch >= 65) && (ch <= 90);
//		System.out.println("사용자가 입력한 값이 대문자 입니까? : " + result);

    // 두번째 방법
    boolean result = (ch >= 'A') && (ch <= 'Z');
    System.out.println("사용자가 입력한 값이 대문자 입니까 ? : " + result);

    sc.close();
}

 

예제3) 사용자에게 성별을 입력 받은 후 여자인지 확인

public void method3() {
    Scanner sc = new Scanner(System.in);

    System.out.print("성별을 입력해주세요 (M/F) : ");
    char gender = sc.nextLine().charAt(0);

    boolean result = (gender == 'F') || (gender == 'f');
    // || 의미 : ~이거나, 또는 ~

    System.out.println("사용자가 여자 입니까 ? : " + result);
    // || : 두개의 조건 중 하나라도 true가 있다면 || 연산의 결과값은 true
    // 		두개의 조건 모두 false || 연산의 결과값이 false
    sc.close();
}

 

예제4) 사용자에게 입력을 받아 게임을 종료하는 프로그램

public void method4() {
    Scanner sc = new Scanner(System.in);

    System.out.print("게임을 종료하시려면 y를 입력하세요 : ");
    char ch = sc.nextLine().charAt(0);

    boolean result = (ch == 'y') || (ch == 'Y');
    System.out.println("사용자가 입력한 값이 y또는 Y입니까? :" + result);
    sc.close();
}

 

 

&& : 두개의 조건이 모두 true 여야 결과값이 true임 (AND == ~이고, 그리고, ~이면서, 뿐만아니라)
 

true && true => true

true && false => false

false && true => false

false && false => false

 

** && 연산자를 기준으로 앞의 결과가 false일 경우 뒤의 조건은 굳이 실행하지 않는다!! **

 

|| : 두개의 조건중 하나라도 true라면 결과값이 true임 (OR == 또는, ~이거나)

 

true || true => true

true || false => true

false || true => true

false || false => false

 

** || 연산자 기준을 앞의 결과가 true일 경우 뒤의 조건 굳이 실행하지 않는다!!

 

확인 예제) 정말 앞의 결과가 false일 경우 뒤의 조건은 실행되지 않을까 ?

 

public void method5() {
    int num = 10;
//	boolean result1 = (num < 5) && (++num > 0);	// 앞(num < 5)에서 이미 false이기 때문에 무조건 false 값이
												// 출력되므로 뒤에 ++num 동작이 수행되지않는다. 즉 num == 10
    boolean result1 = (num > 5) && (++num > 0);	// 앞에서 (num > 5)이 참이므로 뒤에 코드도 확인해야 되므로 실행된다.
    											// 즉, num = 11
    System.out.println("result1 : " + result1);
    System.out.println("&& 연산 후의 num 값 : " + num);

    int num2 = 10;
//	boolean result2 = (num2 < 20) || (++num2 > 0);	// num2 = 10
//	boolean result2 = (num2 > 20) || (++num2 > 0);	// num2 = 11
    boolean result2 = true || (++num2 > 0);	// 뒤에 (++num2 > 0)는 Dead Code
    										// Dead Code : 절대로 실행될일 없는 코드
    System.out.println("result2 : " + result2);
    System.out.println("&& 연산 후의 num2 값 : " + num2);
}

 

    'JAVA' 카테고리의 다른 글
    • [자바/JAVA] 프로그래밍 - 삼항연산자(ternary operator)
    • [자바/JAVA] 프로그래밍 - 복합 대입 연산자 (Compound assignment operator)
    • [자바/JAVA] 프로그래밍 - 비교연산자(Comparison operator)
    • [자바/JAVA] 프로그래밍 - 형 변환(Casting)
    21종
    21종
    코딩 공부한 것 정리하려고 만든 블로그

    티스토리툴바