안녕하세요. 그린주입니다 ๑'ٮ'๑
목표
자바가 제공하는 다양한 연산자를 학습하세요.
학습할 것
산술 연산자
비트 연산자
관계 연산자
논리 연산자
instanceof
assignment(=) operator
화살표(->) 연산자
3항 연산자
연산자 우선 순위
산술 연산자
산술 연산자는 피연산자(기본 데이터)에 대해 간단한 산술 연상을 수행하는 데 사용할 수 있는 연산자입니다.
이 연산자는 하나 또는 두 개의 피연산자에 적용할 수 있는 연산자입니다.
int형 타입보다 범위가 작은 데이터 연산 시 int형으로 변환 후 연산을 합니다.
int형 타입보다 큰 범위의 데이터가 있다면 연산 결과는 int형 보다 큰 타입이 반환됩니다.
1. 더하기( + ) Addition
' + ' 연산자는 두 수를 더해줍니다.
'+' 연산에서만 String 타입이 있으면 이 두가지 타입을 붙여줍니다.
int+int
String + int
String + (int+int)
String + String
2. 빼기( - ) Subtraction
' - ' 연산자는 두 수를 빼줍니다.
int - int
int - (-int)
3. 곱하기( * ) Multiplication
' * ' 연산자는 두 수를 곱해줍니다.
int * int
3. 나누기( / ) Division
' / '연산자는 두 수를 나눠줍니다.
연산자들이 전부 정수라면 int를 반환하게 되고, 밑에 부동소수점은 전부 잃게 됩니다. 만약 하나라도 소수점이 있다면 double로 반환하게 된다.
주의 ' / '연산에서 만약 0을 나누려 한다면 ArithmeticExceprion이 발생하게 된다. 자바 docs링크를 걸었는데, 원인은 간단하다 그냥 처리할 수 없는 산술 연산이 나오면 런타임 오류를 발생시킨다. 위에 말한건 정수/0 이었을 때인데, 차라리 저렇게 정수/연산할때 에러가 떠주면 차라리 고맙다. 하지만 '실수/0'이면 골치 아프다. 왜냐면 실수에 0을 나누면 Infinity라는 String타입 문자열이 출력이 된다. 이러면 연산이 엄청나게 Chaining 걸렸을때 나중에 어디서 문제가 발생하는지 디버깅 하기도 귀찮아진다.
그래서 만약에 문제가 생길거같은 지점은 알아서 예외처리를 해서 Infinity값이 들어갔을 때 개발자가 알수 있도록 해주는게 좋다.
int / intdouble / int
4. 나머지 연산 ( % ) Modulo
두 수를 나눈 나머지
++ 1씩 더합니다.
-- 1씩 뺍니다.
비트 연산자
비트 연산자는 데이터를 비트 단위로 연산하기 때문에 0과 1로 표현이 가능한 정수 타입만 비트 연산이 가능합니다.
비트 연산자는 기능에 따라 비트 이동 연산자, 비트 논리 연산자로 구분합니다.
1. 비트 이동 연산자
x << y : 정수 x의 각 비트를 y만큼 왼쪽으로 이동시킵니다.
x >> y : 정수 x의 각 비트를 y만큼 오른쪽으로 이동시킵니다.
x >>> y : 정수 x의 각 비트를 y만큼 오른쪽으로 이동시킵니다. 단, >>와 차이점은 왼쪽 최상위 부호 비트가 아닌 0으로만 채웁니다.
2. 비트 논리 연산자
1) &(AND) : 두 비트 모두 1일 경우에만 연산 결과가 1
2) |(OR) : 두 비트 중 하나만 1일 경우에만 연산 결과가 1
3) ^(XOR) : 두 비트 중 하나는 1이고 다른 하나가 0일 경우에만 연산 결과가 1
4) 비트 보수 연산자 ( ~ ) Bitwise complement
단일 ~ 연산자는 우리가 보수를 알기 위해서 연산으로 알고 있거나, NOT으로 알려져 있습니다. ~ 단일 연산자는 기본적으로 수의 반대로 잡아줍니다.
관계 연산자
좌항과 우항을 비교하여 boolean값 즉, true/false를 반환하는 연산자를 관계연산자 또는 비교연산자라고 합니다.
> : 좌항이 우항보다 크면 true, 아이면 false
< : 우항이 좌항보다 크면 true, 아니면 false
>= : 좌항이 우항보다 크거나 같으면 true, 아니면 false
<= : 우항이 좌항보다 크거나 같으면 true, 아니면 false
== : 좌항과 우항의 값이 같으면 true, 아이면 false
논리 연산자
&& : 두항이 모두 참일 경우에만 참을 반환
|| : 두항 중 하나만 참이더라도 참을 반환
! : 단항 연산자로 참을 거짓으로 거짓을 참으로 바꿈
instanceof
이 연산자는 형 변환이 가능한지 여부를 확인할 때 사용합니다. 주로 부모 타입인지 자식타입인지 확안할 때 사용됩니다.[객체] instanceof [부모(클래스)]
assignment(=) operator
할당 연산자로 불리며 산술 연산자, 비트 연산자등에서 사용됩니다.
화살표(->) 연산자
화살표 연산자는 익명 메소드의 매개변수와 리턴변수를 통해 만들어 진다. 더 정확히 말하자면 익명 메소드가 아니라 람다를 통해 만들어진다.
3항 연산자
(조건식)? true : false
이렇게 작성된다. 이 연산자의 가장 큰 특징은 조건식에 의해 동작한다.
위 식을 풀어서 해석하면 조건식이 맞으면 true에 있는 값이 리턴되고, 틀리면 false에 있는 값이 리턴되는 방식이다.
연산자 우선순위
지금까지 배운 8가지 연산자 우선순위
마무리
긴 글 봐주셔서 감사합니다!
오늘도 행복한 하루 보내세요 ✿'◡'✿
참고
자바의 구동 원리와 JVM(Java Virtual Machine)
[JAVA] JVM이란? 개념 및 구조 (JDK, JRE, JIT, 가비지 콜렉터...)
'🌜 Programming > JAVA' 카테고리의 다른 글
자바 데이터 타입, 변수 그리고 배열 (0) | 2022.03.15 |
---|---|
JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. (0) | 2022.02.18 |
LocalDate 이번 달 시작일(1일) 및 마지막일 구하기 ( Java ) (0) | 2021.10.27 |