본문 바로가기

개발/Java

[Java] 자바 - 산술연산자 / 증감연산자 / 복합대입연산자

 

< 산술연산자 >

 

- 이항연산자, 우선순위가 일반 수학 산술과 동일

+ 덧셈
- 뺄셈
* 곱셈
/ 나눗셈
% 나머지 (모듈러 modular)

 

int num1 = 10;
int num2 = 3;

System.out.println("num1 + num2 = " + num1 + num2); 
// 결과값은? num1 + num2 : 103 (String + int + int = 문자열과 연산하여 문자열이 되어버림)

 

+, -의 경우, 괄호로 묶지 않으면 문자열과 연산되어 오류 발생!

*, /, % 연산자의 경우, 우선순위가 +, - 보다 높기 때문에 묶지 않아도 먼저 연산이 됨

단, 가독성을 위해 괄호를 사용할 것을 권장함

 

System.out.println(5 / 0);
// 정수를 0으로 나눌 수 없다!
// ArithmeticException: / by zero

 


 

 

< 증감연산자 >

 

- 단항연산자로 한 번에 1씩 증가(더하거나)하거나 감소(빼거나)하는 연산을 함

- 연산자의 위치에 따라 먼저 증감을 할 것인지, 나중에 증감을 할 것인지가 달라짐

 

[ 표현법 ]

++ : 값을 1씩만 증가시키는 연산자

-- : 값을 1만 감소시키는 연산자

 

[ 연산자의 위치 ]

- 전위연산 : ++값, --값  (먼저 값을 증가하고 그 값을 처리)

- 후위연산 : 값++, 값-- (값을 처리하고 나서 증가하거나 감소)

 

[ 후위연산 ]

int a = 10;
int b = a++;
		
System.out.println("a : " + a); // a : 11
System.out.println("b : " + b); // b : 10
// b라는 변수에 a값을 먼저 대입하고 (선 처리)
// a라는 값을 증가시킨다 (후 연산)
		
int c = 20;
int d = c--;
		
System.out.println("c : " + c); // c : 19
System.out.println("d : " + d); // d : 20
// d라는 변수에 c값을 먼저 대입하고 (선 처리)
// c라는 값을 감소시킨다 (후 연산)

int num1 = 20;
int result = num1++*3;

System.out.println("num1 : " + num1); // num1 : 21
System.out.println("result : " + result); // result : 60
// num1에 3을 곱해서 대입 (선 처리)
// num1값을 증가(후 연산)

 


< 복합대입연산자 >

 

- 다른 산술연산자와 대입연산자가 결합한 것

- 자기 자신과 해당 산술연산 후에 그 결과를 자기자신에게 덮어씌우는 것

+= 덧셈 → 대입
-= 뺄셈 → 대입
*= 곱셈 → 대입
/= 나눗셈 → 대입
%= 나머지 → 대입