본문 바로가기
💁❓

💁❓ int? integer?

by W_W_Woody 2022. 1. 17.

결론부터 말하자면,

integer는 클래스(Wrapper) 타입이고, int는 long double형과 같은 원시형변수이다.

(심지어 서로 변환이 가능)

int i = integer.intValue();

Integer integer = new Integer(i);

이런식으로 변환이 가능하다…

 

1) int는 무엇인가? (primitive type)               

int는 변수의 타입(data type)이다.


변수(variable)는 '값을 저장할 수 있는 메모리 상의 공간'을 의미 합니다.

int a = 3;
char firstName = "H";

에서 a 나 H 는 변수(변수명)가 되는 것입니다.

그리고 그 앞에 적힌 int 와 char가 변수의 형을 지정해주고 있는 것이,
변수의 타입( = data type = 자료형 ) 이라 합니다.

즉, 자료형은 'data의 type에 따라 값이 저장될 공간의 크기와 저장 형식을 정의한 것' 이라고 볼 수 있습니다.

 

이러한 자료형은 기본형(primitive type)과 참조형(referece type)으로 나뉘는데,
int 는 이 중 기본형에 속합니다.

기본형에는 다음과 같은 종류가 있습니다.


2) 그렇다면 Integer는 무엇인가? (wrapper class)

ArrayList<Integer> intList = new ArrayList<Integer>();
	intList.add(1);
	intList.add(2);
	System.out.println(intList.get(0));
	String stringNum = "123";
	int intNum = Integer.parseInt(stringNum);
	System.out.println(intNum);


1)에서 다룬 기본형을 표현해야 하는 경우가 있는데

  • 매개변수로 객체를 필요로 할 때
  • 기본형 값이 아닌 객체로 저장해야할 때
  • 객체 간 비교가 필요할 때

이런 경우 기본형을 객체로 다루기 위해 사용하는 클래스들을 래퍼 클래스(wrapper class)라고 합니다.
그리고 Integer는 int의 레퍼클레스 라고 할 수 있습니다.

모든 기본형은 래퍼클래스를 생성할 수 있고, 이는 아래와 같습니다.


 ∴  int와 Integer의 비교

 int : 자료형(primitive type)

  •  산술 연산 가능함
  •  null로 초기화 불가

 Integer : 래퍼 클래스 (Wrapper class) (객체)

  •  Unboxing하지 않을 시 산술 연산 불가능함
  •  null값 처리 가능
  •  null 값 처리가 용이하기 때문에 SQL과 연동할 경우 처리가 용이하다.
  •  DB에서 자료형이 정수형이지만 null 값이 필요한 경우 VO에서 Integer를 사용할 수 있음.

 

int와 Integer간의 변환


boxing : primitive type -> wrapper class 변환 ( int to Integer )
unboxing : wrapper class -> primitive type 변환 ( Integer to int )

으로 정리할 수 있을 것 같습니다.

 

- valueOf()와 parseInt()의 차이

둘 다 Integer(클래스)의 메소드

 Integer.valueOf(String)  Integer 클래스를 리턴하기 때문에 산술 연산을 할 수 없다.
 Integer.parseInt(String)  int 형을 리턴하기 때문에 산술 연산을 할 수 있다.

※ 정수로 파싱할 수 없는 String을 파라미터로 전달하면 에러

                

valueOf (30) + valueOf(20) 을하면 50이된다.

엥? 산술연산이 불가능하다고 했는데 50이 어떻게 되지?? 라고 생각할수 있지만, 오토언박싱**이 되어 intger형이 int형으로 자동 형변환되어 연산이 가능하다.

 

** Auto boxing / unboxing

- 자바에서는 모든 경우는 아니지만 대부분의 경우에는 자동으로 boxing / unboxing을 해준다.

- 예제 코드

int i = 1;
Integer integer = i;    // int -> Integer (Auto boxing)
int i2 = integer;    // Integer -> int (Auto unboxing)

 

 

 


출처: https://includestdio.tistory.com/1 [includestdio]

https://velog.io/@hadoyaji/int%EC%99%80-Integer%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%B4-%EB%8B%A4%EB%A5%B8%EA%B0%80

 

'💁❓' 카테고리의 다른 글

💁❓라이브러리? 프레임워크?  (0) 2021.12.31
💁❓<div> vs <span> vs <p>  (0) 2021.12.26

댓글