연산자 (2) - 논리·논리 부정·복합 대입·삼항 연산자 (23.04.19)

·2023년 4월 19일
0

Java

목록 보기
6/35
post-thumbnail

📝 연산자


💡 논리 연산자: &&(AND), ||(OR)

논리 값 두 개를 비교하는 연산자

✏️ &&(AND) 연산자

둘 다 true이면 true, 나머지는 false

  • 와, 그리고(~이고), ~면서, ~이면서, ~부터 ~까지, ~사이
  • 예시) 사과와 바나나, 사과 그리고 바나나, 사과이면서 바나나
		int a = 100;
		
		// a는 100 이상이면서 짝수인가?
		
		System.out.println( a >= 100 );// a는 100 이상인가?
		
		System.out.println( a % 2 == 0);// a는 짝수인가?
		
		System.out.println( a >= 100 && a % 2 == 0);
		
		int b = 5;
		
		// b는 1부터 10까지 숫자 범위에 포함되어 있는가?
		// (b는 1부터 10 사이의 숫자인가?)
		// (b는 1보다 크거나 같으면서 10보다 작거나 같은가?)
		
		
		System.out.println( b >= 1); // b는 1 이상인가?
		
		System.out.println( b <= 10); // b는 10 이하인가?
		
		System.out.println( b >= 1 && b <= 10);
//		System.out.println( 1 <= b <= 10); // java에서는 불가능한 수식임

✏️ ||(OR) 연산자

둘 다 false이면 false, 나머지는 true (AND의 반대)

  • 또는, ~거나, ~이거나
		int c = 10;
		
		// c는 10을 초과했거나 짝수인가?
		
		System.out.println( c > 10 || c % 2 ==0);

💡 논리 부정 연산자: !

논리 값을 부정하여 반대로 바꾸는 연산자

		boolean bool1 = true;
		boolean bool2 = !bool1; // false
		
		System.out.println("bool1 : " + bool1); // true
		System.out.println("bool2 : " + bool2); // false
		
		Scanner sc = new Scanner(System.in);
		
		// 정수를 하나 입력받았을 때
		// 1) 해당 정수가 1부터 100 사이 값이 맞는지 확인 (1 이상 100 이하)
		// 2) 1부터 100 사이 값이 아닌지 확인 (1번과 반대)
		
		System.out.println("정수 입력 : ");
		int input = sc.nextInt();
		
		// 1 <= input <= 100
		boolean result1 = input >= 1 && input <= 100;
		
		System.out.printf("%d은/는 1 이상, 100 이하의 정수인가? : %b\n", input, result1);
	
		// 1 이상이면서 100 이하 <-> 1 미만 또는 100 초과
		
		boolean result2 = input < 1 || input > 100;

		boolean result3 = !(input >= 1 && input <= 100);
		
		System.out.printf("%d은/는 1 미만, 100 초과 정수인가? : %b / %b\n", input, result2, result3);

💡 복합 대입 연산자: +=, -=, *=, /=, %=

피연산자가 자신과 연산 후 결과를 다시 자신에게 대입

		int a = 10;
		
		// a를 1 증가
		a++; // a = a + 1, a += 1
		System.out.println("a를 1 증가 : " + a); // 11
		
		// a를 4 증가
		a += 4;
		System.out.println("a를 4 증가 : " + a); // 15
		
		// a를 10 감소
		a -= 10;
		System.out.println("a를 10 감소 : " + a); // 5
		
		// a를 3배 증가
		a *= 3;
		System.out.println("a를 3배 증가 : " + a); // 15
		
		// a를 6으로 나눴을 때 몫
		a /= 6;
		System.out.println("a를 6으로 나눴을 때 몫 : " + a); // 2
		
		// a를 2로 나눴을 때 나머지
		a %= 2;
		System.out.println("a를 2로 나눴을 때 나머지 : " + a); // 0

💡 삼항 연산자: 조건식 ? 식1 : 식2

조건식의 결과가 true이면 식1, false이면 식2를 수행하는 연산자

  • 조건식: 연산 결과가 true / false인 식 (비교, 논리, 논리 부정 연산이 포함)
  • [예제 1]
    num이 30보다 크면(초과) : "num은 30보다 큰 수이다." 아니면 "num은 30 이하의 수이다." 출력하기
		int num = 30;

		String str1 = "num은 30보다 큰 수이다.";
		String str2 = "num은 30 이하의 수이다.";
		
		String result = num > 30 ? str1 : str2;
					//    조건식 ?    식1  :  식2
					//             true   false
		
		// num 값이 30을 초과하면 str1
		// num 값이 30을 초과하지 못하면 str2를
		// result 변수에 저장
		
		System.out.println(result);
  • [예제 2]
    입력받은 정수가 음수인지 양수인지 구분하기 (단, 0은 양수로 처리)
    정수 입력 : 4
    양수 입니다.
    정수 입력 : -5
    음수 입니다.
		Scanner sc= new Scanner(System.in);
		System.out.print("정수 입력 : ");
		int input = sc.nextInt();
		
//		[방법 1]
		String str3 = "양수 입니다.";
		String str4 = "음수 입니다.";
		
		String result2 = input >= 0 ? str3 : str4;
		System.out.println(result2);

//		[방법 2] 조금 더 간단하게 코드 짜는 방법
		String result2 = input >= 0 ? "양수" : "음수";
		System.out.println(result2 + " 입니다.");

profile
풀스택 개발자 기록집 📁

0개의 댓글