Java
<Java> Operator( 연산자 )
98kg
2023. 8. 24. 00:22
이번 포스팅은 java의 연산자에 관한 포스팅입니다..
연산자 (Operator) 정의
- 연산자란 프로그램에서 데이터를 처리하여 결과를 산출하는 것을 연산(operation)이라 칭한다.
- 연산에 사용되는 표시나 기호를 연산자(operator)라고 한다.
- 연산되는 데이터는 피연산자(operand)라고 한다.ex) 산술연산( +, -, *, /, % ) 등
우선 처음으로는 산술 연산자에 대해 알아보겠습니다.
산술 연산자 | 설명 |
+ | 왼쪽의 피연산자에 오른쪽의 피연산자를 더함 |
- | 왼쪽의 피연산자에서 오른쪽의 피연산자를 뺌. |
* | 왼쪽의 피연산자에 오른쪽의 피연산자를 곱함. |
/ | 왼쪽의 피연산자에 오른쪽의 피연산자를 곱함 |
% | 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 반환함. |
예제
int a = 20;
int b = 10;
int c;
c = a + b;
System.out.println(c); // 20
c = a - b;
System.out.println(c); // 10
c= a * b;
System.out.println(c); // 200
c = a / b;
System.out.println(c); // 2
c = a % b;
System.out.println(c); // 0
- / (나눗셈) 과 % (나머지) 가 헷갈리니 주의해서 사용하자.
증감 연산자
- 피연산자의 앞 또는 뒤에 붙어 값을 1씩 증가시키거나 감소시킨다
- 뒤에 붙으면 후행 연산자로 다음 번에 실행 될 때 1 씩 증가 된다.
- 앞에 붙으면 선행 연산자로 찍히는 당시 바로 + 1 이된 값이 출력된다.
증감 연산자 | 설명 |
++(postfix), --(postfix) | 후행 연산자로 다음 번에 실행 될 때 1 씩 증가 된다. |
(prefix)++ ,.(prefix) -- | 선행 연산자로 찍히는 당시 바로 + 1 이된 값이 출력된다. |
ex)
// 증감 연산 ++, --
int val;
val = 10;
System.out.println(val); // 10
System.out.println(++val); // 11 여기서 바로 1 증가 후 출력
System.out.println(val); // 11
val = 10;
System.out.println(val); // 10
System.out.println(val++); //우선 여기선 10 출력 후 1 증가 저장만
System.out.println(val); //11 , 1 저장된 걸 출력
val = 10;
System.out.println(val); // 10
System.out.println(--val); // 9
System.out.println(val); // 9
val = 10 ;
System.out.println(val); // 10
System.out.println(val--); // 10
System.out.println(val); // 9
은행 대기번호 표로 가볍게 예시를 보여주겠습니다.
// 은행 대기번호 표
int waiting =0;
System.out.println("대기 인원 : "+ waiting++ ); // 대기인원 0명
System.out.println("대기 인원 : "+ waiting++ );// 대기인원 1명
System.out.println("대기 인원 : "+ waiting++ ); // 대기인원 2명
System.out.println("총 대기 인원 : "+ waiting ); // 총 대기인원 3명
복합 대입 연산자
증감 연산자 | 설명 |
+= | 두 항의 값을 더해서 왼쪽 항에 대입 |
-= | 왼쪽 항에서 오른쪽 항을 빼서 그 값을 왼쪽 항에 대입 |
*= | 두 항의 값을 곱해서 왼쪽 항에 대입 |
/= | 왼쪽 항을 오른쪽 항으로 나누어 그 몫을 왼쪽 항에 대입 |
%= | 왼쪽 항을 오른쪽 항으로 나누어 그 나머지를 왼쪽 항에 대입 |
ex)
// 복합 대입 연산자
int num = 10;
num += 2; // num = num +2 와 같다.
System.out.println(num);
num -= 2; // num = num - 2 와 같다.
System.out.println(num);
num *= 2; //num = num * 2 와 같다.
System.out.println(num);
num /= 2; //num = num / 2 와 같다.
System.out.println(num);
num %= 2; //num = num % 2 와 같다.
System.out.println(num);
비교 연산자
비교 연산자 | 설명 |
> | 완쪽 값이 오른쪽보다 크다 |
>= | 완쪽 값이 오른쪽보다 크거나 같다 |
< | 완쪽 값이 오른쪽보다작다 |
<= | 완쪽 값이 오른쪽보다 작거나 같다 |
== | 완쪽 값이 오른쪽과 같다 |
!= | 완쪽 값이 오른쪽과 다르다 |
ex)
// 비교 연산자
System.out.println(5 > 3); // 5는 3보다 크다( 참이면 true ,거짓이면 false 출력 )
System.out.println(5 >= 3); //5가 3보다 크거나 같다 확인.(ture)
System.out.println(5 >= 5); //5가 5보다 크거나 같다 확인. (true)
System.out.println(5 >= 7); //5가 7보다 크거나 같다 확인. (false)
System.out.println(5 < 3); // 5는 3 다 작다( false )
System.out.println(5 <= 3); // 5는 3보다 작거나 같다 (false)
System.out.println(5 == 5); //왼쪽 값과 오른 쪽값이 똑같은지 확인 (true)
System.out.println(5 == 3); //왼쪽 값과 오른 쪽값이 똑같은지 확인 (false)
System.out.println(5 != 5); //왼쪽 값과 오른 쪽값이 같지 않은지 확인 (false)
System.out.println(5 != 3); //왼쪽 값과 오른 쪽값이 같지 않은지 확인 (true)
논리 연산자
논리 연산자 | 설명 |
|| | OR (둘 중하나라도 맞으면 true) |
&& | AND (둘 다 일치해야 true 하나라도 틀리면 false) |
ex)
// 논리 연산자
boolean 김치찌게 = false;
boolean 계란말이 = false;
boolean 제육볶음 = true;
System.out.println(김치찌게 ||계란말이 || 제육볶음); // ||는 or을 표현함 (하나라도 true 이면 true 출력
System.out.println(김치찌게 && 계란말이 && 제육볶음); // &&는 and 를 표현함 (하나라도 false 이면 모두 false)
// and 연산
System.out.println((5 > 3) && (3 > 1));// 두 식이 모두 true 이어야 true
System.out.println((5 > 3) && (3 < 1)); // false
// or 연산
System.out.println((5 > 3) || (3 > 1)); // 둘 다 만족하면 true
System.out.println((5 > 3) || (3 < 1)); // 둘 중 하나만 만족하면 true
System.out.println((5 < 3) || (3 < 1)); // 둘 다 만족 하지 않으면 false
// System.out.println(1 < 3 < 5); 불가능
System.out.println(1 < 3 && 3 < 5); //가능 괄호 없어도 연산 가능 but, 가독성 때문에 괄호 치는 거 습관화하기
// 논리 부정 연산자
System.out.println(!true); // false
System.out.println(!false); // true
System.out.println(!(5 == 5)); // true 의 반대인 false 반환
System.out.println(!(5 == 3)); // false 의 반대인 true 반환
삼항 연산자
조건문인 if 문을 사용하여 코딩을 할 경우 코드 라인이 의미 없이 길어지는 경우들이 종종 생겨
코드가 의미없이 복잡해지는 경우가 있습니다
이럴 때 삼항 연산자를 이용하면 코드의 라인수 확 줄어듭니다
우선 식을 보여드리겠습니다.
int max = (x > y) ? x : y;
위에 식을 설명하자면 아래와 같습니다.
식 : 결과 = (조건) ? (참의 경우 결과값) : (거짓의 경우 결과값)
ex)
// 삼항 연산자
// 식 : 결과 = (조건) ? (참의 경우 결과값) : (거짓의 경우 결과값)
int x =5;
int y =3;
int max = (x > y) ? x : y;
System.out.println(max); // 5
int min = (x < y) ? x : y;
System.out.println(min); // 3
boolean b = (x == y) ? true : false;
System.out.println(b);
String s = (x != y ) ? "달라요" : "같아요";
System.out.println(s);
연산자의 우선순위(operator precedence)
연산자의 우선순위는 수식 내에 여러 연산자가 함께 등장할 때, 어느 연산자가 먼저 처리될 것인가를 결정합니다
자바 연산자의 우선순위표
우선순위도 | 연산자 |
높음 | | | | | | | | | | | | | | | | | | | | | | V 낮음 |
++(postfix), --(postfix) |
+(양수부호) , - (음수부호), (prefix)++ ,.(prefix) -- | |
형변환 ( type casting) | |
* , / , % | |
+(덧셈) , - (뺼셈) | |
<< , >>, >>> (비트단위 쉬프트 연산자) | |
<> , <= , >= , instanceof (관계 연산자) | |
&(비트 AND) | |
^ (비트 XOR) | |
&&( 논리 AND) | |
|| (논리 OR) | |
?: (조건) | |
=, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>= ( 대입연산자, 할당 연산자) |
마지막으로 간단한 Quiz를 내보며 이번 포스팅을 끝마치겠습니다.
QUIZ (출처: 인프런 나도코딩)
어린이 키에 따른 놀이 기구 탑승 가능 여부를 확인하는 프로그램을 작성하시오.
조건 )
- 키가 120 cm 이상인 경우에만 탑승 가능
- 삼항 연산자 이용
- 실행결과
<< Answer >>
더보기
public class _Quiz_02 {
public static void main(String[] args) {
int tall = 115;
String s = (tall >= 120) ? "키가 " + tall +"cm 이므로 탑승 가능합니다"
: "키가 " + tall +"cm 이므로 탑승 불가능합니다";
System.out.println(s);
tall = 121;
String d = (tall >= 120) ? "키가 " + tall +"cm 이므로 탑승 가능합니다"
: "키가 " + tall +"cm 이므로 탑승 불가능합니다";
System.out.println(d);
}
}