ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 이것이 자바다 3장
    JAVA 2022. 11. 27. 23:55

    *공부하고 기록하는 글입니다*

     

    CH03. 연산자

     

    3.1 부호/증감 연산자

     

    - 부호 연산자는 변수의 부호를 유지하거나 변경함

    연산식 설명
    + 피연산자 피연산자의 부호 유지
    - 피연산자 피연산자의 부호 변경

    - 주의할 점은 정수 타입(byte, short, int) 연산의 결과는 int!!!! => 부호를 변경하는 것도 연산이니까 int 타입 변수에 대입해야한다.

    byte b = 100;
    byte result = -b; // 컴파일 에러
    
    byte b = 100;
    int result = -b; // ok

    - 증감 연산자 ++, -- 는 변수 크기를 +1, -1 해줌

    연산식 설명
    ++ 피연산자 피연산자의 값을 1 증가
    -- 피연산자 피연산자의 값을 1 감소
    피연산자 ++ 다른 연산 수행한 후에 피연산자 값을 1 증가
    피연산자 -- 다른 연산 수행한 후에 피연산자 값을 1 감소

    - 변수 단독으로 증감 연산자가 사용되면 연산자 위치는 상관없음

    - 그러나 여러 개의 연산자가 포함되어 있는 연산식에서는 위치에 따라 값이 달라져!

    - 변수 앞에 연산자가 있으면 +1 또는 -1 먼저 일어나고, 뒤에 있으면 모든 연산을 끝낸 후에 +1 또는 -1 을 해줌

    int a = 10;
    int b = 10;
    int result1 = ++a + 100; // a = 11, result1 = 111
    int result2 = b++ + 100; // b = 11, result2 = 110

     

    3.2 산술 연산자

     

    - 산술 연산자는 +, -, /, *, %(나머지) - 5개

     

     

    3.3 오버 플로우와 언더 플로우

     

    - 오버플로우란 타입이 허용하는 최대값을 벗어나는 것을 말함

    - 언더플로우란 타입이 허용하는 최소값을 벗어나는 것을 말함

    - 정수 타입 연산에서 오버플로우/언더플로우가 일어나면 에러 발생하는게 아니고! 해당 정수 타입의 최소값 또는 최대값으로 되돌아간다!

    - byte 타입의 경우

       -> 127 + 1 != 128 

       -> 127 + 1 = -128

       -> -128 + 1 = -127

       -> 이렇게!

    - 따라서 연산 과정에서 오버플로우/언더플로우가 예상 된다면 범위가 더 큰 타입을 사용하도록

     

     

    3.4 정확한 계산은 정수 연산으로

     

    - 산술 연산을 정확하게 계산하고 싶다면 실수 타입을 사용하지 말라고 한다.

     

    3.5 나눗셈 연산 후 NaN과 Infinity 처리

     

    - 나눗셈 또는 나머지 연산에서 정수를 0으로 연산 하는 경우 (정수number/0 또는 정수number%0) 예외가 발생!

    - 무한대의 값을 정수로 표현하는건 불가능하기 때문

    - but 실수를 0.0이나 0.0f로 나눗셈/나머지 연산하는 경우에는 예외가 발생하지 않고 연산의 결과는 Infinity 또는 NaN이 된다!

    - 결과가 Infinity 나 NaN인 상태에서 계속 연산을 하면 안된다!!!

    - Infinity 나 NaN 상태인지 확인하기 위한 메소드는 -> Double.isInfinite(변수) 또는 Double.isNaN(변수)

    - 분기처리 할때 사용하기

     

    3.6 비교 연산자

     

    - 비교 연산자는 동등(==, !=) 또는 크기 (<,<=,>=,>)를 평가해서 boolean 타입인 true/false 를 산출한다.

    - 피연산자 타입이 다른 경우에는 비교 연산을 수행하기 전에 타입을 일치시킨다.

    - 문자열을 비교할 때는 동등 (==, !=) 연산자 대신 equals()와 !equals()를 사용하기

     

    3.7 논리 연산자

     

    - 논리 연산자는 논리곱(&&), 논리합(||), 배타적 논리합(^), 논리 부정(!)

    - 배타적 논리합(XOR)은 하나는 true 이고, 다른 하나는 false 일 때 true~

     

    3.8 비트 논리 연산자

     

    - 비트 논리 연산자는 bit 단위로 논리 연산을 수행

    - 0과 1이 피연산자가 되니까 -> 2진수로 저장되는 정수 타입(byte, short, int, long) 만 피연산자가 될 수 있어!

    - AND(논리곱) - & : 두 비트 모두 1일 경우에만 연산 결과가 1

    - OR(논리합) - | : 두 비트 중 하나만 1이면 결과는 1

    - XOR(배타적 논리합) - ^ : 두 비트 중 하나는 1, 다른 하나는 0 이면 결과는 1

     

    3.9 비트 이동 연산자

     

    - 비트 이동 연산자는 비트를 좌측 또는 우측으로 밀어서 이동시키는 연산을 수행한다.

    - a << b : 정수 a의 각 비트를 b만큼 왼쪽으로 이동, 오른쪽 빈자리는 0으로 채움, a * 2^b 와 같음

    - a >> b : 정수 a의 각 비트를 b만큼 오른쪽으로 이동, 왼쪽 빈자리는 0으로 채움, a / 2^b 와 같음

    - a >>> b : 정수 a의 각 비트를 b만큼 오른쪽으로 이동

     

    'JAVA' 카테고리의 다른 글

    이것이 자바다 2장  (0) 2022.11.27
    이것이 자바다 1장  (0) 2022.11.27
    이것이 자바다 6장 5-9  (0) 2022.11.20
Designed by Tistory.