연산자 & 피연산자
연산자
-
연산을 수행하는 기호
-
종류
-
산술 연산자 : 사칙연산과 나머지 연산
- + ,- ,* ,/ ,% ,<< , >>
나눗셈 연산자 ( / )
- 정수형 피연산자를 0으로 나누면 에러가 발생한다
- 두 피연산자가 모두 int일 경우 연산결과 역시 int타입이다.
( 10 / 4 가 2가 나오는 이유 소수점아래는 버려진다) - 피연산자 중 1개 이상이 실수형일 경우 실수형의 값을 결과로 얻는다
( int보다 float가 범위가 넓기 때문에 자동 형변환이 된다. )
나머지 연산자
- 나누고 난 나머지 값을 결과로 반환한다 오른쪽 피연산자에 0은 사용할 수 없다
- 주로 배수 검사에 사용된다
- 나누는 수로 음수도 가능하지만 부호가 무시된다 (절대값으로 나눈 나머지)
산술 변환
- 연산 전에 피연산자 타입을 일치하기 위해 자동 형변환 되는것을 산술 변환이라고 한다
- 피연산자들의 타입을 큰 타입의 타임으로 같게 일치시킨다.
- 피연산자들의 타입이 int보다 작을 경우는 int로 변환시킨다.
(오버플로우가 발생할 가능성이 있기 때문이다)
오버플로우
- 연산과정에서 타입이 표현할 수 있는 값의 범위를 넘어가는 것
( 최대값 + 1 은 최소값이 되고 최소값 - 1 는 최대값이 된다 )
- + ,- ,* ,/ ,% ,<< , >>
-
비교 연산자 : 크고 작음과 같고 다름을 비교
> , < , >= , <= , == , !=대소비교 연산자
- >, <, >=, <=
비교한 뒤 참이면 true 거짓이면 false를 결과로 반환한다
boolean을 제외한 기본형 자료형에 다 사용할 수 있다 ( 참조형은 X )
등가비교 연산자
- ==, !=
값이 같은지 다른지를 비교한다 ( 모든 자료형에 사용가능하다 ) - 두 문자열을 비교할 때는 == 대신 equals()라는 메서드를 사용한다
(대소문자를 구별하지 않고 비교할 때는 equalsIgnoreCase() 사용)
- >, <, >=, <=
-
-
논리 연산자 : and, or 로 둘 이상의 조건을 연결
&& , |||| ( or결합 ) : 피연산자 중 한쪽만 true만 true를 결과로 얻는다
&& ( and결합 ) : 피연산자 중 양쪽 모두 true여야 true를 결과로 얻는다 -
논리 부정 연산자 : true와 false를 반대로 바꾸는 연산자
! -
비트 연산자
>> , << , & , |- << : 왼쪽 피연산자의 각 비트를 오른쪽 피연산자 만큼 왼쪽으로 이동시킵니다
(빈자리는 0으로 채워집니다.) - >> : 왼쪽 피연산자의 각 비트를 오른쪽 피연산자 만큼 오른쪽으로 이동시킵니다
(빈자리는 왼쪽 피연산자의 최상위 부호비트와 같은 값으로 채워집니다.) - >>> : 왼쪽 피연산자의 각 비트를 오른쪽 피연산자 만큼 오른쪽으로 이동시킵니다
(빈자리는 0으로 채워집니다.) - & (and) : 두 비트 모두 1일 경우에만 연산 결과가 1
- | (or) : 두 비트 중 하나만 1일 경우에만 연산결과가 1
- ^ (xor) : 두 비트중 하나는 1이고 다른 하나가 0일경우에만 연산결과가 1
- ~ (not) : 비트를 반전시킨다 1은 0으로 0은 1로 (보수)
- << : 왼쪽 피연산자의 각 비트를 오른쪽 피연산자 만큼 왼쪽으로 이동시킵니다
-
조건 연산자 : 조건식, 식1, 식2 모두 세 개의 피연산자를 필요로하는 상항 연산자
result = (x>y) ? x : y; // x > y 가 참이면 result에 x값 저장 거짓이면 y값 저장
-
대입 연산자 : 우변의 값을 좌변에 저장
=- lvalue = rvalue
lvalue에는 값을 변경할 수 있는 것이 와야한다. - 연산방향이 오른쪽에서 왼쪽이다
- lvalue = rvalue
-
복합 대입 연산자 : 대입연산자앞에 다른 연산자가 와서 결합되는 경우
+= , -= , *=, /= , %= , <<= , >>= , &= , ^= , |=오른쪽 피연산자의 결과 값을 결합된 연산자와 연산한 결과를 왼쪽 피연산자에 대입
- x += 1 ( x = x + 1 )
- x -= 1 ( x = x - 1 )
- x *= 1 ( x = x * 1 )
- x /= 1 ( x = x / 1 )
- x *= 10 + y ( x = x * ( 10 + y ) )
-
증감 연산자 : 값을 1증가 또는 1 감소
++, --전위형과 후위형
- 전위형
피연산자의 왼쪽에 위치한다j = ++i;
값이 참조되기 전에 증가시킨다. - 후위형
피연산자의 오른쪽에 위치한다j = i++;
값이 참조된 후에 증가시킨다.
- 전위형
int i = 10, j = 0;
j = i++;
//출력 : j = 10, i = 11;
int i = 10, j = 0;
j = ++i;
//출력 : j = 11, i = 11;
-
부호 연산자
- : 피연산자의 부호를 반대로 변경한다 -
형변환 연산자
-
(변환할타입)피연산자
-
피연산자의 값을 지정된 타입으로 변환해서 결과만 반환한다 피연산자의 값은 변화가 없다
-
컴파일러가 생략된 형변환을 자동적으로 해주는 경우가 있는데 이 때는 표현범위가 좁은타입에서 넓은 타입으로 형변환 하는 경우다 ( 값 손실이 없기 때문에 )
byte -> short -> int -> long -> float -> double
char -> int
반대로 형변환 되는 경우에는 형변환 연사자를 반드시 써야한다.
-
- 연산자의 우선순위
- 연산자가 2개 이상인 경우 연산자의 우선순위에 의해 연산순서가 결정된다
- 연산자가 2개 이상인 경우 연산자의 우선순위에 의해 연산순서가 결정된다
피연산자
-
연산의 대상
-
피연산자의 개수에 따라 연산자를 분류하기도 한다
-
1개면 단항 연산자, 두개면 이항 연산자, 세개면 삼항 연산자라고 한다.
-
부호 연산자의 -와 뺄셈 연산자의 -를 피연산자의 개수로 구분할 수 있다
-
Author And Source
이 문제에 관하여(연산자 & 피연산자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@voicesplit/연산자-피연산자저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)