CH 3-1 연산자와 피연산자
x + 3
연산자 :"+"
피연산자 x, 3
CH3-2 연산자의 종류
| 종류 | 연산자 | 설명 |
| 산술 연산자 | + , -, *, /, % , << , >> | 사칙연산과 나머지 연산(%) |
| 비교 연산자 | > , < , >= , <= , == ,!= | 크고 작음과 같고 다름을 비교 |
| 논리 연산자 | &&, || , ! , & , | , ^ , ~ | '그리고(AND)와 '또는(OR)'으로 조건을 연결 |
| 대입 연산자 | = | 우변의 값을 좌변에 저장 |
| 기타 | (type) ? : instanceof | 형변환 연산자, 삼항 연산자, instanceof 연산자 (추후 공부) |
CH3-3 연산자의 우선순위
일반적으로 우리가 수학에서 배웠듯 곱셈과 나눗셈은 덧셈과 뺄셈보다 우선순위가 높다는 점. 동일하다.
*대입 연산자는 연산자 중에서 제일 우선순위가 낮다.
* 대입 연산자와 단항 연산자를 제외한 모든 연산의 진행방향은 왼쪽에서 오른쪽이다.
CH3-4 연산자의 결합 규칙
(1) 연산자의 결합규칙이 왼쪽에서 오른쪽인 경우
3+4-5 의 순서는 → 방향으로 결합한다.
(2)연산자의 결합규칙이 오른쪽에서 왼쪽인 경우
X=Y=3 의 순서는 ←방향으로 결합한다.
CH3-5 증감연산자 ++과 -- (단항연산자)
| 타입 | 설명 | 사용예시 |
| 전위형 | 값이 참조되기 '전' 에 증가시킨다. | J=++I; |
| 후위형 | 값이 참조된 '후'에 증가시킨다. | J=I++; |
하나의 문장으로 쓰인 경우에는 전위형과 후위형의 차이가 없다.
CH3-7 형변환 연산자
형변환이란, 변수 또는 상수의 타입을 다른 타입으로 변환하는 것
(타입) 피연산자
예시
| 변환 | 수식 | 결과 |
| INT -> CHAR | (char)65 | 'A'(유니코드 기반) |
| CHAR-> INT | (int)'A' | 65 |
| FLOAT-> INT | (int)1.6f | 1 |
| INT-> FLOAT | (float)10 | 10.0f |
CH3-8 자동 형변환
기존의 값을 최대한 보존할 수 있는 타입으로 자동 형변환된다.
CH3-9 사칙 연산자
(같은 타입끼리만 연산이 가능한 것이 기본이다. 범위가 넓은 타입의 연산이 있으면 넓은 범위로 일치시키고 연산한다.)
* 10(int)/ 4(int) -> 2 (int) // 소수점 이하는 버려진다.
* 10(int)/ 4.0(float) -> 10.0f(float)/4.0(float) -> 2.5f (float) int 타입보다 범위가 넓은 float타입으로 일치시킨 후에 연산.
CH3-10 산술 변환
(1) 두 피연산자의 타입을 같게 일치시킨다. (보다 큰 타입으로 일치)
long + int -> long + long -> long
float + int -> float +float -> float
double + float -> double +double -> double
(2) 피연산자의 타입이 int보다 작은 타입이면 int로 변환된다.
byte + short -> int +int -> int
char + short -> int +int -> int
CH3-11 Math.rount()로 반올림하기
이 메서드는 소수점 첫째 자리에서 반올림한 결과를 정수로 반환한다.
long result = Math.round(4.52) ; // result에 5가 저장된다.
CH3-12 나머지 연산자 %
CH 3-13 비교 연산자
대소비교 연산자 < > / <= >=
| 비교연산자 | 연산결과 |
| > | 좌변 값이 크면, true 아니면 false |
| < | 좌변값이 작으면, true 아니면 flase |
| >= | 좌변 값이 크거나 같으면, true 아니면 false |
| <= | 좌변 값이 작거나 같으면, true 아니면 false |
등가 비교 연산자 == !=
| 비교연산자 | 연산결과 |
| == | 두 값이 같으면, true 아니면 false |
| != | 두 값이 다르면, true 아니면 false |
CH 3-14 문자열의 비교
두 문자열을 비교할 떄는, 비교 연산자 "==" 대신 equals()라는 메서드를 사용해야 한다.
String str = new String("abc");
// equals()는 두 문자열의 내용이 같으면 true, 다르면 false를 결과로 반환
boolean result = str.equals("abc"); // 내용이 같으므로 result에 true가 저장됨.
'=='로 비교하면, false를 결과로 얻는다. 내용은 같지만 서로 다른 객체라서 그렇다.
CH 3-15 논리 연산자 && II
|| (or결합) 피 연산자 중 어느 한 쪽이 true이면 true를 결과로 얻는다.
&&(AND 결합) 피연산자 양쪽 모두 true이어야 true를 결과로 얻는다.
| X | Y | X||Y | X&&Y |
| true | true | true | true |
| true | false | true | false |
| false | true | true | false |
| false | false | false | false |
CH 3-16 논리 부정 연산자!
| X | !X |
| true | false |
| false | true |
CH 3-17 조건 연산자 (삼항 연산자)
조건식 ? 식1:식2
조건식이 '참'일 경우 식 1 조건식이 '거짓'일 경우 식2
CH3-18 대입 연산자
대입 연산자는 변수와 같은 저장공간에 값 또는 수식의 연산결과를 저장하는데 사용된다.
X(저장공간 (배열, 변수) =3(value)
CH 3-19 복합 대입 연산자
| op= | = |
| i +=3; | i= i+3; |
| i -=3; | i= i-3; |
| i *=3; | i=i*3 |
| i /=3; | i=i/3; |
| i%=3; | i=i%3; |
| i<<=3; | i=i<<3; |
| i>>=3; | i=i>>3; |
| i &=3; | i=i&3; |
| i ^=3; | i=i^3; |
| i |=3; | i=i|3; |
| i *=10+j; | i=i *(10+j); |
'자바를 잡아라' 카테고리의 다른 글
| [JAVA] chapter2 변수 (0) | 2023.08.07 |
|---|---|
| [JAVA][객체2] 상속/포함관계 (0) | 2023.07.05 |
| [JAVA] 변수의 초기화 (0) | 2023.07.05 |
| [JAVA] 생성자/ This (0) | 2023.07.04 |
| [JAVA] 메서드 오버로딩(overloading) (0) | 2023.07.04 |