Java - Operator

lacblueeun·2020년 12월 28일
0

Java

목록 보기
3/5
post-thumbnail
post-custom-banner

1. 산술 연산자

산술 연산자는 덧셈, 뺄셈 등등 산술 연산을 수행하는 연산자이다.

+ : 왼쪽의 피연산자에 오른쪽의 피연산자를 더한다.
- : 왼쪽의 피연산자에서 오른쪽의 피연산자를 뺀다.
* : 왼쪽의 피연산자에 오른쪽의 피연산자를 곱한다.
/ : 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈다.
% : 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 반환한다.

2. 비트 연산자

비트 연산자는 논리 연산자와 비슷하지만, 비트(bit) 단위로 논리 연산을 할 때 사용한다.

& : 대응되는 비트가 모두 1이면 1을 반환한다. (AND 연산)
| : 대응되는 비트 중에서 하나라도 1이면 1을 반환한다. (OR 연산)
^ : 대응되는 비트가 서로 다르면 1을 반환한다. (XOR)
~ : 비트를 1이면 0으로, 0이면 1로 반전시킨다. (NOT 연산)
<< : 명시된 수만큼 비트들을 전부 왼쪽으로 이동
>> : 부호를 유지하면서 지정된 수만큼 오른쪽으로 이동
>>>> : 지정한 수만큼 비트를 전부 오른쪽으로 이동, 새로운 비트는 전부 0이된다.

true | false = true
true & false = false
true ^ false = true

3. 관계 연산자

관계(비교)연산자는 두 개의 변수 또는 리터럴을 비교하는 데 사용되는 연산자로, 주로 조건문과 반복문의 조건식에 사용된다. 연산결과는 true 또는 false이다.
비교하는 피연산자의 자료형이 서로 다를 경우에는 자료형의 범위가 큰쪽으로 형변환하여 피연산자 타입을 일치시킨 후에 비교한다.

x > y : x가 y보다 클 때 true, 그 외에는 false
x < y : x가 y보다 작을 때 true, 그 외에는 false
x >= y : x가 y보다 크거나 같을 때 true, 그 외에는 fasle
x <= y : x가 y보다 작거나 같을 때 true, 그 외에는 false
x == y : x와 y가 같을 때 true, 그 외에는 false
x != y : x와 y가 다를 때 true, 그 외에는 false

int a = 10
float b = 10.0f

if(a == b) // true 

- 실수형은 비교연산 과정에서 자동형변환이 일어나지 않게 하거나, 
소수점 자리까지 동일하게 잘라서 비교해야한다.

float f = 0.1f;
double d = 0.1;
double d2 = (double) f;

if(f == d) // false
if(d == d2) // false
if(d2 == f) // true

4. 논리 연산자

논리연산자는 변수나 값 사이의 과정을 이치에 맞게 결정하기 위해 사용하는 연산자입니다.
&& : 모든 값들이 true일 때 실행, 아니면 false
|| : 값들 중 하나의 값이라도 true이면 true, 모두가 false 이면 false
! : true는 false로 false는 true로 나타낸다.

int a, b, c = 3, 4, 5;

if (b > 3 && c > b) // true
if (a > b && c > b) // false
if (a > 2 || b > 6) // true
if (! b > a) // false (원래는 true인데 반대 결과)

5. 대입 연산자 (assignment operator)

대입 연산자는 변수에 값을 할당하기 위해 사용한다.
왼쪽에는 피연산자로 변수이고 오른쪽은 값을 피연산자로 한다.
오른쪽의 피연산자는 왼쪽의 변수와 데이터 타입이 일치해야 한다. 아니면 컴파일러 오류가 발생한다.

= : 왼쪽의 피연산자에 오른쪽의 값을 대입하는 것이다.
+= : 왼쪽의 현재 값에 오른쪽 값을 더해서 대입하는 것이다.
-= : 왼쪽의 현재 값에서 오른쪽 값을 빼서 대입하는 것이다.
*= : 왼쪽의 현재 값에서 오른쪽 값을 곱해서 대입하는 것이다.
/= : 왼쪽의 현재 값에서 오른쪽 값을 나눠서 대입하는 것이다.
%= : 왼쪽의 현재 값에서 오른쪽 값을 나눈 나머지를 대입하는 것이다.

int num1 = 10
int num2 = 5

num1 += num2
num1 = num1 + num2 // 15

num1 -= num2
num1 = num1 - num2 // 5

num1 *= num2
num1 = num1 * num2 // 50

num1 /= num2
num1 = num1 / num2 // 2

num1 %= num2
num1 = num1 % num2 // 0

6. instanceof

instanceof 는 참조변수가 참조하고 있는 인스턴스의 실제 타입을 알아보기 위해 사용한다.
왼쪽에는 참조변수를 오른쪽에는 타입(클래스명)이 피연산자로 온다. 연산의 결과로 boolean값인, true, false 중의 하나를 반환합니다.

class Parent {}
class Child extends Parent {}

if (Child instanceof Child) // true
if (Child instanceof Parent) // true
if (Parent instanceof Child) // false
if (Child instanceof Object) // true

7. 연산자 우선 순위

연산자의 우선순위는 수식 내에 여러 연산자가 함께 등장할 때, 어느 연산자가 먼저 처리될 것인가를 정하는 것이다.

8. 화살표(->) 연산자

람다 표현식(lambda expression)이란 간단히 말해 메소드를 하나의 식으로 표현한 것이다. 이러한 람다 표현식은 메소드의 매개변수로 전달될 수도 있으며, 메소드의 결괏값으로 반환될 수도 있다.
따라서 람다 표현을 사용하면, 기존의 불필요한 코드를 줄이고 코드의 가독성을 높여줍니다.
Java SE8 부터는 이러한 (매개변수목록) -> {함수몸체} 표현식을 사용하여 자바에서도 함수형 프로그래밍을 할 수 있게 되었습니다.

(int x, int y) -> x < y ? x : y;

new Thread(()-> {
	System.out.println("Hello World!");
}).start();

9. 3항 연산자

(조건식) ? 식1 : 식2 : 조건식이 true이면 식1 false이면 식2을 수행한다. 코드가 간견해지는 것은 맞지만 실행속도가 빨라지는 것은 아니다.

int num1 = 2;
int num2 = 3;

int a = (num1 > num2) ? num1 : num2 // a = 3

10. (optional) Java 13. switch 연산자

Java 13에서 switch 문이 추가 되었다. 그리고 switch 문 안에서 yield 키워드로 값을 반환할 수 있다.

int grade = 80;
String result = switch(grade) {
    case 100 :
    	yield "A+ 입니다.";
    case 90 :
    	yield "A 입니다.";
    case 80 :
    	yield "B+ 입니다.";     
}
	System.out.println(result); // "B+ 입니다." 반환

참고

https://programmer-seva.tistory.com/9
https://www.geeksforgeeks.org/java-assignment-operator-with-examples/
https://www.geeksforgeeks.org/java-instanceof-and-its-applications/
http://www.tcpschool.com/java/java_lambda_concept

profile
Go for Frontend Developer 🧪
post-custom-banner

0개의 댓글