학습목표
수식과 연산자의 개념을 이해하고 연산자의 종류를 이해할 수 있다.
다양한 연산자를 활용하여 프로그래밍을 작성할 수 있다.
연산자 이해하기
수식(expression)
- 피연산자(operand)와 연산자(operator)로 구성된 문장
- 피연산자는 상수값 또는 변수를 사용
- int result = 123 + 456;
연산자(operator)
- 연산자의 형식
- 단항 연산자 : 피연산자가 한 개인 연산자
- 이항 연산자 : 피연산자가 두 개인 연산자
- 삼항 연산자 : 피연산자가 세 개인 연산자
- 연산자의 종류
- 산술 연산자 : + - * / %
- 대입 연산자 : + += -= *= /= %=
- 증감 연산자 : ++ --
- 관계 연산자 : == != > < >= <=
- 논리 연산자 : ! && ||
- 조건 연산자 : ? :
- 비트 연산자 : & | ^ ~, >>, <<
- 기타 연산자 : (자료형) instanceof
- 연산자 우선순위
- 괄호, 단항 연산자
- 산술 연산자
- 관계 연산자
- 비트 연산자
- 논리 연산자
- 조건 연산자
- 대입 연산자
산술 연산자
- 덧셈(+), 곱셈(*), 뺄셈(-), 나눗셈(/) : 정수형과 실수형 계산 가능
- 나머지(%) : 정수형 계산만 가능
- 정수형과 실수헝의 나눗셈 결과는 실수형
- 0으로 나누면 실행오류 발생
대입 연산자
- 연산자 오른쪽에 있는 값을 왼쪽에 대입 또는 저장하는 연산자
- int result = 100;
- 복합 대입 연산자
- 단순 대입 연산자(=)와 산술연산자를 복합적으로 사용하는 연산자
- +=, -=, *=, /=, %=
증감 연산자
- 정수형 변수의 값을 1 증가시키거나 감소시킬 때 사용
- ++, --
- 전위/후위 증감 연산자
- 전위 증감 연산자 : ++a, --b, 전체 수식을 다 계산한 다음 제일 마지막에 증감연산자 계산
- 후위 증감 연산자 : a++, b--, 전체 수식을 계산하기 전에 증감연산자 계산한 후 수식을 계산
관계 연산자
- 연산자를 기준으로 양쪽의 피연산자를 비교하여 참(true)와 거짓(false)을 판별
- ==, !=, >, <, >=, <=
실습
public class Hello {
public static void main(String[] args) {
// 산술 연산자 실습(정수)
int a = 100;
int b = 30;
int ab = a + b;
System.out.println(a+" + "+b+" = "+ab);
System.out.println(a+" - "+b+" = "+(a-b));
System.out.println(a+" * "+b+" = "+(a*b));
System.out.println(a+" / "+b+" = "+(a/b));
System.out.println(a+" % "+b+" = "+(a%b));
// 산술 연산자 실습(실수)
double c = 50.45;
double d = 15.98;
System.out.println(c+" + "+d+" = "+(c+d));
System.out.println(c+" - "+d+" = "+(c-d));
System.out.println(c+" * "+d+" = "+(c*d));
System.out.println(c+" / "+d+" = "+(c/d));
// 대입 연산자 실습
int sum = 10;
sum += 10;
System.out.println("sum += 10 > "+ sum);
sum -= 5;
System.out.println("sum -= 5 > "+ sum);
sum *= 2;
System.out.println("sum *= 2 > "+ sum);
sum /= 3;
System.out.println("sum /= 3 > "+ sum);
sum %= 3;
System.out.println("sum %= 3 > "+ sum);
// 증감 연산자 실습
sum = 10;
sum++;
System.out.println("sum++ > "+sum);
sum--;
System.out.println("sum-- > "+sum);
++sum;
System.out.println("++sum > "+sum);
--sum;
System.out.println("--sum > "+sum);
a = 10;
b = 15;
int total = a++;
System.out.println("total = "+total+" a = "+a);
total = ++a;
System.out.println("total = "+total+" a = "+a);
total = a--;
System.out.println("total = "+total+" a = "+a);
total = --a;
System.out.println("total = "+total+" a = "+a);
total = ++a - b--;
System.out.println("total = "+total+" a = "+a+" b = "+b);
// 관계 연산자 실습
System.out.println(" 10 == 20 " + (10==20));
System.out.println(" 10 != 20 " + (10!=20));
System.out.println(" 10 > 20 " + (10>20));
System.out.println(" 10 < 20 " + (10<20));
System.out.println(" 10 >= 20 " + (10>=20));
System.out.println(" 10 <= 20 " + (10<=20));
boolean bo = 10 > 20;
System.out.println("boolean = "+bo);
}
}
정처기할 때 호되게 당했던 전위/후위 연산자...
이젠 안 헷갈림 당연함 정처기 2년 걸쳐서 땀
논리 연산자
- 피연산자를 대상으로 참(true)와 거짓(false) 판별
- 참이면 true, 거짓이면 false
- ! (NOT) : 피연산자를 부정
- && (AND) : 피연산자 모두 참이면 참
- || (OR) : 피연산자 모두 거짓이면 거짓
- 논리 연산자의 우선순위 : NOT > AND > OR
조건 연산자
- 삼항 연산자
- result = (조건식) ? (상수, 변수, 수식) : (상수, 변수, 수식);
- result = (a<b) ? 10 : 20;
비트 연산자
- 비트 논리 연산자
- ~ (NOT) : 비트 반전
- & (AND) : 피연산자가 모두 1인 경우만 1
- | (OR) : 피연산자가 모두 0인 경우만 0
- ~ (XOR) : 피연산자가 서로 다르면 1
int value = 1;
int result = ~value:
-2
int value = 00000001
~value = 11111110
부호 비트가 반전(양수 -> 음수), 2의 보수로 표현됨(음수값)
- 시프트 연산자
- << (왼쪽 시프트) : 왼쪽으로 비트 이동
- >> (오른쪽 시프트) : 오른쪽으로 비트 이동
- >>> (오른쪽 시프트, 부호 포함)
int value = 3;
int result = value << 1;
3(10) = 00000011(2)
왼쪽으로 1비트만큼 시프트하면 00000110(2)=6
int value = 6;
int result = value >> 1;
6(10) = 00000110
오른쪽으로 1비트만큼 시프트하면 00000011=3(10)
int value = -1;
int result = value >>> 1;
2147483647
양수의 가장 큰 값이 저장된다.
실습
public class Hello {
public static void main(String[] args) {
// 논리 연산자 실습
boolean result;
int a = 15, b = 25;
result = !(a < b);
System.out.println("!("+a+" < "+b+") : "+result);
result = (a > 10) && (b < 20);
System.out.println("("+a+">10) && ("+b+"<20) : "+result);
result = (a > 10) || (b < 20);
System.out.println("("+a+">10) || ("+b+"<20) : "+result);
result = (a > 10) || (b < 20) && !(a < b);
System.out.println("("+a+">10) || ("+b+"<20) && !("+a+"<"+b+") : "+result);
// 조건 연산자 실습(삼항 연산자)
int value;
value = (a < b) ? 10 : 20;
System.out.println("("+a+"<"+b+") ? 10 : 20; value = "+value);
value = (a < b) ? a : b;
System.out.println("("+a+"<"+b+") ? a : b; value = "+value);
value = (a < b) ? b - a : a - b;
System.out.println("("+a+"<"+b+") ? b-a : a-b; value = "+value);
// 비트 연산자 실습
a = 1;
value = ~a;
System.out.println("~"+a+" : "+value);
a = 3;
b = 5;
value = a & b;
System.out.println(a+" & "+b+" : "+value);
value = a | b;
System.out.println(a+" | "+b+" : "+value);
a = 10;
value = a << 1;
System.out.println(a+" << 1: "+value);
value = a >> 1;
System.out.println(a+" >> 1: "+value);
a = -1;
value = a >>> 1;
System.out.println(a+" >>> 1: "+value);
}
}
!(15 < 25) : false
(15>10) && (25<20) : false
(15>10) || (25<20) : true
(15>10) || (25<20) && !(15<25) : true
(15<25) ? 10 : 20; value = 10
(15<25) ? a : b; value = 15
(15<25) ? b-a : a-b; value = 10
~1 : -2
3 & 5 : 1
3 | 5 : 7
10 << 1: 20
10 >> 1: 5
-1 >>> 1: 2147483647
적용하기
1) 두 개의 정수를 키보드로 입력 받으시오.
2) 두 개의 정수에 대한 산술 연산 결과를 화면에 출력하시오.
3) 두 개의 정수에 대한 관계 연산 결과를 화면에 출력하시오.
4) 첫 번째 정수에 대하여 1을 더하여 출력하시오. (증감 연산자 이용)
5) 두 번째 정수에 2를 곱하여 출력하시오. (복합 대입 연산자 이용)
6) 첫 번째 숫자에 대하여 홀수와 짝수를 구분하여 출력하시오. (조건 연산자 이용)
7) 두 번째 숫자에 대하여 10에서 20 사이의 값인지 여부를 출력하시오. (논리 연산자 이용)
8) 두 개의 숫자에 대하여 비트 AND, OR, XOR 값을 출력하시오. (비트 연산자 이용)
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("a의 값을 입력하세요 : ");
int a = s.nextInt();
System.out.print("b의 값을 입력하세요 : ");
int b = s.nextInt();
System.out.println("a + b = " + (a+b));
System.out.println("a > b = " + (a>b));
++a;
System.out.println("a의 전위 연산자 값은 "+ a + "입니다.");
b *= 2;
System.out.println("b의 *= 2의 값은 "+ b + "입니다.");
String result;
result = (a % 2 == 0)? ("짝수") : ("홀수");
System.out.println("a는 "+result+"입니다.");
System.out.println(b >=10 && b <= 20);
System.out.println("a와 b의 비트 AND 결과 값은 : " +(a & b) + "입니다.");
System.out.println("a와 b의 비트 OR 결과 값은 : " +(a | b) + "입니다.");
System.out.println("a와 b의 비트 XOR 결과 값은 : " +(a ^ b) + "입니다.");
}
}
a의 값을 입력하세요 : 9
b의 값을 입력하세요 : 15
a + b = 24
a > b = false
a의 전위 연산자 값은 10입니다.
b의 *= 2의 값은 30입니다.
a는 짝수입니다.
false
a와 b의 비트 AND 결과 값은 : 10입니다.
a와 b의 비트 OR 결과 값은 : 30입니다.
a와 b의 비트 XOR 결과 값은 : 20입니다.
'온라인 강좌 > 안드로이드 프로그래밍을 위한 자바기초' 카테고리의 다른 글
6차시 클래스를 이용한 객체지향 프로그래밍 기본 문법 이해하기 (0) | 2023.07.10 |
---|---|
5차시 배열의 기본 문법 이해하기 (0) | 2023.07.09 |
4차시 조건문과 반복문의 기본 문법 이해하기 (0) | 2023.07.08 |
2차시 자료형과 변수의 기본 문법 (0) | 2023.07.07 |
1차시 JAVA 언어 특성 이해하기 (0) | 2023.07.06 |