JAVA_이론정리03_연산자2
논리연산자 : 두 논리값 사이의 관계를 따지는 연산자
==> 즉, 논리값을 AND, OR, NOT 방식으로 관계를 알아보는 연산자
주의사항 ]
비교하는 데이터는 반드시 논리값이어야 한다.
기호 ]
& AND 관계 (둘 다 만족)
| OR 관계 (둘 중 하나만)
절삭연산
------------------------------------------------------------------
&& AND 관계 - 앞이 거짓이면 뒤는 읽어보지도 않음
|| OR 관계 - 앞이 참이면 뒤는 읽어보지도 않는 연산자
------------------------------------------------------------------
! NOT 관계 (결과 부정하고 싶을때, 논리값 뒤바꿈)
진가표
AND 데이터1 & 데이터2
OR 데이터1 | 데이터2
데이터1 데이터2 OR AND
true true true true
true false true false
false true true false
false false false false
참고 ]
컴퓨터는 한번의 질문에 오직 한개만 질문할 수 있다.
즉, 크면 큰거고 작으면 작은거다.
예 )
데이터가 10에서 20사이인가? 라는 질문은 할 수 없다.
그러기 때문에 필요한 것이 논리 연산자 이다.
예 ]
데이터가 10에서 20 사이인가? 라는 질문은
10 < 1 < 20
수학 연산식 에서는 상기와 같이 계산하지만,
컴퓨터에서는 동시에 질문하는 것은 안되고
10 < a && a < 20
라는 방식으로 질문해야 한다.
참고 ]
이 연산자의 결과는 역시 논리값이 나온다.
참고 ]
절삭 연산
==> 특정 부분의 계산식은 계산하지 않도록 한다.(읽어보지도 않음)
& 절삭연산을 하지 않는다.
&& 절삭 연산을 실행한다.
앞의 질문이 거짓이면 뒤에 어떤 데이터가 오더라도 읽어보지 않는다.
| 절삭연산을 하지 않는다.
|| 절삭연산을 실행한다.
앞이 참이면 뒤의 내용은 읽어보지도 않는다.
int no1 = 10;
int no2 = 10;
boolean bool = (no1 > no2) && (no1++ == no2);
&& 앞 연산이 false 였기 떄문에 뒷부분에는 실행 안됨.
System.out.println("bool : " + bool); //false
System.out.println("no1 : " + no1); //10
System.out.println("no2 : " + no2); //10
의 결과값과
마지막 변수의 값을 예측해서 작성하시오
비트연산자
C언어에서 가지고 온 연산자
C언어는 주소를 직접 이용할 수 있으므로 필요했던 연산자이지만,
자바는 주소를 이용할 수 없으므로 사용하지 않는 연산자 이다.
& 둘 다 1이면 1, 나머지는 0
| 둘 중 하나가 1이면 1
^ 다르면 1 같으면 0
시프트 연산자
기호 ]
부호비트는 그대로
>>
<<
부호비트도 쉬프트
>>>
~ : 보수화 연산자(단항 연산자)
==>각각의 비트의 숫자를 반대로 바꾸는 연산자.
3항 연산자(조건 연산자)
==> 연산자라기 보다는 하나의 명령에 가까운 형식을 가지고 있는 연산자의 한 종류
조건에 따라서 처리할 내용을 구분해서 처리하도록 하는 연산자
형식 ] 참/거짓
변수 = (조건식) ? (조건식이 참일떄 처리내용(반환값)) : (조건식이 거짓일때 처리내용(반환값));
참고 ]
조건식은 반드시 참 또는 거짓으로만 만들어지도록 처리해야 한다.
if 명령을 단순화 시킨 의미를 가진 명령
참고 ]
모든 연산자가 중첩 처리되듯이
3항 조건 연산자도 중첩처리 될 수 있다.
예 ]
(조건식1) ? ((조건식2)?(5):(6)) : ((조건식3)?(7):(8));
==> 조건식 1이 참이고 조건식 2가 참이면 5, 조건식 2가 거짓이면 6을
조건식 1이 거짓이고 조건식 3이 참이면 7, 조건식 3이 거짓이면 8을 실행하세요.