본문 바로가기

개발 일기/Java Programming

산술 연산자 | 우선순위 | 강제 형 변환 | 대입 연산자 | 증감 연산자 | 복합 연산자

산술 연산자

 

1. 기본적인 연산자

산술 연산자 설명 사용 예
= 대입 a = 3 정수 3을 a에 대입
+ 더하기 a = 5 + 3 5와 3을 더한 값을 a에 대입
- 빼기 a = 5 - 3 5에서 3을 뺀 값을 a에 대입
* 곱하기 a = 5 * 3 5와 3을 곱한 값을 a에 대입
/ 나누기 a = 5 / 3 5를 3으로 나눈 값을 a에 대입
% 나머지 값 a = 5 % 3 5를 3으로 나눈 뒤 나머지 값을 a에 대입
public class EX04_02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a, b = 5, c = 3; //int는 정수형, a,b에 5, c에 3을 할당
		
		a = b + 3; //b와 c를 더하기 연산하여 a에 대입
		System.out.printf("%d + %d = %d \n", b, c, a);
		
		a = b - c; //b와 c를 빼기 연산하여 a에 대입
		System.out.printf("%d - %d = %d \n", b, c, a);
		
		a = b * c; //b와 c를 곱하기 연산하여 a에 대입
		System.out.printf("%d * %d = %d \n", b, c, a);
		
		a = b / c; //b와 c를 나누기 연산하여 a에 대입
		System.out.printf("%d / %d = %f \n", b, c, (float) a);
		
		a = b % c; //b와 c를 나누기 연산하여 나머지 값을 a에 대입
		System.out.printf("%d %% %d = %f \n", b, c, (float) a);
	}

}

5 + 3 = 8

5 - 3 = 2

5 * 3 = 15

5 / 3 = 1.000000

5 % 3 = 2.000000

 

2. 우선순위와 강제 형 변환

public class EX04_03 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a = 2, b = 3, c = 4; //정수형 변수 선언
		int result1, mok, namugi; //정수형 변수 선언
		float result2; //실수형 변수 선언
		
		result1 = a + b  - c; //더하기와 빼기 연산을 동시에 수행
		System.out.printf("%d + %d - %d = %d \n", a, b, c, result1);
		
		result1 = a + b * c; //더하기와 곱하기 연산을 동시에 수행
		System.out.printf("%d + %d * %d = %d \n", a, b, c, result1);
		
		result2 = a * b / (float) c; //정수 c를 실수로 강제 형 변환(casting)한 다음 연산
		System.out.printf("%d * %d / %d = %f \n", a, b, c, result2);
		
		mok = c / b; //몫을 구함
		System.out.printf("%d / %d 의 몫은 %d \n", c, b, mok);
		
		namugi = c % b; //나머지를 구함
		System.out.printf("%d / %d 의 나머지는 %d \n", c, b, namugi);
	}

} //순서 1. 괄호 2. 곱(나눗셈) 3. 덧셈,뺄셈 4. 왼->오 진행 5. = 대입연산자

2 + 3 - 4 = 1

2 + 3 * 4 = 14

2 * 3 / 4 = 1.500000

4 / 3 의 몫은 1

4 / 3 의 나머지는 1

 

 

- 7행 : 연산자 우선순위

1. result 1 = (a+b) - c;
2. result 1 = a + (b+c);

덧셈과 뺄셈은 계산되는 순서(연산자 우선순위)가 동일하므로 어떤 것을 먼저 계산하든 결과가 동일.

괄호가 없으면 왼쪽에서 오른쪽 방향으로 계산.

 

- 10행

1. result 1 = (a+b)*c; -> (2+3)*4 -> 5*4 -> 20
2. result 1 = a+(b*c) -> 2+(3*4) -> 2 + 12 -> 14

덧셈(또는 뺄셈)과 곱셈(또는 나눗셈)이 같이 나오는 경우에는 곱셈(또는 나눗셈)을 먼저 계산한 다음 덧셈(또는 뺄셈)을 게산.

 

3. 데이터형의 강제 형 변환

- 형 변환을 하지 않았을 때

- 강제 형 변환을 했을 때

 

4. 대입 연산자와 증감 연산자

연산자 설명 사용 예
+= 대입 연산자 a += 3 a = a + 3과 동일
-= 대입 연산자 a -= 3 a = a - 3과 동일
*= 대입 연산자 a *= 3 a = a * 3과 동일
/= 대입 연산자 a /= 3 a = a / 3과 동일
%= 대입 연산자 a %= 3 a = a % 3과 동일
++ 증가 연산자 a++ 또는 ++a a += 1 또는 a = a + 1과 동일
-- 감소 연자 a-- 또는 --a a -= 1 또는 a = a - 1과 동일

산술 + 대입 => 복합 연산자

a++ 후치증가연산자 : a가 있고, a 값을 1 증가

++a 전치증가연산자 : a 값을 1 증가시키고, a가 있음

public class EX04_04 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a = 10;
		
		a++; //a=a+1과 동일
		System.out.printf("a++ ==> %d \n", a);
		
		a--; //a=a-1과 동일
		System.out.printf("a-- = %d \n", a);
		
		a += 5; //a=a+5와 동일
		System.out.printf("a += 5 ==> %d \n", a);
		
		a -= 5; //a=a-5와 동일
		System.out.printf("a -= 5 ==> %d \n", a);
		
		a *= 5; //a=a*5와 동일
		System.out.printf("a *= 5 ==> %d \n", a);
		
		a /= 5; //a=a/5와 동일
		System.out.printf("a /= 5 ==> %d \n", a);
		
		a %= 5; //a=a%5와 동일
		System.out.printf("a %%= 5 ==> %d \n", a);
	}

}

a++ ==> 11

a-- = 10

a += 5 ==> 15

a -= 5 ==> 10

a *= 5 ==> 50

a /= 5 ==> 10

a %= 5 ==> 0

 

public class EX04_05 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a = 10, b;
		
		b = a++; //b=a를 수행한 다음 a를 1 증가
		System.out.printf("%d \n", b);
		
		b = ++a; //a를 1 증가시킨 다음 b=a를 수행
		System.out.printf("%d \n", b);
	}

}

10

12