Java Study

Integer VS int 의 차이

Z00_HWAN_99 2024. 6. 18. 21:23
728x90
반응형

혹시 여러분들 Integer와 int 의 차이에 대해서 궁금해하시거나 차이점을 알고 계신가요~?

문득 알고리즘과 자바 공부를 하며 갑자기 궁금증이 생겨 이렇게 글을 작성해봅니다.
찾아보니 자바(Java)에서 Integer와 int는 모두 정수를 다루는 데 사용되지만, 그 사용 방식과 특성에는 중요한 차이가 있습니다.
아래에서 각각의 설명과 차이점을 자세히 설명해보겠습니다.

 

int란?

  • int는 자바의 기본 데이터 타입(primitive data type)으로, 32비트 정수를 저장함.

int의 특징?

  • 기본 타입(Primitive Type) : int는 자바의 8가지 기본 데이터 타입 중 하나. 기본 타입은 객체가 아니므로, 추가적인 메서드나 속성을 가지지 않음.
int a = 10;
int b = 20;
int sum = a + b; // 기본적인 산술 연산이 가능하다
  • 메모리 효율성 : 기본 타입은 객체가 아니므로, 상대적으로 메모리 사용이 효율적. 객체를 생성하지 않으므로 오버헤드가 없음.
  • 값 저장 : 기본 타입 변수는 실제 값을 직접 저장.
int x = 5;
int y = x; // x의 값을 y에 할당
y = 10;
System.out.println(x); // 결과 값은 5가 출려됨, x는 y에 의해 영향을 받지 않음

 

Integer란?

  • Integer는 자바의 래퍼 클래스(wrapper class)로, int 값을 객체로 다룸. 이는 java.lang 패키지에 포함되어 있음.

Integer의 특징?

  • 래퍼 클래스(Wrapper Class) : Integer는 기본 타입 int를 객체로 다루기 위해 사용됨. 기본 타입을 객체로 변환하는 것은 박싱(Boxing)이라 부르며, 객체를 기본 타입으로 변환하는 것은 언박싱(Unboxing)이라 부름.
Integer a = 10; // 자동 박싱 (Auto-Boxing)
int b = a; // 자동 언박싱 (Auto-Unboxing)
  • 메서드 제공 : Integer 클래스는 정수 값을 다루기 위한 다양한 메서드를 제공.
  • Ex) parseInt(), toString(), compareTo(), equals() 
String str = "123";
int num = Integer.parseInt(str); // 문자열을 정수로 변환
  • 참조 타입(Reference Type) : Integer는 객체이므로, 기본 타입과 다르게 참조를 저장. 이는 값 자체를 저장하는 것이 아니라, 값을 가리키는 참조(메모리 주소)를 저장하는 것.
Integer x = 5;
Integer y = x; // x의 참조를 y에 복사
y = 10;
System.out.println(x); // 결과 값은 5가 출려됨, x는 y에 의해 영향을 받지 않음
  • null 값 허용 : Integer는 객체이므로 null 값을 가질 수 있음. 이는 기본 타입 int와의 중요한 차이점 중 하나.
Integer num = null;

 

int vs Integer의 차이점?

  • 타입 : int는 기본 데이터 타입(primitive type)이고, Integer는 래퍼 클래스(wrapper class)임.
  • 메모리 : int는 값을 직접 저장하고, 메모리를 효율적으로 사용 가능. Integer는 객체로, 추가적인 메모리 오버헤드가 존재.
  • 기능 : int는 메서드가 없지만, Integer는 다양한 메서드를 제공.
  • 값 : int는 null 값을 가질 수 없으나, Integer는 null 값을 가질 수 있음.
  • 사용 : int는 주로 간단한 계산에 사용되고, Integer는 객체가 필요할 때나 제네릭 컬렉션과 함께 사용됨.

결론

int와 Integer는 모두 정수를 다루기 위한 것이지만, 기본 타입과 래퍼 클래스라는 점에서 차이가 매우 클 것으로 생각됩니다. int는 메모리 효율적이고 값 자체를 저장하는 반면, Integer는 객체로서 다양한 메서드와 함께 제공되며 null 값을 가질 수 있으니 두 타입을 적절히 사용하면 앞으로 있을 다양한 코딩 테스나 알고리즘에서 효율성과 기능성을 모두 충족할 수 있지 않을까 하는 기대감을 가져봅니다.

 

https://github.com/bottomsUp-99

 

bottomsUp-99 - Overview

Backend Developer. bottomsUp-99 has 10 repositories available. Follow their code on GitHub.

github.com

 

728x90
반응형

'Java Study' 카테고리의 다른 글

메서드(method)란?  (0) 2024.06.20
Scanner VS BufferedReader 의 차이  (2) 2024.06.19
Java 조건문과 반복문  (0) 2024.06.18
Maven 과 Gradle의 차이  (2) 2024.06.17
Java 연산자  (0) 2024.06.17