검수요청.png검수요청.png

정수형

해시넷
218.146.11.63 (토론)님의 2021년 7월 13일 (화) 14:06 판 (자동 타입 변환)
이동: 둘러보기, 검색

int란 정수형을 처리하기 위한 변수로, 정수형(integer)의 약자이다.[1]


개요

int는 정수형을 처리하기 위한 변수로, char와 같은 구조와 특성을 가지며 char는 모든 CPU에서 무조건 8비트인데 비해, 16, 32, 64비트의 처리 단위로 CPU마다 다르다는 차이가 있다. 보통 8비트 CPU는 16비트의 처리 단위를 가지며, 32비트 CPU이면 32비트의 처리 단위를 갖는 것이 일반적인 정수형 처리이다. char와 마찬가지 CPU의 ALU을 사용하여 연산 처리한다. 8비트 CPU는 16비트 처리 단위인 int의 16비트를 처리하기 위해 여러 개의 기계어 코드를 사용한다. 따라서 8비트 CPU는 32비트 CPU보다 처리 시간이 더 걸린다.[1]

크기

정수형 타입

변수 선언

자바(Java)에서 변수를 사용하기 전에 반드시 먼저 변수를 선언하고 초기화해야 한다.

변수

변수(variable)란 데이터를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간을 의미한다. 즉, 변수란 데이터를 저장할 수 있는 메모리 공간을 의미하며, 이렇게 지정된 값은 변경될 수 있다. 또한 변수는 타입에 따라 크게 기본형(primitive type)변수와 참조형(reference type)변수로 구분할 수 있다. 기본형 변수는 실제 연산에 사용되는 변수다. 자바에서는 8가지의 기본형 변수를 제공하고 있다. 정수형인 byte, short, int, long을 제공하고, 실수형인 floatdouble, 문자형인 char, 논리형인 boolean을 제공한다. 참조형 변수는 8개의 기본형 변수를 사용하여 사용자가 직접 만들어 사용하는 변수를 의미한다.

변수의 이름 생성 규칙

자바에서는 변수뿐만 아니라 클래스(class), 메소드(method)등의 이름을 짓는데 반드시 지켜야 하는 공통된 규칙이 있다.

  • 변수의 이름은 영문자(대소문자), 숫자, 언더스코어(_), 달러($)로만 구성할 수 있다.
  • 변수의 이름은 숫자로 시작할 수 없다.
  • 변수의 이름 사이에는 공백을 포함 할 수 없다.
  • 변수의 이름으로 자바에서 미리 정의된 키워드(keyword)는 사용할 수 없다.

그리고 변수의 이름은 해당 변수에 저장될 데이터의 의미를 잘 나타내도록 짓는 것이 좋다.

변수 선언만 하는 방법

이 방법은 먼저 변수를 선언하여 메모리 공간을 할당 받고, 나중에 변수를 초기화 하는 방법이다. 하지만 이렇게 선언만 된 변수는 초기화되지 않으므로, 해당 메모리 공간에는 알 수 없는 값들이 들어가 있다. 따라서 선언만 된 변수는 반드시 초기화한 후에 사용해야 한다. 자바에서는 프로그램의 안전성을 위해 초기화하지 않는 변수는 사용할 수 없도록 하고 있다. 만약 초기화되지 않은 변수를 사용하려고 하면, 자바 컴파일러는 오류를 발생 시킬 것이다.

타입 변수이름;
int num;                  // 변수의 선언
System.out.println(num);  // 오류 발생
num=10;                   // 변수의 초기화
System.out.println(num);  // 10

위에 내용처럼 정수를 저장하기 위한 메모리 공간을 할당 받으면, 반드시 해당 타입의 데이터만 저장해야 한다. 만약 다른 타입의 데이터를 저장하려고 하면, 자바 컴파일러는 오류를 발생 시킬 것이다.

변수 선언 동시에 초기화 하는 방법

