연산자(Operator)

Joy🌱·2022년 12월 21일
0

☕ Java

목록 보기
5/40
post-thumbnail

💁‍ 연산자(Opertator)란,
연산을 수행하는 기호

👀 산술 복합 대입 연산자

1) 3 증가

// num = num + 3 
num += 3;
>>> 복합대입연산자의 형태를 사용한 식 (권장)
System.out.println("num : " + num);

2) 5 감소

// num = num - 5 
num -= 5;
System.out.println("num : " + num);
>>> 위의 '+3'식에서 도출된 값(15)에서 -5된 값(10) 출력

3) 2배 증가

// num = num * 2
num *= 2;
System.out.println("num : " + num);
>>> 위의 '-5'식에서 도출된 값(10)에서 *2된 값(20) 출력

4) 2배 감소

// num = num / 2
num /= 2;
System.out.println("num : " + num);
>>> 위의 '*2'식에서 도출된 값(20)에서 /2된 값(10) 출력

👀 증감 연산자 (전/후위 연산)

  • 피연산자의 앞 or 뒤에 사용 가능
  • ++ : 1 증가의 의미
  • -- : 1 감소의 의미
int num = 20;

num++;
System.out.println("num : " + num);
>>> 21 출력
		
++num;
System.out.println("num : " + num);
>>> 22 출력

num--;
System.out.println("num : " + num);
>>> 21 출력
		
--num;
System.out.println("num : " + num);
>>> 20 출력

😈 Warning

다른 연산자와 함께 사용할 때는 전위/후위 연산의 구분이 필요

[1] 후위연산

int firstNum = 20;
int result1 = firstNum++ * 3; 
System.out.println("result1 : " + result1);
>>> 후위연산은 다른 연산들이 진행된 후, 마지막에 계산 (20*3=60)
System.out.println("firstNum : " + firstNum);
>>> 다른 연산들이 진행되었으므로 +1 (20+1=21)

[2] 전위연산

int secondNum = 20;
int result2 = ++secondNum * 3; // result2 = 63, 
System.out.println("result2 : " + result2);
>>> 전위연산은 가장 먼저 계산하므로 ((20+1)*3=63)
System.out.println("secondNum : " + secondNum);
>>> 원래 가장 먼저 계산하므로 (20+1=21)

따라서, 전위/후위 연산자들이 홀로 있다면 값은 같지만, 다른 연산이 더해지면 계산 순서가 다르므로 값 또한 다름


👀 논리 연산자

💁‍ 논리 값(true or false)을 취급하는 연산자

1) 논리연산자의 활용

[1] 1부터 100사이의 값인지 확인

>>> 1 <= 변수 <= 100 대신,
>>> 변수 >= 1 && 변수 <= 100 이런 형태로 구성

int num1 = 30;
System.out.println("1부터 100사이인지 확인 : " + (num1 >= 1 && num1 <= 100)); 
>>> &&(and) 둘다 충족해야만 true 값 출력

[2] 영어 대문자인지 확인

char ch1 = 'W';
System.out.println("영어 대문자인지 확인 : " + (ch1 >= 65 && ch1 <= 90)); 
>>> 대문자의 아스키코드 범위인 65~90을 지정하여 ch1이 65부터 90중에 하나인가?로 대문자 여부를 알 수 있음
System.out.println("영어 대문자인지 확인 : " + (ch1 >= 'A' && ch1 <= 'Z'));
>>> 문자도 비교연산자에 대입이 가능하므로 이 식으로도 대문자 여부 알 수 있음

[3] 대소문자 상관없이 영문자 y인지 확인

char ch2 = 'Y';
System.out.println("대소문자 상관없이 영문자 y인지 확인 : " + (ch2 == 'y' || ch2 == 'Y')); 
>>> '같다'를 표현할 때, 비교연산자인 '=='를 사용해야함.

[4] 영문자인지 확인

