본문 바로가기

Java/자바 기초

3. 연산자

연산자의 종류

연산자의 우선순위

- 단항 연산자 > 이항 연산자

  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