내일배움캠프 10일차 TIL - 연산자

iy·2023년 12월 30일

TIL

목록 보기
9/37

연산자와 피연산자에 대한 이해

  • 연산자 : 계산할 때 계산의 목적이 되는 것
    • 덧셈, 뺄셈처럼 계산할 기호
  • 피연산자 : 계산할 때 계산의 대상이 되는 것
    • 연산자로 인해 계산되는 숫자

연산자 종류

  • 산술연산자 : +, -, *, /, %, <<, >>
  • 비교연산자 : >, <, >=, <=, ==, !=
  • 논리연산자 : &&, ||, !=
  • 대입연산자 : =, ++, --
  • 기타연산자 : (type), ? :, instanceof

연산자 예시

  1. 산술연산자
        // 사칙연산
        System.out.println(4 + 2);
        System.out.println(4 - 2);
        System.out.println(4 * 2);
        System.out.println(4 / 2);
        System.out.println(5 / 2);
        System.out.println(2 / 4);
        System.out.println(4 % 2);
        System.out.println(5 % 2);
        System.out.println("========================");

        // 우선순위 연산
        System.out.println(2 +2 * 2);
        System.out.println((2+2)*2);
        System.out.println(2+(2*2)); //고의로 우선순위를 줬지만 주지 않을 때와 값이 같음 이미 우선순위인 연산에는 주지 않아도 됨

        // 변수를 이용한 연산
        int a = 20;
        int b = 10;
        int c;

        c = a+b;
        System.out.println(c);

        c = a-b;
        System.out.println(c);

        c= a*b;
        System.out.println(c);

        c= a/b;
        System.out.println(c);

        c=a%b;
        System.out.println(c);
  1. 비교 연산자
        System.out.println(10 > 9); // 10이 9보다 크니? : true
        System.out.println(10 >= 9); // 10이 9보다 크거나 같니? : true
        System.out.println(10 < 9); // 10이 9보다 작니? : false
        System.out.println(10 <= 9); // 10이 9보다 작거나 같니? : false
        System.out.println(10 == 10); // 10이 10이랑 같니? : true
        System.out.println(10 == 9); // 10이 9랑 같니? : false
        System.out.println(10 != 10); // 10이 10이 아니니? : false
        System.out.println(10 != 9); // 10이 9가 아니니? : true
  1. 논리연산자
        // 논리연산자
        // 비교 연산의 결과값으로 받을 수 있는 boolean 값을 연결하는 연산자
        // 조건을 연결 하였을 때 boolean 값들을 조합하여 참(true) 또는 거짓(false)값인 boolean값을 출력
        //&&(AND), ||(OR), !(NOT)

        boolean flag1 = true;
        boolean flag2 = true;
        boolean flag3 = false;

        System.out.println(flag1);
        System.out.println(flag2);
        System.out.println(flag3);

        // (1) 의 연산자 중 하나라도 true이면 true => 또는 (OR:||)
        System.out.println("======================");
        System.out.println(flag1 || flag2); // true
        System.out.println(flag1 || flag2 || flag3); // true

        //(2) 의 연산자 중 모두 true ==> 그리고 (AND:&&)
        System.out.println("======================");
        System.out.println(flag1 && flag2); // true
        System.out.println(flag1 && flag2 && flag3); // false

        //(3) AND
        System.out.println("======================");
        System.out.println((5 > 3) && (3 > 1)); // true && true => true
        System.out.println((5 > 3) && (3 < 1)); // true && false => false

        // (4)
        System.out.println("======================");
        System.out.println((5 > 3) || (3 > 1)); // true || true => true
        System.out.println((5 < 3) || (3 > 1)); // false || true => true
        System.out.println((5 < 3) || (3 < 1)); // false || false => false

//        System.out.println(2 < 3 < 5); // 불가능

        // 논리 부정 연산자 ( ! : NOT)
        System.out.println("======================");
        System.out.println(!flag1);//false
        System.out.println(!flag3);//true
        System.out.println(!(5==5));//false
        System.out.println(!(5==3));//true
  1. 대입 연산자
    		// 변수를 연산해서 그 자리에서 저장하는 연산자
        // =(기본연산자)
        // +=, -=, *= .... (복합대입연산자)
        // ++ : +=, -- : -=

        int number = 10;
        number = number +2;
        System.out.println(number);

        number = number-2;
        System.out.println(number);

        number = number * 2;
        System.out.println(number);

        number = number / 2;
        System.out.println(number);

        System.out.println("================");

        // 복합대입연산자
        number =10;

        number += 2; // number = number +2;
        System.out.println(number);

        number -= 2;
        System.out.println(number);

        number *= 2;
        System.out.println(number);

        number /= 2;
        System.out.println(number);

        number %= 2;
        System.out.println(number);

        // ++ , --