>>> && : 11순위
>>> || : 12순위
>>> && 연산자가 || 연산자보다 우선순위가 높음
>>> 연산자 우선순위를 고려한다면 and 연산이 먼저 수행되기 대문에 괄호는 묶지 않아도 되지만,
>>> 논리적으로 먼저 실행하는 내용을 괄호로 묶어주면 코드의 가독성 향상

char ch3 = 't';
System.out.println("영문자인가요? : " + ((ch3 >= 'A' && ch3 <= 'Z') || (ch3 >= 'a' && ch3 <= 'z')));
System.out.println("영문자인가요? : " + ((ch3 >= 65 && ch3 <= 90) || (ch3 >= 97 && ch3 <= 122)));

📌 Ref.

* 알파벳의 아스키코드
  [대문자] A : 65 - Z : 90
  [소문자] a : 97 -  z : 122

2) AND 연산과 OR 연산의 특징

  • 논리식 && 논리식 (AND 연산) : 앞의 결과가 false면 뒤를 실행하지않음
    (뒤를 볼 것도 없이 false)
  • 논리식 || 논리식 (OR 연산) : 앞의 결과가 true면 뒤를 실행하지않음
    (뒤를 볼 것도 없이 true)

[1] AND 연산

>>> 연산의 횟수를 줄이기 위해서는 &&연산의 경우 false가 나올 가능성이 높은 조건을 작성하는 편이 좋음

int num1 = 10;
int result1 = (false && ++num1 > 0) ? num1 : num1; 
>>> 앞이 이미 false라 뒤의 (++num1 > 0)는 전혀 실행하지않아 num1은 +1되지않고 처음 값 그대로 10 (dead code)
System.out.println("&&실행 확인 " + result1);

[1] OR 연산

>>> 연산의 횟수를 줄이기 위해서는 ||연산의 경우 true가 나올 가능성이 높은 조건을 작성하는 편이 좋음

int num2 = 10;
int result2 = (true || ++num2 > 0) ? num2 : num2;
>>> 앞이 이미 true라 뒤의 (++num2 > 0)는 전혀 실행하지않아 num2는 +1되지않고 처음 값 그대로 10 (dead code)
System.out.println("||실행 확인 " + result2);

📌 Ref.

* 삼항 연산자
  (조건식) ? true일 때의 값 : false일 때의 값;

👀 삼항 연산자

  • (조건식) ? 참일 때 사용할 값 : 거짓일 때 사용할 값;

    📌 Ref.

* 사용 목적
  : 간략하게 한 눈에 보기 좋아서 if 대신 사용 
   (복잡한 식의 경우, if 사용)
int num1 = 10;
int num2 = -10;
		
String result1 = (num1 > 0) ? "양수이다." : "양수가 아니다.";
String result2 = (num2 > 0) ? "양수이다." : "양수가 아니다.";
System.out.println("num1은 " + result1);
>>> "양수이다." 출력
System.out.println("num2는 " + result2);
>>> "양수가 아니다." 출력

1) 삼항 연산자 중첩 사용

// 양수, 0, 음수 판별
int num3 = 5;
int num4 = 0;
int num5 = -5;
		
String result3 = (num3 > 0) ? "양수이다." : (num3 == 0) ? "0이다." : "음수이다.";
String result4 = (num4 > 0) ? "양수이다." : (num4 == 0) ? "0이다." : "음수이다.";
String result5 = (num5 > 0) ? "양수이다." : (num5 == 0) ? "0이다." : "음수이다.";
System.out.println("num3은 " + result3);
System.out.println("num4은 " + result4);
System.out.println("num5은 " + result5);
		
int t = 0;
String resultT = (t > 0) ? "양수" : (t == 0) ? "0" : "음수";
>>> (t는 0보다 큰가?) 그렇다면 양수 : (아니면 0인가?) 그렇다면 0 : 아니면 음수 
System.out.println("t는 " + resultT);

profile
Tiny little habits make me

0개의 댓글

관련 채용 정보