JAVA - 연산자(2022-07-08)
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이다.