//        number = number+1;
//        number +=1;
        System.out.println("================");
        number++;
        System.out.println(number);
  • ++,--연산 중 주의할 점
        // 대입연산자에서 주의해야 하는 점
        // ++, --
        int a = 10;
        int b = 10;
        int val = ++a + b-- ; // 11 + 9 = 20이라 예상
        System.out.println(val); // 21
        // 예상과 다른 이유 :
        // ++a는 ++a + b--  연산 전에 a값을 먼저 연산
        // b--는 ++a + b--  연산 후에 b값을 연산
        val = ++a + --b ;
        System.out.println(val); // 20
  1. 기타연산자
        // 기타연산자
        // (1) 형변환 연산자
        int intNumber = 93 + (int)98.8;
        System.out.println(intNumber);

        double doubleNumber = (double)93 + 98.8; // 93.0 + 98.8
        System.out.println(doubleNumber);

        //(2) 삼항 연산자
        // 비교연산자와 항상 함께 쓰인다.
        // 비교연산자의 결과 : true or false -> 이 결과의 값에 따라 결정되는 무언가
        // 조건? 참 : 거짓
        int x =1;
        int y =9;

        boolean b = (x == y)? true : false;

        // x 와 y랑 다르니?
        String s = (x != y)? "정답" :"오답";
        System.out.println(s);

        int max = (x > y) ? x : y;
        System.out.println(max);

        int min = (x < y) ? x : y;
        System.out.println(min);

        // (3) instanceof(3주차에 클래스와 객체 배우면서 자세히..)
        // 피 연산자가 조건에 명시된 클래스의 객체인지 비교히여
        // 맞으면 -> true, 틀리면 -> false

  • 연산자의 우선순위
    • 산술 > 비교 > 논리 > 대입
    1. 연산자 여러개가 함께 있는 연산을 계산할 때 우선순위가 있음
    2. 위 우선순위에 따라 최종적인 응답값 결정
    3. 단, 괄호로 감싸주면 괄호 안의 연산이 최우선순위로 계산
        int x = 2;
        int y = 9;
        int z = 10;

        boolean result = x < y && y < z; // true && true
        System.out.println(result);
        System.out.println("=======");

        result = x + 10 < y && y < z; // false ~~~ 이미 앞 연산이 false가 나왔고 &&로 비교 연산을 하니까 뒤에는 안 봐도 false
        System.out.println(result);
        System.out.println("=======");

        result = x + 2 + 3 > y;
        System.out.println(result);
        System.out.println("=======");

        result = (x+2)*3 > y;// true
        System.out.println(result);
  • 연산 전 두 피연산자의 타입이 다른 경우 타입을 일치 시킴
    • 두 피연산자의 타입을 같게 일치시킴 (둘 중에 저장공간 크기가 더 큰 타입으로 일치)

  • 비트 연산자
- Byte 를 8등분한게 8bit
- Bit는 0,1 둘 중의 하나의 값만을 저장하는 컴퓨터가 저장 가능한 가장 작은 단위
- 컴퓨터의 가장 작은 단위로 가장 빠른 연산
- 8bit의 자리수를 옮기는 것
- '<<(왼쪽으로 자리수 옮기기)', '>>(오른쪽으로 자리수 옮기기)'
- 0,1은 2진수 값
        - 자리수를 왼쪽으로 옮기는 횟수만큼 2의 배수로 곱셈이 연산되는 것
        - 자리수를 오른쪽으로 옮기는 수만큼 2의 배수로 나눗셈이 연산되는 것 
                - 1010 -> 0101 ( 10 -> 5)

👀 2주차 강의를 듣기 시작했다. 아직까지는 어려움없이 잘 듣고 있다. 아는 내용이라고 방심하지 말고 잘 듣고 정리해야겠다. 오늘은 일정이 있어서 강의를 짧게 들었지만 남은 강의는 빠르게 다 들어봐야겠다.

🐾 목표
12/ 31일까지 java 강의 1회독 하기

0개의 댓글