본문 바로가기
👨‍💻 프로그래밍/Java, Kotlin, Spring

자바 6 - 자바 연산자(Operator)

by 개발자 진개미 2021. 4. 12.
반응형

프로그램은 기본적으로 연산(더하기, 뺴기, 나누기, 곱하기 등)을 수행할 수 있다. 

1. 연산자가 뭘까?

2. 연산자의 종류

3. 산술 연산자, 다른 데이터 타입끼리의 연산

4. 대입 연산자

5. 관계(비교) 연산자

6. 논리 연산자

 


1. 연산자가 뭘까?

연산자는 값을 받아서 특정한 규칙에 따라 결과를 내 주는 것을 말한다. 말이 어려울 수 있지만, 쉽게 말해 더하기 또한 연산자이다. 더하기는 두 숫자를 받아서, 더한 뒤(규칙), 결과를 내준다. 연산자는 더하기처럼 숫자(int, double 등)을 받아서 똑같이 숫자를 돌려 줄 수도 있고, 두 숫자가 같은지 비교해주는 비교 연산자는 숫자를 받아서 같은지 아닌지(boolean)을 돌려 주기도 한다.

 

더하기를 연산자의 관점에서 바라본 그림


2. 연산자의 종류

연산자에는 여러가지 종류가 있다. 우선, 연산자가 받는 값이 1개면 단항 연산자이고, 2개면 이항 연산자라고 부른다. 더하기 같은 경우는 이항 연산자이고, 숫자를 받아서 그 숫자를 1만큼 증가시켜 주는 연산자(++)는 단항 연산자이다.

 

또 연산자는 역할에 따라 구분할 수도 있다. 우리가 흔히 초등학교에서 배우는 덧셈, 뺄셈 등의 계산을 해 주는 연산자를 산술 연산자라 부르고, 두 수가 같은지, 다른지, 한 수가 더 큰지, 작은지 등의 두 수의 관계를 비교해 주는 연산자를 관계 연산자라고 한다. 대입 연산자는 변수에 값을 대입해 주는 연산자인데, 그냥 대입할 수도 있고, 대입하기 전에 산술 연산자와 조합을 해서 대입 할 수도 있다. (아래 참고) 논리 연산자는 논리적인 연산을 해 주는 연산자이다. 예를들어, 자판기에서 콜라를 꺼낼때는 자판기 버튼을 누르고, 돈도 넣어야 콜라가 나온다. 여기서, 그리고, 또는 등의 역할을 해 주는게 바로 논리 연산자이다.

 

요약하자면,

1. 받는 값에 따른 구분

단항 연산자 - 1개의 값을 받음

이항 연산자 - 2개의 값을 받음

 

2. 역할에 따른 구분

산술 연산자 - 덧셈, 뺄셈 등의 산수를 해 주는 연산자

관계 연산자 - 큰지, 작은지, 같은지, 다른지 등의 관계를 알려주는 연산자

대입 연산자 - 변수에 값을 대입해 주는 연산자

논리 연산자 - 논리의 연산을 해 주는 연산자


3. 산술 연산자

산술 연산자는 우리가 흔히 초등학교에서 배우는 기본적인 산수를 수행해 주는 연산자이다. 다음의 코드를 보자.

int a = 15;
int b = 4;
int c;

c = a + b;	// 19
c = a - b;	// 11
c = a * b;	// 60
c = a / b;	// 3
c = a % b;	// 3

여기서 더하기, 빼기, 곱하기는 우리가 흔히 생각하는 산수와 똑같다. 하지만 나누기와, 처음 보는 분도 있으실 %는 다뤄 볼 만 하다.

 

먼저, 나누기(/)는 나머지가 없다. 나누기는 단순히 몇 번 나눠지는지를 계산해 주는 연산자이다. 그렇다면 나머지는 어떻게 구할까? 바로 모듈이라고 불리는 의문의 연산자이다. (%) 즉, 프로그래밍에서는 나누기에서 몫과 나머지를 분리했다고 생각하면 된다.

 

우리가 더 주목해야 할 것은, 다른 타입끼리의 연산은 어떻게 하면 될까이다. 산술 연산자는 입력과 결과의 데이터 타입이 반드시 같아야 한다.

 

또한, 더하기 혹은 뺴기 두개를 나란히 놓은 증감 연산자도 있다.

int a = 5;

a++; // a는 6이 됐다.
a-- // a는 5가 됐다.

a = a + 1; //a++와 동일한 표현이다.

4. 대입 연산자

대입 연산자는 변수에 값을 넣어주는 연산자이다. 우리가 여태까지 썼던 = 는, 같다가 아니라, 대입하다이다. 같다는 곧 알아 볼 == 가 된다. 대입 연산자는 값을 그대로 대입하기도 하고, 대입하기 전에 간단한 산술 연산자를 적용해서 바로 대입하기도 한다.

int a = 10; //a에 10을 대입했다.

a += 5; //원래 있는 a의 값에 5를 더한 값을 대입했다. 15
a -= 5; //원래 있는 a의 값에 5를 빼서 값을 대입했다. 10
a *= 5; //원래 있는 a의 값에 5를 곱해서 값을 대입했다. 50
a /= 5; //원래 있는 a의 값에 5를 나눠서 값을 대입했다. 10
a %= 5; //원래 있는 a의 값에 5를 묘듈한 값을 대입했다. 0

대입 연산자는 범위가 더 큰 데이터 타입의 대입은 가능하지만, 더 작은 데이터 타입으로의 대입은 불가능하다. 데이터 타입의 범위는 다음과 같다. byte < short < int < long < float < double

int x = 5;
long y = x; // 가능

double a = 6.5;
long b = a; // 불가능

5. 관계 연산자

관계 연산자는 수간의 특정 관계가 있는지 없는지를 결과로 내는 연산자이다. 같다(==)를 예로 들면,

int a = 10;
int b = 10;

a == b // 결과: true

int c = 15;
int d = 20;

c == d // 결과: false

관계 연산자는 그 결과로 boolean 타입을 배출한다.

 

그 외에도 여러가지 관계 연산자가 있다.

int a = 10;
int b = 15;

a != b	// 결과: true
a < b	// 결과: true
a > b	// 결과: false
a <= b	// 결과: true
a >= b	// 결과: false

!=는 두 수가 같지 않으면 true가 결과로 나오고, 같으면 false가 나오는 연산자이다.

<, > 는 크거나 작은지를 비교를 하는 연산자이고, <=, >= 는 크거나 같은지, 작거나 같은지를 비교한다.


6. 논리 연산자

논리 연산자는 두 표현간의 논리적인 관계를 연산해 주는 연산자이다. 앞에서 예를 든 자판기를 또 가져오면, 자판기는 버튼이 눌린 것과 돈을 넣은 것 모두 참이여야 참이다. 이렇게 둘 다 참이여야만 참인 경우를 &&를 써서 나타낸다. 둘 중 하나라도 참인 경우는 ||를 써서 나타내고, 참과 거짓이 반대인 경우는 ~를 써서 나타낸다.

true && true	//true
true && false	// false
true || false	// true
~true		// false

 

더 자세한 내용을 알고 싶다면 여기 참고.


반응형