본문 바로가기
코딩

[JAVA] 자바 연산 (Operator)

by anica0206 2023. 9. 20.

연산자 (Operator)

연산자는 연산을 수행하는 기호를 말한다.

ex) +, -, *, /

 

연산자(operator): 연산을 수행하는 기호 (+, -…)

피연산자(operand): 연산자의 작업 대상 (변수, 상수, 리터럴, 수식)


연산자의 종류

 

산술연산자 +, -, *, /, %, <, <, >>, >>> 사칙 연산과 나머지 연산자 (%)
비교연산자 >, <, >=, <=, ==, != 크고 작음 같고 다름을 표현
논리연산자 &&, ||, !, &, |, ^,  ~ AND, OR, NOT…
대입연산자 = 무변에 값을 좌변에 대입
기타 (type) ? 참이면 수행 : 거짓이면 수행; 형변환, 삼향연산자, instanceof

 

1. 산술연산자

  • 산술 연산자는 사칙연산자(+, -, *, /)와 나머지 연산자(%)가 있다.
// Exception in thread "main" java.lang.ArithmeticException: / by zero
// System.out.println(12/0);

// int/double
System.out.println(12/0.0); //Infinity
System.out.println(-12/0.0); //-Infinity
int x = 10; // '=' 대입연산자
int y = 3;

System.out.printf("x + y = %d%n", (x + y)); //13
System.out.printf("x - y = %d%n", (x - y)); //7
System.out.printf("x * y = %d%n", (x * y)); //30

System.out.println("x/y= " + (x/y)); //int/int = int(3)
System.out.println("x/y= " + (x/(y*1.0))); //3.333333333333333
System.out.println("x%y= " + (x%y));

2. 비교연산자

  • 대소비교 연산자
연산자 설명
< 좌변 값이 크면, true 아니면 false
> 좌변 값이 작으면, true 아니면 false
< = 좌변 값이 같거나 크면, true 아니면 false
> = 좌변 값이 같거나 작으면, true 아니면 false
  • 등가비교 연산자
연산자 설명
== 두 값이 같으면, true 아니면 false
! = 두 값이 같지 않으면, true 아니면 false
System.out.printf("10==10.0f\t\t%b%n", 10==10.0f); //10==10.0f		true

System.out.printf("'0'== 0 \t\t%b%n", ('0'== 0)); //'0'== 0 		false

System.out.printf("'A'== 65 \t\t%b%n", ('A'== 65)); //'A'== 65 		true

System.out.printf("'A'== 'B' \t\t%b%n", 'A'>'B'); //65 > 66 //'A'== 'B' 		false

System.out.printf("('A' + 1) != 'B'\t%b%n", ('A' + 1) != 'B'); //('A' + 1) != 'B'	false

3. 논리 연산자

  • &&(AND): 피연산자 양쪽 모두 true이면 true
  • ||(OR): 피연산자 어느 한쪽만 true이면 true
  • &&(AND) ||(OR) 진리표
X Y X||Y X&&Y
true true true true
true false true false
false true true false
false false false false
//x는 10보다 크고, 20보다 작다
x>10 && x<20

//10 < x < 20 (수학적 표현)
10<x && x<20

//i는 2의 배수 또는 3의 배수
(i%2==0) || (i%3==0)

//i는 2의 배수 또는 3의 배수지만 6의 배수는 아니다.
((i%2==0) || (i%3==0)) && (i%6!=0) //&&가 ||보다 우선

//문자 ch는 대문자 또는 소문자이다.
('a'<=ch && ch<='z') || ('A'<=ch && ch<='Z')

4. 삼항 연산자

  • 삼항 연산자는 조건식, 식1, 식2 모두 세 개의 피연산자를 필요로 하는 연산자
  • (제어문의 if~else문 간략형)

//나이에 따라 미성년 여부 판단

int age = 22;
String message = (age>=18) ? "성인":"미성년";

System.out.printf("나이=%d, 성인여부:%s%n", age, message); //나이=22, 성인여부:성인

5. 단항 연산자

  • 증가 연산자(++): 피연산자의 값을 1증가 시킨다.
  • 감소 연산자(- -): 피연산자의 값을 1감소 시킨다.
전위형 값이 참조되기 전에 증가시킨다. j = ++i
후휘형 값이 참조된 후에 증가시킨다. j = i++;
int i = 12;
int j = 0;

j = i++;//후위 연산자: 할당하고 증가
System.out.printf("i++=%d, j=%d%n", i, j); //i++=13, j=12

//초기화
i = 12;
j = 0;

j = ++i;//전위 연산자: 증가 시키고 j에 할당
System.out.printf("i++=%d, j=%d%n", i, j); //i++=13, j=13
  • 부호 연산자: 피연산자의 부호를 반대로 변경한 결과를 반영한다.
int x = -12;
x = +x;

System.out.println("x=" + x); //x=-12

x = -12;
x = -x;

System.out.println("x=" + x); //x=12

6. 기타 연산자

  • 대입 연산자 : =
x = y = 3;
  • 복합 대입 연산자
op= =
i+=3 i = i + 3;
i*=3; i = i * 3;
i%=3; i = i % 3
i<< = 3; i = i << 3;
i&=3; i = i & 3;

연산자의 우선순위

  • 연산자의 결합규칙: 대부분의 연산은 왼쪽에서 오른쪽으로 수행 ex) 2+4 -5
  • 단항 연산자와 대입: 연산자 오른쪽에서 왼쪽 수행 ex) x = y = 3;
  • 산술 > 비교 > 논리 > 대입, 대입이 제일 마지막에 수행 된다.
  • 단항(1)>이항(2)>삼항(3) 단항 연산의 우선 순위가 이항 연산자보다 높다.
  • 단항, 대입 연산자를 제외한 모든 연산자의 진행 방향은 왼쪽에서 오른쪽.