연산자의 종류
연산자의 우선순위
- 단항 연산자 > 이항 연산자
ex) -x + 3 에서 단항 연산자인 ‘-’는 이항 연산자인 ‘+’ 보다 우선순위가 높다.
- 곱셈, 나눗셈 > 덧셈, 뺄셈
ex) x + 3 * y 에서 곱셈 연산자인 ‘*’는 덧셈 연산자인 ‘+; 보다 우선순위가 높다.
- 산술 연산자 > 비교 연산자
ex) x + 3 > y - 2 에서 비교 연산자인 ‘>’ 는 산술 연산자인 ‘+’, ‘-’ 보다 우선순위가 높다.
- 비교 연산자 > 논리 연산자
ex) x > 3 && x < 5 에서 비교 연산자인 ‘>’, ‘<’는 논리 연산자인 ‘&&’ 보다 우선순위가 높다.
- 대입연산자는 우선순위가 가장 낮습니다.
ex) result = x + y * 3에서 대입 연산자인 ‘=’는 제일 우선순위가 낮다.
증감 연산자 ++ 과 --
- 증가 연산자(++) 피연산자의 값을 1 증가시킨다.
- 감소 연산자(--) 피연산자의 값을 1 감소시킨다.
- 전위형: 값이 참조되기 전에 증가시킨다. ex) j = ++i;
int i = 5;
int j = ++i; //j에 6이 들어간다.
- 후위형: 값이 참조된 후에 증가시킨다. ex) j = i++;
int i = 5;
int j = i++; //j에 5가 들어간다.
형변환 연산자
- 형변환(casting)이란, 변수 또는 상수의 타입을 다른 타입으로 변환하는 것.
- 형변환 방법은 (타입)피연산자 이다.
- 괄호( )는 ‘캐스트 연산자’ 또는 ‘형변환 연산자’라고 한다.
- 큰 타입에서 작은 타입으로 형 변환은 값 손실이 발생할 수 있다.
- 명시적으로 형변환 해줬을 경우, 형 변환이 프로그래머의 실수가 아닌 의도적인 것으로 간주하고 컴파일러는 에러(Imcompatiable Type 에러)를 발생시키지 않는다.
- 예시
double d = 85.6;
int score = d; //Imcompatiable Type 에러가 남.
double d = 85.6;
int score = (int)d; // 명시적 형변환, Incompatiable Type 에러가 안남
//int score = (int)d; -> int score = (int)85.6 -> int score = 85
자동 형변환
- 형변환을 하는 이유는 주로 서로 다른 두 타입을 일치시키기 위해서인대, 형변환을 생략하면 컴파일러가 알아서 자동적으로 형변환을 한다.
- 기존의 값을 최대한 보존할 수 있는 타입으로 자동 형변환된다.
- 표현 범위가 좁은 타입에서 넓은 타입으로 형변환 하는 경우에는 값 손실이 없으므로, 두 타입 중에서 표현 범위가 더 넓은 쪽으로 형변환된다.
- byte < short = char < int < long < float < double
산술 변환
이상 연산자는 두 피연산자의 타입이 일치해야 연산이 가능하므로, 타입이 서로 다를 경우,연산 전에 형변환 연산자로 타입을 일치시켜야 하며, 이를 '산술 변환'이라고 한다.
산술 변환의 규칙
- 두 피연산자의 타입을 같게 일치시킵니다.
- long + int → long + long → long
- float + int → float + float → float
- double + float → double + double → double
- 피연산자의 타입이 int보다 작을 경우, int로 변환됩니다.
- byte + short → int + int → int
- char + short → int + int → int
문자열의 비교
- 두 문자열을 비교할 때는 == 가 아닌 equals()라는 메서드를 사용해야 한다.
- ==는 String 객체의 주소값을 비교하고, equals()는 문자열 내용을 비교하기 때문이다.
- 대소문자를 구별하지 않고 두 문자열을 비교할 때는 equalsIgnoreCase()를 사용해야한다.
조건 연산자
- 조건 연산자는 조건식, 식1, 식2 모두 세 개의 피연산자를 필요로 하는 삼항 연산자이다.
- 조건식 ? 식1 : 식2
- 조건식의 평가결과가 true이면 식1이, false이면 식2가 연산결과가 된다.
int x = 5;
int y = 3;
int result = (x > y) ? x : y ; // 5 > 3 이라 true이므로 result는 5이다.
'Java > 자바 기초' 카테고리의 다른 글
6. 객체지향 프로그래밍 I (0) | 2022.03.11 |
---|---|
5. 배열 (0) | 2022.03.11 |
4. 조건문과 반복문 (0) | 2022.03.11 |
2. 변수 (0) | 2022.03.11 |
1. 자바를 시작하기 전에 (0) | 2022.02.14 |