자바에서는 변수의 선언과 동시에 그 값을 초기화할 수 있다. 그리고 선언하고자 하는 변수들의 타입이 같다면 이를 동시에 선언도 가능하다.

타입 변수이름,변수이름;                         // 같은 타입의 변수를 동시에 선언한다.
타입 변수이름 =  초기화값, 변수이름 = 초기화값;  // 같은 타입의 변수를 동시에 선언하면서 초기화한다.
int num1,num2;                   // 같은 타입의 변수를 동시에 선언한다.
int num3 = 3;                    // 선언과 동시에 초기화 한다.
double num4 = 1.23, num5 = 9.87  // 같은 타입의 변수를 동시에 선언하면서 초기화한다.

위에 내용처럼 선언하고자 하는 변수의 타입이 서로 다르면 동시에 선언할 수 없고, 여러 변수를 동시에 초기화할 수 없다.

// 잘못된 예시

int num1,num2;       // 같은 타입의 변수를 동시에 선언한다.
  ...
num1 = 2, num2 = 3;  // 이미 선언된 여러 변수를 동시에 초기화 할 수는 없다.

만약 위에 예제처럼 변수의 초기화를 동시에 하려면, 자바 컴파일러는 오류를 발생 시킬 것이다.[2]

타입 변환

타입 변환(type conversion)은 하나의 타입을 다른 타입으로 바꾸는 것을 말하며, 자바에서는 boolean형을 제외한 나머지 기본 타입 간의 타입 변환을 자유롭게 수행이 가능하다. 다른 타입끼리의 연산은 우선 피연산자들을 모두 같은 타입으로 만든 후에 수행하는데, 메모리에 할당 받은 바이트의 크기가 상대적으로 작은 타입에서는 큰 타입으로의 타입 변환은 생략할 수 있다. 하지만 메모리에 할당 받은 바이트의 크기가 큰 타입에서 작은 타입으로의 타입 변환은 데이터의 손실이 발생하므로 자바 컴파일러는 오류를 발생 시킬 것이다. 자바에서는 타입 변환을 크게 자동 타입 변환(묵시적 타입 변환, implicit conversion)과 강제 타입 변환(명시적 타입 변환, explicit conversion)으로 나뉜다.

자동 타입 변환

자동 타입 변환(묵시적 타입 변환, implicit conversion)이란 대입 연산이나 산술 연산에서 컴파일러가 자동으로 수행해주는 타입 변환을 말한다. 자바에서는 데이터의 손실이 발생하지 않거나, 데이터의 손실이 최소화되는 방향으로 자동 타입 변환을 진행하고 데이터의 손실이 발생하는 대입 연산은 허용하지 않는다.

double num1 = 10;
//int num2 = 3.14;
double num3 = 7.0f + 3.14;

System.out.println(num1);
System.out.println(num3);

실행 결과

10.0
10.14

위 내용에 맨 윗 줄에서는 double형 변수에 int형 데이터를 대입하므로, int형 데이터가 double형으로 자동 타입 변환된다. 하지만 주석 처리된 두 번째 줄에서는 int형 변수가 표할 수 있는 범위보다 더 큰 double형 데이터를 대입하므로 데이터 손실이 발생하기 때문에 이 대입 연산에는 자바 컴파일러가 오류를 발생 시킬 것이다. 세 번째 줄에서는 float형 데이터와 double형 데이터의 산술 연산을 수행하는데, 이때도 데이터의 손실이 최소화 되도록 float형 데이터가 double형으로 자동 타입 변환됩니다.

byte형 → short형 → int형 → long형 → float형 → double형
           char형 ↗

자바에서는 타입의 표현 범위에 따라 위에 내용과 같은 방향으로 자동 타입 변환이 이루어진다.

강제 타입 변환

각주

  1. 1.0 1.1 int (C 프로그래밍 언어)〉, 《위키백과》
  2. 7)변수〉, 《TCP SCHOOL》

참고자료

같이 보기


  검수요청.png검수요청.png 이 정수형 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.