자바의 정석 chapter 3

inho ha·2022년 2월 14일
0

자바의 정석

목록 보기
3/18

연산자 : 연산을 수행하는 기호
피연산자 : 연산자의 작업 대상(변수, 상수, 리터럴, 수식)

연산자 우선순위

산술 > 비교 > 논리 > 대입
단항 > 이항 > 삼항

산술 변환

이항 연산자는 두 피연산자의 타입이 일치해야 연산이 가능
보통 더 큰 타입으로 일치시켜 값 손실을 방지함
이 경우 형변환을 생략하면 자동 형변환이됨
피연산자의 타입이 int 보다 작은 타입이면 int로 변환됨

char c = 'a' + 1; 은 int로 변하지 않음

'a' + 1 은 리터럴 같의 연산이기 때문
상수 또는 리터럴 간의 연산은 컴파일 시에 컴파일러가 계산해서 그 결과로 값을 대체하기 때문에 위의 경우 실행 시에 덧셈 연산이 일어나지 않음

피연산자가 유한수가 아닌 경우의 연산결과

0.1 != 0.1f

왼쪽의 0.1은 double 타입이고 오른쪽은 float 타입이기 때문에
두 타입의 정확도 차이로 값이 일치하지 않음

문자열 비교

내용이 같은지 비교 : equals() 메서드 사용
대소문자 구별 없이 비교 : equalsIgnoreCase() 메서드 사용
같은 메모리 주소에 저장된 문자열인지 비교 : == 사용

논리 연산자

&& 가 || 보다 우선순위가 높다
||의 경우 왼쪽이 true이면 오른쪽은 연산하지 않고 바로 true를 리턴한다.
오른쪽에 ++ 와 같은 증감 연산자가 있는 경우 왼쪽이 true 인 경우 증감 연산자가 실행되지 않는다.

비트 연산자

| : or, 주로 특정 비트의 값을 변경할 때 사용
& : and, 주로 특정 비트의 값을 뽑아낼 때 사용
^ : xor, 같은 값으로 두번 연산하면 원래 값으로 돌아옴, 주로 간단한 암호화에 사용
~ : 비트 전환 연산자, 0은 1로 1은 0으로 바꿈
~ 연산 시 int 타입보다 작은 타입은 int 타입으로 자동 형변환 된다.

쉬프트 연산자

">>" : 비트를 오른쪽으로 이동시킨 뒤 빈자리는 양수인 경우 0으로, 음수인 경우 1로 채움
"<<" : 비트를 왼쪽으로 이동시킨 뒤 빈자리는 0으로 채움
쉬프트 연산 시 좌측 피연산자는 int 타입보다 작은 타입은 int 타입으로 자동 형변환 된다.
그러나 우측 피연산자는 좌측과 일치시킬 필요가 없기 때문에 형변환이 적용되지 않는다.
x << n 에서 n이 x의 자료형의 bit수 보다 크면 bit수로 나눈 나머지 만큼 연산을 수행한다.

대입 연산자

대입 연산자는 연산자들 중에서 우선순위가 가장 낮다.
연산 진행 방향은 오른쪽에서 왼쪽이다.
x=y=3 의 경우 y=3이 먼저 실행되고 x=y가 다음으로 실행된다.

profile
iha / ian / inho ha

0개의 댓글