일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 티스토리챌린지
- 객체지향
- 오블완
- spring security
- 오버로딩
- continue 사용법
- contiune
- 붕대 감기
- 쿠키
- hackerrank
- 캡슐화
- 자바의정석
- 리눅스
- 혼공얄코
- CPU
- 프로그래머스
- 자바의 정석
- spring security 설정
- SQL Mapper
- 붕대 감기 자바
- 중첩 break
- 프로그래머스 붕대 감기
- 멀티태스킹
- 다형성
- 입출력
- break 사용법
- 멀티프로세싱
- over()
- 오버라이딩
- java
- Today
- Total
쉽게 쉽게
연산자 본문
이 글은 '자바의 정석'의 내용을 기반으로 공부한 내용을 덧붙인 글입니다.
1. 연산자란
'연산을 수행하는 기호' (+, -, *, / 등)
2. 피연산자란
피연산자는 연산자의 작업 대상(변수, 상수, 리터럴, 상수, 수식)
리터럴이란?
리터럴은 데이터 그 자체를 뜻 한다. 변수에 넣는 변하지 않는 데이터를 의미한다.
int a = 1;
int 앞에 a는 변수이고, 여기서의 1은 리터럴이다.
즉, 1과 같이 변하지 않는 데이터(boolean, char, double, long, int, etc…)를 리터럴(literal)이라고 부른다.
★ 연산자 우선 순위
연산자 우선순위는 괄호의 우선순위가 제일 높고, 산술 > 비교 > 논리 > 대입의 순서이며, 단항 > 이항 > 삼항의 순서이다.
연산자의 연산 진행방향은 왼쪽에서 오른쪽으로 수행되며, 단항 연산자와 대입 연산자의 경우에는 오른쪽에서 왼쪽으로 수행된다.
3. 증감 연산자(+ +, - -)
(1) 증가 연산자(++) : 피연산자의 값을 1 증가시킨다
(2) 감소 연산자(--) : 피연산자의 값을 1 감소시킨다.
전위형 | j = ++i; | ++i; j = i |
값이 참조되기 전에 증가시킨다 |
후위형 | j = i++; | j = i i++; |
값이 참조된 후에 증가시킨다. |
전위형, 후위형의 예시를 하나 들어보면
int x = 10;
int y = x-- + 5 + --x;
System.out.println("x : "+ x + ", y : " + y);
//실행결과 x : 8, y : 23
① : 첫 번째 감소 연산자(decrement operator)는 피연산자의 뒤쪽에 위치하므로, 덧셈 연산이 먼저 수행된다.
② : 덧셈 연산이 수행된 후에 감소 연산이 수행된다. (x의 값 : 9)
③ : 두 번째 감소 연산자는 피연산자의 앞쪽에 위치하므로, 덧셈 연산보다 먼저 수행된다. (x의 값 : 8)
④ : 감소 연산이 수행된 후에 덧셈 연산이 수행된다.
⑤ : 마지막으로 변수 y에 결괏값의 대입 연산이 수행된다. (y의 값 : 23)
출처
http://www.tcpschool.com/java/java_operator_incAndDec
4. 산술 변환 연산자
(1) 이항 연산자는 두 피연산자의 타입이 일치해야 연산이 가능하다.
대부분의 경우, 두 피연산자의 타입 중에서 더 큰 타입으로 일치시키는데, 그 이유는 작은 타입으로 형변환하면 원래의 값이 손실될 가능성이 있기 때문이다.
산술 변환의 경우
- 두 피연산자의 타입을 같게 일치시킨다.(보다 큰 타입으로 일치)
ex) long + int -> long + long -> long - 피연산의 타입이 int보다 작은 타입이면 int로 변환된다.
ex) byte + short -> int + int -> int
5. 논리 연산자(&&, ||, !)의 효율적인 연산
(1) OR(||)연산의 경우, 두 피연산자 중 어느 한 쪽만 '참'이어도 전체 연산결과가 '참'이므로 좌측 피연산자가 '참'이면, 우측 피연산자의 값은 평가하지 않는다.
(2) AND(&&)연산의 경우도 어느 한쪽만 '거짓'이어도 전체 연산결과가 '거짓'이므로 좌측 피연산자가 '거짓'이면, 우측 피연산자는 평가하지 않는다.
즉 좌측에 효율적인 피연산자를 입력하는 것이 유리하다.
6. 삼항 연산자
조건식? 식1 : 식2 //삼항연산자
조건이 참이라면 식1의 값이, 거짓이라면 식2의 값이 나타난다.
(1) 식1과 식2의 타입이 다른 경우 산술 변환이 발생한다.
ex)
"mod < 0.5 ? 0 : 0.5" 는 연산 과정에서
"mod < 0.5 ? 0.0 : 0.5" double 타입으로 통일된다.
7. 대입 연산자(=)
(1) 대입 연산자는 연산자들 중에서 가장 낮은 우선순위를 가지고 있기 때문에 제일 나중에 수행된다.
(2) 연산 진행 방향이 오른쪽에서 왼쪽이다.
x = y = 3
연산과정
1. y=3이 먼저 수행
2. x=3이 뒤에 수행
(3) 복합 대입 연산자
대입 연산자는 다른 연산자와 결합하여 사용될 수 있다.
잘못된 내용이 있다면 지적부탁드립니다. 방문해주셔서 감사합니다. |
'개발공부 > Java' 카테고리의 다른 글
객체지향언어(캡슐화, 다형성) (0) | 2023.03.17 |
---|---|
객체지향언어(특징, 추상화, 상속) (1) | 2023.03.16 |
배열 (0) | 2023.03.14 |
변수 (0) | 2023.03.13 |
자바의 특징 (0) | 2023.03.12 |