3층 1구역 - 개발의 장/JAVA

JAVA - 연산자(2022-07-08)

상이태상 2022. 7. 9. 22:58

1. 산술연산자

+ : 덧셈을 하거나 어떤 자료와 문자열을 결합할 때 사용한다.

- : 뺄셈

* : 곱셈

/ : 나눗셈(몫을 결과값으로 나타냄.)

% : 나눗셈(나머지를 결과값으로 나타냄.)

 

나머지 연산자(%)의 쓰임 : 배수, 약수, 소수, 수의 범위

package operators;

public class Ex1 {

	public static void main(String[] args) {
		
		int data1 = 9, data2 = 2; 
		System.out.println(data1+" + "+data2+" = "+(data1 + data2)); 
		System.out.println(data1+" - "+data2+" = "+(data1 - data2)); 
		System.out.println(data1+" * "+data2+" = "+(data1 * data2)); 
		System.out.println(data1+" / "+data2+" = "+(data1 / data2)); //몫
		System.out.println(data1+" % "+data2+" = "+(data1 % data2)); //나머지(% -->>모듈러)
		/*
		 *나머지 연산자(%)의 쓰임 : 배수, 약수, 소수, 수의 범위
		 * 
		 * ex) 	x % 2 = 0,1(2의 범위)
		 * 
		 * 		2 % 2 = 0(2의 배수)
		 * 	   	3 % 2 = 1
		 *		4 % 2 = 0(2의 배수)
		 *		5 % 2 = 1
		 *
		 *		x % 3 = 0,1,2(3의 범위)
		 *
		 *		3 % 3 = 0(3의 배수)
		 *		4 % 3 = 1
		 *		5 % 3 = 2
		 *		6 % 3 = 0(3의 배수)
		 *
		 * 약수 x % (1~n) = 0 (수로 나눌 떄 나머지가 없는 값은 약수)
		 * 		6 % 1 = 0
		 * 		6 % 2 = 0
		 * 		6 % 3 = 0
		 * 		6 % 4 = 2
		 * 		6 % 5 = 1
		 * 		6 % 6 = 0
		 * 
		 * 소수 x % (1과 자기자신을 제외한 범위의 수) 나누었을때 나머지가 0이 없는 수는 소수
		 * 		7 % 2 = 1
		 * 		7 % 3 = 1
		 * 		7 % 4 = 3
		 * 		7 % 5 = 2
		 * 		7 % 6 = 1
		 */

	}

}

결과

9 + 2 = 11
9 - 2 = 7
9 * 2 = 18
9 / 2 = 4
9 % 2 = 1

 

2. 대입 연산자

우리가 보통 '1 더하기 1 은 2이다.' 라는 말을 식으로 표현 할 때, '1 + 1 = 2' 라고 표현한다.

하지만 컴퓨터와 얘기할 땐, '=' 의 의미는 '대입한다.' 이다.

 

a = b는 a에 b를 대입한다. 라고 쓰인다. 나중에 관계 연산자를 설명할 때 언급하겠지만 ~와 ~는 같다 라고 할 때는

== 기호를 쓴다.

 

+= >> a += b >> a = a + b (a를 b에 대입하여 더해서 a에 나타낸다.)

-= >> a -= b >> a = a - b (a를 b에 대입하여 빼고 a에 나타낸다.)

*= >> a *= b >> a = a * b (a를 b에 대입하여 곱하고 a에 나타낸다.)

/= >> a /= b >> a = a/b (a를 b에 대입하여 나누고 a에 몫을 나타낸다.)

%= >> a %= b >> a = a % b (a를 b에 대입하여 나누고 a에 나머지를 나타낸다.)

package operators;

