🙋🏻♀️ int 와 Integer 의 차이에 대해 알아보자:)
int는 변수의 타입(data type=자료형)이다.
자료형은 기본형(primitive type)과 참조형(referece type)으로 나뉘는데, int 는 이 중 기본형에 속한다.
😲 자료형이 뭔데❓
data의 type에 따라 값이 저장될 공간의 크기와 저장 형식을 정의한 것
😲 그나저나 여러개의 정수형 타입 중 int가 기본형 타입인 이유는❓
정수형 타입은 리터럴 접미사가 붙지않으면 int타입으로 간주한다.왜 그럴까?
JVM의 피연산자 스택(operand stack)이 피연산자를 4byte단위로 저장하기 때문에 4byte인 int자료형을 사용하면 바로 연산을 하지만4byte보다 작은 자료형(byte,short)로 값을 계산하면 4byte로 다시한번 변환하는 연산이 생기게 되므로, 연산을 수행할때 int보다 작은 자료형을 사용하면 더 비효율적인 것이다. 만약, CPU연산보다 메모리를 더 절약하는게 중요한 프로그램이라면 byte,short를 사용해도 된다.
Integer는 int의 wrapper class라고 할 수 있다.
wrapper클래스는 기본형을 객체로 다루기 위해 사용하는 클래스들을 의미한다.
😲 기본형을 객체로 다룬다는 것은 어느 경우를 말하는걸까❓
int : 자료형(primitive type)
Integer : 래퍼 클래스 (Wrapper class)
😲 null과 0❓
두개의 차이를 사진으로 약간은 이해했으나, 구체적으로 null과 0은 어떤 차이점이 있고, null이 필요한 경우를 찾아봐야겠다!
🙋🏻♀️ wrapper 클래스의 인스턴스, 즉 포장 객체는 내부의 값을 비교하기 위해 ==와 !=를 사용할 수 없다.
동등 연산자(==)를 사용하게 되면, 두 인스턴스의 값을 비교하는 것이 아니라 두 인스턴스의 주소값을 비교하게 되는데, 포장 객체는 내부 값이 아니라 참조를 비교하기 때문이다.이럴 땐 == 말고 equals() 메소드를 사용하면 된다.
int는 차지하는 공간이 4byte에 불가하고, wrapper class처럼 메소드도 가질 수 없으며, 오직 데이터만 저장할 수 있다.
이와 같이 int는 정수 값을 메모리에 저장하는 단일 목적으로만 사용된다.
Integer는 int와 달리 null값 처리가 필요하거나, 데이터를 wrapper(기본형을 객체로 다룸)할 경우에 사용할 수 있다.
래퍼 클래스는 기본 데이터 타입을 오브젝트(Object)로 변환할 수 있다.
메소드에 전달된 파라미터를 수정하려는 경우 오브젝트가 필요하다.
거의 모든 패키지의 클래스들은 제네릭 타입을 파라미터로 받는다. 제네릭 타입은 래퍼 클래스만 들어갈 수 있다.
컬렉션 프레임 워크의 데이터 구조는 기본 타입이 아닌 객체만 저장할 수 있으며, 래퍼 클래스를 사용해 자동 박싱과 언박싱이 일어난다.
래퍼 클래스는 기본 타입과 다르게 null 값을 저장할 수 있다.
웹 서버의 경우 클라이언트에서 null 값이 왔을 때 기본 타입이면 예외가 발생한다.
https://slenderankle.tistory.com/151
https://blog.naver.com/msk9711/222367898285
[Java] Integer와 int의 차이
[JAVA] Int, Integer 너네 다른게 뭐니?
int vs Integer Java - Javatpoint
멘토님이 int 와 Integer 의 차이를 물어보시길래 , 너무나 당당하게 "같은거 아닌가요?" 라고 대답했다🫢
멘토님이 다음 멘토링까지 알아오라고 미션을 주셨는데 정리하고 나니 같은거 라고 당당히 대답했던 내 자신이 아주 잠깐 부끄러웠지만, 이번 기회에 확실히 알았으니 오히려 좋다 ! 모르는것에 대해 어물쩡 넘어가지말고 알아보는 습관을 가지자.
There's definitely a lot to know about this issue. I really like all the points you made.
https://infocampus.co.in/ui-development-training-in-bangalore.html
https://infocampus.co.in/web-development-training-in-bangalore.html
https://infocampus.co.in/mern-stack-training-in-bangalore.html
https://infocampus.co.in/reactjs-training-in-marathahalli-bangalore.html
https://infocampus.co.in/javascript-jquery-training-in-bangalore.html
https://infocampus.co.in/data-structure-algorithms-training-in-bangalore.html
https://infocampus.co.in/angularjs-training-in-bangalore.html
https://infocampus.co.in/
https://infocampus.co.in/full-stack-development-training-in-marathahalli.html
https://infocampus.co.in/mean-stack-development-training-in-banglore.html
https://infocampus.co.in/web-designing-training-in-bangalore.html