[JAVA] 변수와 제어문 _ 연산자

김나영·2022년 8월 5일
0

JAVA

목록 보기
3/14

연산자

-산술 연산자

  • 정수 연산 : 더하기, 빼기, 곱하기, 몫, 나머지
  • 실수 연산 : 더하기, 빼기, 곱하기, 나누기, 나머지
  • 몫과 나머지를 이용한 연산이 많이 사용됨
    • 25의 앞자리와 뒷자리 분리 : 25를 10으로 나눈 몫은 2, 나머지는 5
    • 짝수와 홀수 : 2로 나눈 나머지가 0이면 짝수, 1이면 홀수
    • 3의 배수 : 3으로 나눈 나머지가 0이면 3의 배수
    • 0~6 사이 값 사용 : 7로 나눈 나머지를 사용

int a;
int b;
int result1 = a + b;
int result2 = a - b;
int result3 = a * b;
int result4 = a / b; // 몫
int result5 = a % b; // 나머지

-증감 연산자

  • 1씩 증가하거나 감소하는 연산
  • 증가는 ++, 감소는 -- 를 사용한다.

* 전위 연산 (pre operator)

++a : 변수 a의 값을 1 증가시키고 사용한다.

* 후위 연산 (post operator)

a++ : 변수 a의 값을 사용하고 나서 1 증가시킨다.

-대입 연산자

  • 등호 ( = ) 오른쪽의 값을 왼쪽으로 대입한다

int score = 100; // score → 100

ex)

x , y 의 저장된 값을 서로 교환하기

int x = 10;
int y = 20;
int temp = x;
x = y;
y = temp;
System.out.println(x);
System.out.println(y);

복합 대입 연산자

  • += , -= , *= , /= , %= 등
int wallet = 0;
wallet = wallet + 5000;
wallet += 5000;    // wallet = wallet + 5000;
waller -= 3000;    // waller = wallet - 3000;

ex)

통장 잔액 (balance)에서 이자 5%를 받았음

long balance = 10000;
balance *= 1.05   // balance 를 double 로 promotion해서 처리한다.
System.out.println(balance);
// balance = balance * 1.05; -> 실패. balance * 1.05의 결과는 double이기 때문에 long balance에 저장할 수 없다.
// balance = (long)(balance * 1.05); -> 성공. balance * 1.05 결과를 long으로 casting해서 저장할 수 있다.
// balance = balance + balance * 0.05; -> 실패. balance * 0.5 결과는 double이기 때문에 long balance에 저장할 수 없다.
// balance = (long)(balance + balance * 0.05); -> 성공. balance * 0.05 결과를 long으로 casting 해서 저장할 수 있다.

-비교 연산자

  • 값을 비교하여 boolean 결과 (true, false)를 반환함
    • 초과 : > 크면 true
    • 미만 : < 작으면 true
    • 이상 : >= 크거나 같으면 true
    • 이하 : <= 작거나 같으면 true
    • 같다 : == 같으면 true
    • 다르다 : != 다르면 true

-논리 연산자

  • 논리 AND : && , 모두 true이면 true / 하나라도 false 이면 false
  • 논리 OR : || , 하나라도 true이면 true / 모두 false 이면 false
  • 논리 NOT : ! , true는 false / false 는 true
  • Short Circuit Evaluation : 논리 AND나 논리 OR의 연산 결과를 이미 알고 있는 경우 더 이상 연산을 진행하지 않는 것을 의미함
    • 논리 AND : false가 발생하면 더 이상 진행하지 않는다. 최종 결과는 false 이므로
    • 논리 OR : true가 발생하면 더 이상 진행하지 않는다. 최종 결과는 true 이므로

ex)

변수 n보다 10 증가시킨 뒤 n이 100보다 크다면 true 아니면 false

int n = 95;
n += 10;
boolean result = n > 100;     // boolean result = (n += 10) > 100
System.out.println(n);        // 105
System.out.println(result);   // true

ex)

변수 x를 1 증가시킨 뒤 x가 10과 같으면 true 아니면 false

int x = 9;
x += 1;
boolean result = x == 10;     // boolean result = (++x) == 10;
System.out.println(x);        // 10
System.out.println(result);   // true

ex)

Short Circuit Evaluation

int i = 10;
int j = 10;
boolean result = ( i == 20 ) && ( ++j == 11);   // i가 false가 나왔기 때문에 이후 j연산은 진행하지 않으므로 j = 10
System.out.println(result);     			 	// false
System.out.println(j);      // 11이 아니라 10
boolean result = ( i == 10 ) || ( ++j == 11 );   // i가 true가 나왔기 때문에 이후 j연산은 진행하지 않으므로 j = 10
System.out.println(result);
System.out.println(j);    						 // 10

-조건 연산자

  • 조건을 만족하는 경우와 그렇지 않은 경우 모두를 처리하는 연산
  • 3개의 항을 사용하기 때문에 삼항 연산자라고 함
  • 형식 : 조건 ? 만족하는 경우 : 만족하지 않는 경우

ex)

순위가 1이면 "금메달", 순위가 2이면 "은메달", 순위가 3이면 "동메달", 나머지 순위는 "없음"

int rank = 1;
String medal = (rank == 1) ? "금메달" : (rank == 2) ? "은메달" : (rank == 3) ? "동메달" : "없음";

ex)

홀수는 "홀수", 짝수는 "짝수" ( 홀수 - 2로 나눈 나머지가 1인 수 / 짝수 - 2로 나눈 나머지가 0인 수 )

int n = 3;
String type = ( n % 2 == 1 ) ? "홀수" : "짝수";

ex)

홀수는 "홀수", 짝수는 "짝수", 3의 배수는 "3의 배수" ( 3의 배수 - 3으로 나눈 나머지가 0인 수. 단, 0은 고려하지 않는다.)

int a = 27;
String type2 = ( a % 3 == 0 ) ? "3의 배수" : ( a % 2 == 1 ) ? "홀수" : "짝수";

ex)

주민등록번호 뒷 7자리 중 첫번째 숫자가 1,3,5 이면 "남자", 2,4,6이면 "여자"

int serial = 1234567;
String gender = ((serial / 1000000) % 2 == 1) ? "남자" : "여자";
profile
응애 나 애기 개발자

0개의 댓글