public class Ex2 {
	public static void main(String[] args) {
	int data1, data2;
	data1 = data2 = 5; 
	//대입 연산자 이므로 왼쪽 값엔 변수가 와야 한다.
	
	System.out.println("data1 + 1 = " + (data1 += 1)); //(data1 = data1 + 1)
	System.out.println("data1 - 1 = " + (data1 -= 1)); //(data1 = data1 - 1)
	System.out.println("data1 * data2 = " + (data1 *= data2)); //(data1 = data1 * data2)
	System.out.println("data1 / data2 = " + (data1 /= data2)); //(data1 = data1 / data2)
	System.out.println("data1 % data2 = " + (data1 %= data2)); //(data1 = data1 % data2)

	}
}

단, 대입 연산자는 어떤 변수에 저장되어 있는 값을 완전히 바꿔버리는 것이기 때문에

위 와 같이 코드를 작성하고 실행 시켰을 때, 값은

1. data1 = data1 + 1(5+1)이므로 data1 은 6이 된다.

2. data1 = data1 - 1은 data1이라는 변수에 6이 저장되어 있으므로 6 - 1 = 5가 된다.

3. data1 = data1 * data2는 data1 변수에 5가 저장되어 있고, data2는 초기 5를 곱하여 5 * 5 = 25가 된다.

4. data1 = data1 / data2는 data1 변수에 25가 저장되어 있고, data2의 초기 5를 나누어 몫이 5, 즉 결과는 5이다.

5. data1 = data1 % data2는 data1 변수에 5가 저장되어 있고, data2의 초기 5를 나누어 나머지가 없음, 즉 결과는 0이다.

 

결과를 보자.

data1 + 1 = 6
data1 - 1 = 5
data1 * data2 = 25
data1 / data2 = 5
data1 % data2 = 0

위 설명과 같이 동일하게 나왔다.

 

3. 관계 연산자

 두 피 연산자 간의 대소관계를 비교하기 위하여 사용

 true 은 (참) false은 (거짓)

a > b - a는 b보다 크다.

a < b - a는 b보다 작다.

a >= b - a는 b보다 크거나 같다.

a <= b - a는 b보다 작거나 같다.

a == b - a는 b보다 같다.

a != b - a는 b보다 같지 않다.

package operators;

public class Ex3 {

	public static void main(String[] args) {
		double do1 = 3.0, do2 = 3.1;
		System.out.println("do1 < do2 크기 비교 : " + (do1 < do2));
		System.out.println("do1 > do2 크기 비교 : " + (do1 > do2));
		System.out.println("do1 <= do2 크기 비교 : " + (do1 <= do2));
		System.out.println("do1 >= do2 크기 비교 : " + (do1 >= do2));
		System.out.println("do1 == do2 크기 비교 : " + (do1 == do2));
		System.out.println("do1 != do2 크기 비교 : " + (do1 != do2));

	}

}

결과

do1 < do2 크기 비교 : true
do1 > do2 크기 비교 : false
do1 <= do2 크기 비교 : true
do1 >= do2 크기 비교 : false
do1 == do2 크기 비교 : false
do1 != do2 크기 비교 : true

4. 논리 연산자

a > b || a < c - a가 b보다 크거나 a가 c보다 작으면 참 (OR의 과정)

a > b && a < c - a가 b보다 크고 a가 c보다 작으면 참 (AND의 과정)

!(a > b) - a가 b보다 크면 거짓(NOT의 과정)

package operators;

public class Ex4 {

	public static void main(String[] args) {
		System.out.println("false || false : "+ (false || false)); 
		System.out.println("false || true : "+ (false || true)); 
		System.out.println("true || false : "+ (true || false)); 
		System.out.println("true || true : "+ (true || true));
		System.out.println();
		System.out.println("false && false : "+ (false && false)); 
		System.out.println("false && true : "+ (false && true)); 
		System.out.println("true && false : "+ (true && false)); 
		System.out.println("true && true : "+ (true && true)); 
		System.out.println();
		System.out.println("!true : " + !true); 
		System.out.println("!false : " + !false);

	}

}

결과

false || false : false
false || true : true
true || false : true
true || true : true

false && false : false
false && true : false
true && false : false
true && true : true

!true : false
!false : true

 

