거북이처럼 천천히

Java - 숫자 자료형 본문

Back-end/Java 개념

Java - 숫자 자료형

유로 청년 2022. 5. 29. 02:35

숫자(Number)

숫자 자료형은 크게 정수형(Integer)와 실수형(Real number), 8진수, 16진수 등으로 이루어져 있으며, 데이터의 타입에 따라 그에 맞는 자료형을 선언하여 대입해야 한다.

 

정수(Integer)  (int, long)

정수를 표현하기 위한 자료형은 byte, short, int, long이 있다. (byte, short은 잘 사용하지 않는다.)

각 자료형의 차이는 표현할 수 있는 숫자의 범위이다.

Java 의 primitive data type 정리 표

다음과 같이 사용한다.

int age = 28;
long number1 = 8764827384923849L;
short idNumber = 123;
  • long 자료형에 변수를 대입할 때는 L 접미사를 붙어 주어야한다. 
  • 그 이유는 Java는 기본적으로 숫자 연산을 int형으로 인식하기 때문이다.
  • 따라서 long형에 데이터를 대입하기 위해서는 리터럴에 L를 붙어야 Java는 이를 Long 자료형의 숫자임을 인식한다.
  • Java는 기본적으로 숫자 연산을 int형으로 계산하기 때문에 short 자료형을 통해 숫자 연산을 할 경우, 에러가 발생
  • short 형을 사용한다고 해서 데이터가 절약되지 않으며, 계산이 빨라지지 않기 때문에 일반적으로 int 형을 사용하는 것이 좋다.

 

실수(Real number) (float, double)

실수를 표현하기 위한 자료형은 float, double 이다.

각 자료형의 차이 역시 표현할 수 있는 숫자의 범위이다.

다음과 같이 사용한다.

float pi = 3.14F;
double morePi = 3.14159265358979323846;
  • float 자료형에 변수를 대입할 때도 F 접미사를 붙어 주어야한다. 
  • 그 이유는 Java는 기본적으로 실수 데이터를 double 형으로 인식하기 때문이다. 
  • 따라서 float형에 데이터를 대입하기 위해서는 리터럴에 F 를 붙어야 Java는 이를 float 자료형의 숫자임을 인식한다.
  • float 형은 소수점 이하 6자리까지 , double 형은 소수점 이하 15자리 까지 표현 가능하다.

 

8진수와 16진수 

8진수와 16진수는 int 자료형을 사용하여 표현한다.

0(숫자 '0')으로 시작하면 8진수, 0x(숫자 '0' + 알파벳 'x')로 시작하면 16진수가 된다.

int octal = 023;  // 십진수: 19
int hex = 0xC; // 십진수: 12

 

증감 연산자의 위치

증감 연산자의 형태와 위치에 따라서 의도치 않은 결과가 발생하여 실수하기 쉽다.

 

다음 예제를 통해 살펴보자

int i = 0;
System.out.println(i++);  // 출력 0
System.out.println(i);   // 출력 1
  • 분명히 증감 연산자에 의해 System.out.println(i++) 의 출력 값은 1이여야 하지만, 0이 출력되었다.
  • 하지만, System.out.println(i) 의 출력 값에서는 1로 출력되어 증감되었음을 확인했다.
  • 그 이유는 증감 연산자(++)의 위치 때문이다. 즉, i++ 와 같이 ++연산자가 변수 뒤에 있으면 1) 실행하고 2) i값이 증가한다. 이와 반대로 ++i 은 1) i값을 증가하고 2) 실행한다.

 

++i : 값을 증가하고, 그 다음에 값을 참조한다.
i++ : 값을 먼저 참조하고, 그 다음에 값을 증가시킨다.
int i = 0;
System.out.println(++i);  // 출력 1
System.out.println(i--); // 출력 1 

 

출처 (Reference)

  • https://anywhereifyoucan.com/283
  • https://devraphy.tistory.com/472?category=1047961

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

Java - List  (0) 2022.06.02
Java - 배열  (0) 2022.06.01
Java - String Formatting  (0) 2022.05.30
Java - 문자열  (0) 2022.05.30
Java - 불리언, 문자형  (0) 2022.05.29