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 |