[DEV] J-Jay

정수/실수/산술연산자 본문

Back-end/Java

정수/실수/산술연산자

J-Jay 2023. 2. 16. 23:07
728x90
정수형 타입
타입 byte short int long
크기 1byte 2byte 4byte 8byte
범위 -128 ~ 127 -2^15 ~ (2^15 -1) -2^31 ~ (2^31 -1) -2^63 ~ (2^63-1)
리터럴 타입 접미사 - - - L or l
byte a = 1;
short b = 2;
int c = 3;
long d = 10L; // long 타입은 숫자 뒤에 L 또는 l을 붙인다. (l과 1을 착각하기 쉬워 대문자를 사용하는게 좋다)

 

실수형 타입
타입 float double
크기 4byte 8byte
범위 3.4 x 10^-38 ~ 3.4 x 10^38 1.7 x 10^-308 ~ 1.7 x 10^308
리터럴 타입 접미사 F or f D or d (생략가능)
지수의 길이 8bit 11bit
가수의 길이 23bit 52비트
유효 자리 소수 6자리까지 오차없이 표현 소수 15자리까지 오차없이 표현

 

산술 연산자
산술 연산자
+ a = 1  + 2;
- b = 5 - 3;
* c = 2 * 4;
/ d = 6 / 2;
% e = 3 % 2;
증가/감소 연산자
++ ++a(전위 증가 연산자) / a++(후위 증가 연산자) 
-- --b(전위 감소 연산자) / b--(후위 감소 연산자) 
산술 대입 연산자
+= a = 5;
a += 3; ( a = a + 3)
-= b = 2;
b -= 2; ( b = b - 2)
*= c = 6;
c *= 2; ( c = c * 2)
/= d = 8
d /=2; ( d = d / 2)
%= e = 10;
e %=2; ( e = e % 2)
정수(int)와 실수(double)의 최솟값과 최댓값 구하기
public class Test {
    public static void main(String[] args){
        int minInt = Integer.MIN_VALUE;
        int maxInt = Integer.MAX_VALUE;
        double minDouble = Double.MIN_VALUE;
        double maxDouble = Double.MAX_VALUE;

        System.out.println(minInt); // -2147483648
        System.out.println(maxInt); // 2147483647
        System.out.println(minDouble); //4.9E-324
        System.out.println(maxDouble); //1.7976931348623157E308
    }
}
최솟값과 최대값에 각각 -1, +1을 해주면 어떻게 될까?
public class IntOverflow {
    public static void main(String[] args){
        int minInt = Integer.MIN_VALUE;
        int maxInt = Integer.MAX_VALUE;

        System.out.println(minInt -1 ); // 2147483647
        System.out.println(maxInt + 1); // -2147483648

    }
}

위와 같이 최소값보다 작을 경우 음수는 양수로, 양수는 음수로 바뀌는 문제가 발생한다

이를 Overflow 라고 한다

'Back-end > Java' 카테고리의 다른 글

CHAR 문자 타입  (0) 2023.02.19
형 변환  (0) 2023.02.18
논리형 TYPE/연산자  (0) 2023.02.15
변수/리터럴(literal)  (0) 2023.02.14
Java 컴파일  (0) 2023.02.12