[기초] 시리즈는 본강의를 수강후 정리한 글들 입니다.
연산자의 이해
- 연산자 : 피연산자를 대상으로 특정 기능을 수행하고 결과를 반환하는 특수한 기호
- 연산자의 구분
- 피연산자의 수에 따라 단항, 이항, 삼항으로 구분
- 기능의 종류에 따라 산술, 관계, 비트, 논리, 대입, 기타 연산자로 구분
대입연산자
- 대입 연산자는 이항 연산자로 = 기호를 기준으로 오른쪽 값을 왼쪽 기억 공간 (변수)에 저장하는 기능
- ex) L value (변수) = R value (변수 or 상수)
- 👉R value의 값을 변수에 할당하는 기능
- 또다른 규칙 !
- 👉이항 연산자의 주요 규칙 : 연산자를 기준으로 피연산자의 타입이 동일해야 한다!
- 👉대입 연산자 또한 타입이 같아야 한다.
- ex) Long la = 10;
- => 대입 연산자의 경우 R value의 기준으로 L value가 바뀜!! (중요)
- 그러나 Long = 8byte , int = 4 byte 이므로 Long이 int로 변환되면 값의 손실이 일어남...
- 그러므로 int n = la; 일때는 에러가 일어남.
- la = la + 20;
- => la (Long 타입 ) + 20 (int 타입)의 경우 두 타입이 같아야하는데
- 용량이 작은게 큰걸로 바뀜 즉, Long = 8byte , int = 4 byte 이므로 20 (int) -> 20 (Long) 으로 변환되어
- 최종적으로 Long 타입이 반환 됨
- 대입 연산자는 산술 연산자와 함께 복합 연산자 형태로 사용 가능
산술연산자, 관계연산자
- 관계연산자는 결과를 반환하는 것이기때문에 boolean 타입을 반환함.
증감 연산자
- 변수에 저장된 값을 증가 ++ 시키거나 또는 감소 -- 시키는 단항 연산자
- 연산자를 정의하는 위치에 따라 연산이 수행되는 시점이 다르게 적용
논리 연산자
- 논리 연산을 수행하는 연산자로 이항연산자인 AND (논리곱, &&), OR (논리합, ||) 연산자와 단항연산자인 NOT(논리부정,!)연산자가 있음.
- 피연산자와 연산의 결과 모두 boolean 형
- 우선 순위는 NOT > ANd > OR
비트연산자 (Shift)
- 정수형 피연산자에 대해 비트를 왼쪽, 혹은 오른쪽으로 이동시키는 연산자
삼항 연산자
- 피연산자를 3개 갖는 연산자
- 조건의 참, 거짓 여부의 따라 서로 다은 수식을 실행
- ex) 조건? 수식1 : 수식 2
int x,y,z;
x = 10; y = 20;
z = ( x > y ? x : y ); // z =20
z = ( y > x ? x : y ); // z = 10
연산자 우선순위
- 하나의 실행문에 다수의 연산자가 함께 사용될 경우 어떤 연산을 먼저 수행할지를 결정하는 것
- 모든 연산자의 우선순위를 고려하여 사용하기 보다는 소괄호 () 연산자를 이용해 우선순위를 명확히 하기!
형변환 연산자 (casting)
- Java에서의 형 변환은 두가지가 있음
- Primitive 타입의 형변환
- 객체 간의 형변환(상속)
- <Primitive type의 형변환의 규칙>
- 작은 데이터타입이 큰 타입으로 변환된다! (사진 참고)
- 그러나! Long vs float 의 경우 float = 4 byte 이므로 Long으로 변환될 것 같지만 반대로
Long 타입이 float 타입으로 변환되어 float 타입이 반환 된다 - => float 타입이 표현할 수 있는 수의 범위가 Long 타입이 표현할 수 있는 수의 범위보다 훨씬 넓기 때문
- 그러나! Long vs float 의 경우 float = 4 byte 이므로 Long으로 변환될 것 같지만 반대로
- 작은 데이터타입이 큰 타입으로 변환된다! (사진 참고)
- 암묵적 형변환 (Implict Conversion)
- Java는 데이터가 손실되지 않거나, 손실이 제한적인 범위 내에서 암묵적을 형을 변환함.
- 자료형이 다른 변수에 값을 할당하는 경우 (float f = 10;)
- 자료형이 다른 값을 연산하는 경우 (double d = 10.0 + 20;)
- 명시적 형변환 (Explict Conversion)
- 명시적으로 형 변환하는 것 = 캐스팅 casting
- 자동 형 변환 규칙에 위배되는 상황임에도 강제로 형 변환 할 경우 데이터 손실의 위험이 있음.
int i1 = 20.5; //Error
int i2 = (int) 20.5; //20
2022.08.06 - [JAVA] - [JAVA] 연산자 / 연산자 우선순위
2022.08.06 - [JAVA] - [JAVA] 삼항연산자
'☕JAVA > 🐣 강의 [JAVA]' 카테고리의 다른 글
[JAVA][기초] 생성자 Constructor (0) | 2022.10.05 |
---|---|
[JAVA][기초] 메소드 Method , 오버로딩 Overloading (0) | 2022.10.04 |
[JAVA][기초] 클래스의 이해3 - 필드의 정의 (2) Data Type 의 이해 (0) | 2022.09.30 |
[JAVA][기초] 클래스의 이해2 - 필드의 정의 (1) 변수 Variable (0) | 2022.09.29 |
[JAVA][기초] 클래스의 이해 1 (0) | 2022.09.29 |