자바를 잡아라

[JAVA] chapter 3 연산자

presnt__lee 2023. 8. 8. 22:21
반응형

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