[Java] 삼항연산자 / 논리연산자 / 쉬프트연산자

2021. 1. 14. 20:10Dev.Program/Java & Spring

728x90

======== Ex.java 만들기

p.104

< 삼항연산자(조건연산자) >

  • 연산에 참여하는 항이 3개인 연산자
  • 특정 조건에 따라 다른 값을 실행하는 연산자

⇒ if ~ else 문과 동일한 기능을 수행

  • 2가지 경우의 수(true 또는 false) 에 대한 결과를 수행 가능

< 기본 문법 >

연산식 ? 값1 : 값2
  • 연산식에는 결과값이 boolean 타입(true 또는 false)인 식만 올 수 있다!
  • 연산식 판별 결과가 true 일 때 값1 부분을 실행하고,
  • 연산식 판별 결과가 false 일 때 값2 부분을 실행

 

문제 ) a 와 b 중에서 a가 크면 max 에 a 를 전달하고, 아니면 b를 전달

int a = 10;
System.out.println(a % 2 == 0 ? "짝수" : "홀수");
// ⇒ true 일 때 : System.out.println("짝수"); 문장과 동일한 결과가 출력됨

a = 11;
System.out.println(a % 2 == 0 ? "짝수" : "홀수");
// ⇒ false 일 때 : System.out.println("홀수"); 문장과 동일한 결과가 출력됨

String result = a % 2 == 0 ? "짝수" : "홀수";

// String result = "홀수"; 와 동일함
System.out.println("result : " + result);

System.out.println("-------------------------------");

a = 10;
int b = 20;
// a 와 b 중에서 a가 크면 max 에 a 를 전달하고, 아니면 b를 전달
int max = a > b ? a : b;
System.out.println("최대값 max = " + max);

푼 답

 

======== Test.java 만들기

문제)  뷔페 요금 계산

1. 뷔페의 기본 요금(price)은 30000원이다. ⇒ 변수 생성 및 초기화

2. 손님의 나이(age) 를 입력받는다. ⇒ 변수 생성 및 초기화

3. 뷔페 할인 조건 : 나이(age) 가 3세 이하일 경우 70% 할인된 요금으로 계산

4. 최종적으로 뷔페 요금 출력

오류가 뜸...ㅎㅎ
&ldquo;price * 0.3&rdquo; 연산이 &ldquo;p-p*0.7&rdquo; 보다 빠르기 때문에!!! 더 빠른 &ldquo;p*0.3&rdquo; 으로 적는게 좋음

  • 그리고 0.3을 곱하면 실수형으로 바뀌기 때문에 앞에 (int)를 적어서 형변환 해줘야함

 

문제 ) 대문자 판별

1. 영문자를 입력받아 변수 ch에 저장 ⇒ 변수 생성 및 초기화

2. 대문자 판별하여 결과를 변수 result에 저장

⇒ 대문자일 경우 "대문자" 를 저장하고, 아니면 "대문자 아님"을 저장

⇒ 대문자란? 'A' 보다 크거나 같고, 'Z' 보다 작거나 같은 문자

3. 결과(result) 출력

char ch = 'B'; 
String result = (ch >= 'A' && ch <= 'Z') ? "대문자" : "대문자아님"; 
System.out.println(result);
  • String result = (ch >= 'A' && ch <= 'Z') ? "대문자" : "대문자아님";

  여기 괄호는 빼도 되는데 보기 쉽게 괄호를 넣어줌. 

  • 문자 ch 가 'A'(65) 보다 크거나 같다 : ch >= 65 또는 ch >= 'A'
  • 문자 ch 가 'Z'(90) 보다 크거나 같다 : ch <= 90 또는 ch <= 'A'

⇒ 두 조건을 모두 만족하면 true, 하나라도 만족하지 않으면 false 가 되어야 하므로 &&(AND) 연산자 사용하여 두 조건을 묶어준다.

 

======== Ex2.java / Test2.java ⇒ 삼항연산자 중첩 사용

< 삼항연산자의 중첩 사용 >

  • 경우의 수가 3가지 이상일 때 사용
  • 삼항연산자 내에서 true 또는 false 일 때 실행할 부분에 또 다른 삼항연산자를 사용하여 그 다음 조건을 판별하는 방법을 사용


< 기본 문법 >

연산식1 ? 값1 : 연산식2 ? 값2 : 값3; 

 

======== Ex3.java

< 비트 단위 논리연산자(&, |, ~, ^)>

  • 정수끼리 2진수로 변환 후 논리적인 연산 수행

 

1. AND 연산(&) - 두 비트가 모두 1일 때 결과가 1이고, 하나라도 0이면 결과가 0

1100(12)

0100( 4)

-------- AND 연산

0100( 4)

  

2. OR 연산(|) - 두 비트 중 하나라도 1이면 결과가 1이고, 모두 0이면 결과가 0

1100(12)

0100( 4)

-------- OR 연산

1100(12)

 

3. XOR 연산(^) - 두 비트가 같으면 0, 다르면 1

1100(12)

0100( 4)

-------- XOR 연산

1000( 8)

 

4. NOT 연산(~) - 현재 비트를 반전(0 → 1, 1 → 0)

1100(12)

 -------- NOT 연산

 

======== Ex4.java

p.109

< 비트 단위 쉬프트(Shift) 연산자 >

  • 비트를 좌측 또는 우측으로 이동시키는 연산자
  • 좌측으로 이동하는 Left Shift 연산자 : x * 2 와 동일한 연산 수행

(우측 빈 자리는 0으로 채움)

⇒ 정수 << x비트 할 경우 "정수 * 2^x" 결과와 같다 

  • 우측으로 이동하는 Right Shift 연산자 : x / 2 와 동일한 연산 수행

 

728x90