5. 증감 연산자

++a - 값을 1만큼 증가한 후 연산

 

a++ - 값을 연산 후 1을 더함

 

--a - 값을 1만큼 감소 후 연산

 

a-- - 값을 연산 후 1을 감소

package operators;

public class Ex5 {

	public static void main(String[] args) {
		int data1;
		double data2;
		
		data1 = 5; ++data1;//값을 1만큼 증가한 후 연산
		System.out.println("++data1 = " + data1);
		
		data1 = 5; data1++; //연산 후 값을 1만큼 증가
		System.out.println("data1++ = " + data1);
		
		data2 = 11.2; ++data2;
		System.out.println("++data2 = " + data2);
		
		data2 = 11.2; data2++;
		System.out.println("data2++ = " + data2);

	}

}
package operators;

public class Ex6 {

	public static void main(String[] args) {
		int data1, data2, data3;
		
		data1 = 10;  data2 = ++data1; // =(대입 연산자) 보다 ++(증감 연산자)가 먼저 진행 따라서 10+1=11 값이 data2에 저장, data1의 값은 11
		data1 = 10;  data3 = data1++; // ++(증감 연산자) 보다 =(대입 연산자)가 먼저 진행 따라서 data3 = 10, 이후 data1의 값은 11
		System.out.println("data1 = "+data1); 
		System.out.println("data2 = "+data2); 
		System.out.println("data3 = "+data3);


	}

}

6. 삼항 연산자

package operators;

public class Ex7 {

	public static void main(String[] args) {
		/*
		 * 조건연산자(조건부 연산자, 항이 3개로 나뉘어 있다 해서 삼항연산자)
		 * 
		 * (조건식) ? '참'일 때 반환하는 문장 : '거짓' 일 때 반환하는 문장
		 */
		
		int data = 10;
		String result = (data > 10 || data < 5) ? "참일 때 반환" : "거짓일 때 반환"; 
		System.out.println(result);
		
		data = 8; 
		result = (data % 2 == 0) ? "짝수" : "홀수"; 
		System.out.println(data + " = " + result);
		
		data = 9; 
		result = (data % 2 == 0)? "짝수" : "홀수"; 
		System.out.println(data + " = " + result);


	}

}

7. 퀴즈 예시

 

1. 수를 입력 받아 짝, 홀수를 구분하여 출력하세요.

2. 수를 입력 받아 3의 배수인지 아닌지 출력하세요.

3. 두 수를 입력 받아 큰 수를 출력 하세요.

package operators;

import java.util.Scanner;

public class Quiz1 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("수를 입력 받아 짝,홀수를 구분하여 출력하세요.");
		System.out.print("수 입력 : ");
		int num = sc.nextInt();
		String s = (num % 2 == 0 )?"짝수" : "홀수";
		System.out.println(num + " = " + s);
		System.out.println();
		
		System.out.println("수를 입력 받아 3의 배수이면 출력하세요.");
		s = (num % 3 == 0)?"3의 배수이다.":"3의 배수가 아니다.";
		System.out.println(num + " = " + s);
		System.out.println();
		
		System.out.println("두 수를 입력받아 큰 수를 출력 하세요.");
		System.out.print("두 수 입력 : ");
		int data = sc.nextInt();
		int data2 = sc.nextInt();
		System.out.println("data : " + data + " ," + "data2 : " + data2);
		int result = (data > data2) ? data : data2;
		System.out.println(result);
		System.out.println(data + " 과/와 " + data2 + " 중 큰 수는 " + result + "이다.");
		
		sc.close();
	}
}

결과

수를 입력 받아 짝,홀수를 구분하여 출력하세요.
수 입력 : 10
10 = 짝수

수를 입력 받아 3의 배수이면 출력하세요.
10 = 3의 배수가 아니다.

두 수를 입력받아 큰 수를 출력 하세요.
두 수 입력 : 10 20
data : 10 ,data2 : 20
20
10 과/와 20 중 큰 수는 20이다.