혼자 공부하는 자바 - 3장. 연산자

youngtae·2023년 3월 25일
0

자바 이론

목록 보기
2/12
post-thumbnail

연산자와 연산식

  • 연산식은 반드시 하나의 값 산출
  • 연산식은 피연산자 위치에 가능

boolean result = (x+y) < 5;

  • 단항, 이항, 삼함 연산자 순으로 우선순위 가짐
  • 산술, 비교, 논리, 대입 연산자 순으로 우선순위 가짐
  • 단항, 부호, 대입 연산자를 제외한 모든 연산의 방향은 왼쪽에서 오른쪽
  • 복잡한 연산식에는 괄호 사용해서 우선순위 정하기

연산자의 종류

  • 단항 연산자
    • 피연산자가 1개
    1. 부호연산자
      • +100 , -100
      • 결과는 int 타입
    2. 증감연산자
      • i++, i - -
      • 변수가 연산자 앞에 있으면 대입 후 연산, 뒤에 있으면 연산 후 대
      • 1씩 증가시키거나 감소시킴
    3. 논리 부정 연산자 ( ! )
      • 조건값 부정
  • 이항 연산자
    1. 산술 연산자
    - +, -, *, /, %
    - 피연산자들이 byte, short, char 타입이면 모두 int 타입으로 변환 후 연산
    - 모두 정수 타입이고 long 타입이 포함되면, 모두 long 타입으로 변환 후 연산
    - 실수타입이 있을경우, 허용 범위가 큰 실수 타입으로 변환된 후 연산

    byte byte1 = 1;
    byte byte2 = 1;
    // 잘못된 코딩
    byte byte3 = byte1 + byte2;
    //올바른 코딩
    int result3 = byte1 + byte2;
    int int1 = 10;
    int int2 = 4;
    int result2 = int1/int2;  // 2
    double result3 = int1 / int2; // 2.0
    double result3 = (int1 * 1.0) / int2;  // 2.5
    double result3 = (double)int1 / int2;  // 2.5
     char c1 = 'A' + 1;  // 'A'의 유니코드가 65이므로 66이 됨
     char c2 = 'A';
     char c3 = c2 + 1; 
     // c2는 int 타입으로 변환되고 1과 연산되어 int타입이지만 char에 저장해서 에러 발생
     char c3 = (char) (c2 + 1); // B
  1. 문자열 결합 연산자 ( + )
      String str1 = "JDK" + 6.0;  //JDK6.0
      String str2 = str1 + "특징";  //JDK6.0특징
      
      "JDK" + 3 + 3.0;  // JDK33.0
      3 + 3.0 + "JDK";  // 6.0JDK
  2. 비교 연산자 ( <, ≤, ≥, ==, ! = )
    • 피연산자가 char 타입이면 유니코드 값으로 비교 연산 수행
    • 연산 전에 피연산자 타입 일치시켜서 연산 진행
    • 예외
      0.1 == 0.1f : false, 부동 소수점이 정확이 표현할 수 없어서 0.1f는 근사값으로 표현
      float 타입으로 변환해서 비교해야함
  1. 논리 연산자
  2. 대입 연산자
  1. 삼항 연산자
    - ? 앞의 조건식에 따라 콜론 앞뒤의 피연산자가 선택, 조건 연산

      int score = 95;
      char grade = (score > 90) ? 'A' : 'B';
      
      int score = 95;
      char grade;
      if(score>90){
      	grade = 'A';
      } else {
      	grade = 'B';
      }
profile
나의 개발기록

0개의 댓글