JAVA - 04. 연산자

gojaebeom·2021년 3월 30일
0

Java - 입문

목록 보기
4/16
post-thumbnail

연산자란?

어떠한 기능 또는 어떤 대상체에 계산과 같은 처리를 수행하는 문자 또는 기호를 연산자라 한다. Java에서의 연산자는 크게 단항, 이항, 삼항, 대입 연산자로 나뉘며, 이항 연산자는 산술, 비교, 논리 연산자로 나뉠 수 있다.

  • 연산자(operator) : 어떠한 기능을 수행하는 기호 (+, -, *, / 등)
  • 피연산자(operand) : 연산자의 작업 대상 (변수, 상수, 수식 등)

연산자의 종류

산술 연산자 (+, -, *, /, %)

우리가 평소에 자주 사용하는 연산이다.

//사용 예제
int a = 10, b =20;
System.out.println(a + b); //더하기
System.out.println(a - b); //빼기
System.out.println(a * b); //곱하기
System.out.println(a / b); //나누기
System.out.println(a % b); //나눈 나머지

대입 연산자(=)

  • 오른쪽에서 왼쪽으로 할당
  • 변수끼리 할당 가능
  • 변수에 값이 존재하더라도 다른 값을 할당하면 마지막 할당된 값이 할당
  • 연산자중에 우선순위가 제일 낮다
int a = 0, b = 1;
a = b; // 변수의 자료형이 같다면 할당 가능 : a 값이 1로 update
a = 20; // 당연히 자료형에 맞는 타입의 값이면 할당 가능

복합 대입 연산자(+=, -=, *=, /=, %=)

연산자와 대입 연산자를 결합한 연산 후 대입 연산

//복합 대입 연산자

// +=
a += b; // a = a+b

// -=
a -= b; // a = a-b

// *=
a *= b; // a = a*b

// /=
a /= b; // a = a/b

// %=
a %= b; // a = a%b;

// &=
a &= b; // a = a&b;

// |=
a |= b; // a = a | b;

// ^=
a ^= b; // a = a ^ b;

형변환 연산자((DataType))

자동형변환의 경우 알아서 형변환이 일어나지만, 명시적으로 형변환을 필요로 할 때 사용가능하다.

int iNum = 20;
short sNum = (short)iNum;

double dNum = 5.5;
float fNum = (float)dNum;

증감 연산자(++, - -)

  • 증가 연산자(++) : 피연산자의 값을 1 증가시킨다.
  • 감소 연산자(-­ -­) : 피연산자의 값을 1 감소시킨다.

증감연산자는 피연산자의 앞 또는 뒤에 붙일 수 있는데 그에따라 차이점을 보인다.


//전위 형 : 값이 참조되기 전에 증가시키거나 감소시킨다.
int a = 0;
System.out.println(++a); //1

//후위 형 : 값이 참조되고 난 이후 증가시키거나 감소시킨다.
int b = 0;
System.out.println(b++); //0

//이 이후에 값이 증가 된상태
System.out.println(b); //1

비교 연산자(>, >=, <, <=, ==, !=, instanceof)

비교 연산자는 제어문의 조건문이나 반복문에 자주 쓰인다.

//사용 예시
int a = 0 , b = 1;
if(a < b) // a 보다 b가 크다 : 참
if(a <= b) // a 보다 b가 크거나 같다 : 참
if(a > b) // a 가 b보다 크다 : 거짓
if(a >= b) // a 가 b보다 크거나 같다 : 거짓
if(a == b) // a 와 b가 같다 : 거짓

Person p = new Person();
System.out.println(p instanceof Person); // p가 Person의 객체인지 참, 거짓으로 구분 : 참

비트 연산자(&, |, ^, ~)

데이터를 비트단위로 연산할 수 있는 연산자로 정수형또는 논리형에만 사용할 수 있다.

System.out.println(0&1); // 비트 단위의 논리곱(AND)
System.out.println(5|1); // 비트 단위의 논리합(OR)
System.out.println(0^1); // 비트 단위의 배타적 논리합(AND)
System.out.println(~1); // 비트 단위의 보수(부정)
System.out.println(0>>2); // 0을 2 만큼 오른쪽으로 이동시킴. 이동한 만큼의 왼쪽 비트는 부호 확장이 발생
System.out.println(0>>>1); // 부호 확장이 없고 이동한 만큼의 왼쪽 비트는 항상 0 으로 채운다

System.out.println(true&true);
System.out.println(true^false);

논리 연산자(&&, ||, !)

비트 논리 연산자의 경우 연산 대상이 정수형과 논리형에 모두 가능하지만, 논리 연산자의 경우 논리형에만 적용할 수 있다.

System.out.println(true && true);  //true
System.out.println(true && false); //false
System.out.println(true || true);  //true
System.out.println(true || false); //true
System.out.println(false || false);//false
System.out.println(!true);//false
System.out.println(!false;//true

삼항 연산자( ? : )

조건을 평가해서 소괄호 값이 참, 거짓이냐에 따라 수식1, 수식2 값을 대입한다.

//조건 연산자 예제
int num1 = 10;
int num2 = 20;
int result = (false) ? num1 : num2;
System.out.println("결과 : "+ result);

연산자 우선순위

우선순위연산자
1() [] .
2++ , - - , ~ , !
3* , / , %
4+ , -
5>> , >>> , <<
6> , >= , < , <=
7== , !=
8&
9^
10
11&&
12||
13a ? b : c
14=

tip. 우선순위에 상관 없이 ()를 사용하여 우선순위를 지정할 수 있다

profile
게으른 개발자 🦥

0개의 댓글

관련 채용 정보