반응형
1. 연산자와 피연산자, 식( 표현식, expression )
- 연산자란?
연산을 수행하는 기호를 의미 - 피연산자
연산자와 연산을 수행하려면 반드시 연산의 대상이 있어야 하는데 이를 피연산자라고 한다.
연산자 : 연산을 수행하는 기호( +, -, *, / ... )
피연산자 : 연산자의 작업 대상
연산자는 피연산자로 연산을 수행하면 항상 결과값을 반환한다. - 식( 표현식, expression )
연사자와 피연산자를 조합하여 계산하고자 하는 바를 표현한 것을 식 또는 표현식이라고 한다.
2. 연산자의 종류
종류 | 연산자 | 설명 |
산술연산자 | +, -, *, /, %, <<, >>( 비트 ) | 사칙연산과 나머지 연산 |
관계(비교)연산자 | >, <, >=, <=, ==, != | 크고 작음과 같고 다름을 비교 |
논리연산자 | &&, ||, !, &, ^, ~ | 그리고( AND ) 또는 ( OR )으로 조건을 연결, 비트연산자 |
대입연산자 | = | 우변의 값을 좌변에 저장 |
기타연산자 | ( type ), ? :, instanceof | 형변환연산자, 삼항연산자, instanceof 연산자 |
3. 연산자의 우선순위와 결합규칙
- 식에 사용된 연산자가 둘 이상일 경우, 연산자의 우선순위에 의해서 연산 순서가 결정된다.
- 단항 연산자가 이항 연산자보다 우선순위가 높다.
- 만일 우선순위가 확실하지 않다면, 먼저 계산되어야 하는 부분을 괄호를 묶어주어야 한다. ()
괄호 안의 계산식이 우선순위가 제일 높다. - 연산자의 결합 규칙은 왼쪽에서 오른쪽 순서이지만, 대입 연산자( 제일 늦음 )는 오른쪽에서 왼쪽으로 진행된다.
* 정리
산술 > 비교 > 논리 > 대입 순서로 진행, 대입은 제일 마지막에 실행
단항( 1 ) > 이항( 2 ) > 삼항( 3 ) 순서로 진행
대입 연산자는 연산의 진행방향이 오른쪽에서 왼쪽이다.
* 우선순위!!!
최단산쉬관리삼대
최우선 -> 단항 -> 산술 -> 쉬프트 -> 관계(비교) -> 논리 -> 삼항 -> 대입
4. 산술 변환
- 이항 연산자는 두 피연산자의 타입이 일치해야 연산이 가능하므로, 피연산자의 타입이 서로 다르면 연산 전에 형변환 연산자로 타입을 일치시켜야 한다.
- 대부분의 경우 두 피연산자의 타입 중 더 큰 타입으로 일치시키는데, 그 이유는 작은 타입으로 형변환하면 원래의 값이 손실될 가능성이 있기 때문이다.
- 작은 타입에서 큰 타입으로 형변환 하는 경우, 자동적으로 형변환 연산자를 생략할 수 있다.( 자바가 알아서 해줌 )
- 두 연산자의 타입을 일치시킨다.( 보다 큰 타입으로 일치 )
long + int -> long + long
float + int -> float + float
double + float -> double + doble - 피연산자의 타입이 int보다 작은 타입이면 int로 변환된다.
byte + int -> int + int
char( ASCII ) + int -> int + int
* overflow : 최댓값보다 더 큰 수가 들어가서 최솟값으로 반환( 최댓값 + 1 == 최솟값 )
* underflow : 최솟값보다 더 작은 수가 들어가서 최댓값으로 반환( 최솟값 - 1 == 최댓값 )
- 두 연산자의 타입을 일치시킨다.( 보다 큰 타입으로 일치 )
- 문자열의 산술 변환
- 문자열과 문자열이 아닌 것들을 더했을 때는 순서에 따라 달라진다.
- 문자열이 먼저 더해지면 뒤에 있는 것들의 타입이 문자열로 변해 문자끼리 붙어서 반환이 되고 다른 타입들이 먼저 나오면 그 타입에 맞게 연산을 한 뒤에 문자열이 붙는다.
5. 단항 연산자
- 증감 연산자 ++, --
- 증감 연산자는 피연산자에 저장된 값을 1 증가 또는 1 감소시킨다.
- 일반적으로 단항 연산자는 피연산자의 왼쪽에 위치하지만 증감 연산자는 양쪽 모두 가능하다.
- 피연산자의 왼쪽에 위치하면 전위형( prefix ), 피연산자의 오른쪽에 위치하면 후위형( postfix )라고 한다.
- 전위형과 후위형 모두 피연산자의 값을 1 증가 또는 감소시키지만 증감 연산자가 수식이나 메서드 호출에 포함된 경우 전위형 일 때와 후위형 일 때의 결과가 다르다.
* 메서드 : 이름 뒤에 소괄호
* 전위형은 증가나 감소 후 대입을 하고 후위형은 대입 후 증가나 감소를 한다.
6. 산술 연산자
- 산술 연산자에는 +, -, *, / 와 나머지 연산자 %가 있다.
+ 덧셈 - 뺄셈 * 곱셈 / 나눗셈 % 나머지
7. 관계(비교) 연산자
- 관계(비교) 연산자는 두 피연산자를 비교하는 데 사용되는 연산자이다.
- 주로 조건문과 반복문의 조건식에 사용되며, 연산 결과는 오직 true or false이다.
- 관계(비교) 연산자 역시 이항 연산자이므로 비교하는 피연산자의 타입이 서로 다를 경우 자료형의 범위가 큰 쪽으로 자동형 변환되어 피연산자의 타입을 일치시킨 후에 비교한다.
- 대소비교 연산자 >, <, >=, <=
비교연산자 연산 결과 > 좌변 값이 크면 true, 아니면 false < 좌변 값이 작으면 true, 아니면 false >= 좌변 값이 크거나 같으면 true, 아니면 false <= 좌변 값이 작거나 같으면 true, 아니면 false - 등가 비교 연산자 ==,!=
- 두 피연산자의 값이 같은지 또는 다른지를 비교하는 연산자이다.
- 기본형은 물론 참조형에도 사용할 수 있다.
- 기본형의 경우 변수에 저장되어 있는 값이 같은지를 알 수 있고, 참조형의 경우 객체의 주소 값을 저장하기 때문에 두 개의 피연산자가 같은 객체를 가리키고 있는지를 확인할 수 있다.
비교 연산자 연산 결과 == 두 값이 같으면 true, 아니면 false != 두 값이 다르면 true, 아니면 false
- 대소비교 연산자 >, <, >=, <=
8. 논리 연산자
- 논리 연산자는 둘 이상의 조건을 '그리고( AND ) 또는 ( OR )'으로 연결하여 하나의 식으로 표현할 수 있게 해 준다.
- 논리 연산자 &&, ||, !
|| ( OR 결합 ) 피연산자 중 어느 한쪽만 true이면 true && ( AND 결합 ) 피연산자 모두 true여야 true ! ( NOT ) true -> false, false -> true x y x || y x && y true true true true true false true false false true true false false false false false x !x true false false true - 비트연산자 &, |, ^, <<, >>
1byte = 8bit
0 0 0 0 0 0 0 0 2의 7 2의 6 2의 5 2의 4 2의 3 2의 2 2의 1 2의 0 128 64 32 16 8 4 2 1 - 비트연산자는 어떤 변수의 값을 0과 1의 조합, 즉 비트로 변환한 뒤에 비트단위로 연산을 수행한다.
- 주요 비트 연산으로는 AND, OR, NOT, SHIFT 연산이 있다.
- 종류
& a & b a와 b를 AND 처리( 둘 다 1 이어야 1 ) | a | b a와 b를 OR 처리( 둘 중 하나만 1 이면 1 ) ^ a ^ b a와 b를 XOR 처리( 두 비트가 달라야지 1 ) << a << 2 a를 비트로 변환하여 왼쪽으로 2비트 이동 >> a >> 2 a를 비트로 변환하여 오른쪽으로 2비트 이동
- 논리 연산자 &&, ||, !
9. 그 외의 연산자
- 조건연산자( 삼항연산자 ) ? :
- 조건연산자( 삼항연산자 )는 조건식, 식1, 식2 모두 세 개의 피연산자를 필요로 하는 삼항연산자이며, 삼항연산자는 조건연산자 하나 뿐이다.
조건식 ? 식1 : 식2
==> 조건식이 true라면 식1, 조건식이 false라면 식2
- 대입연산자
- 대입연산자는 변수와 같은 저장공간에 값 또는 수식의 연산결과를 저장하는데 사용한다.
- 대입연산자의 왼쪽 피연산자 lvalue( left value )라고 하고 오른쪽 피연산자를 rvalue( right value )라고 한다.
- 대입연산자의 rvalue는 변수뿐만 아니라 식이나 상수 모두 가능한 반면, lvalue는 반드시 변수처럼 변경할 수 있는 것이어야 한다.
- 복합대입연산자
+= 더한 값을 저장 -= 뺀 값을 저장 *= 곱한 값을 저장 /= 나눈 값을 저장 %= 나눈 나머지를 저장
- 조건연산자( 삼항연산자 )는 조건식, 식1, 식2 모두 세 개의 피연산자를 필요로 하는 삼항연산자이며, 삼항연산자는 조건연산자 하나 뿐이다.
반응형
'웹개발 > JAVA' 카테고리의 다른 글
[JAVA] 배열( array ) (0) | 2022.01.14 |
---|---|
[JAVA] 제어문( 조건문, 반복문 ) (0) | 2022.01.12 |
[JAVA] 입력메서드( Scanner ), 출력메서드( Print ) (0) | 2022.01.07 |
[JAVA] 변수 및 형변환( casting ) (1) | 2022.01.06 |
[JAVA] 자바 프로그램 개발 및 순서 (0) | 2022.01.06 |