본문 바로가기

안녕하세요!

프로그래밍 언어/Java

[ Java ] Long과 long의 차이점


 

유지보수 미션을 받은 후, 로그를 확인하면서 오류 코드에 "java.lang.long cannot cast to java.math.bigdecimal"이 떴다. 처음에 나는 DB 단에서 속성 자체가 BigInt로 선언돼 있는데 왜 자꾸 String을 Integer로 형 변환하려고 하는지 몰랐다. 알고보니 BigDecimal은 Oracle에서 쓰는 메서드였고, S/4 HANA로 전환할 때에는 long과 같은 데이터 타입을 써야하는 것 같았다. 다행히 부장님의 리드 하에 bigdecimal --> long 타입 변환을 시도하였고, jsp는 화면에 잘 출력되었다. 생각해보니 Java뿐만 아니라, 모든 분야에서 기본이 가장 중요하다고 느끼는 날이었다.  

 

Long


 
 

[ Java ] What is the Wrapper Class?

래퍼 클래스 출처 : https://tcpschool.com/java/java_api_wrapper 래퍼 클래스(Wrapper Class)는 프로그램에 따라 기본 타입의 Data를 Object로 취급해야 하는 경우 사용한다. 만약 메서드 인자 값으로 요구되는 타

pythonchoboman.tistory.com


 

Long은 Wrapper Class로 객체가 기본 Data 유형을 저장할 수 있는 Class이다.

이는 기본 데이터 타입에 중 하나인 long을 객체화, 즉 Boxing함으로써

인자 값으로 객체를 불러올 수 있도록 하기 위해 사용한다.

 

참고로 Long은 메모리 주소 값을 통해 객체를 참조하는 타입이다.

참조 타입에는 원시 타입을제외한 문자열, Class, Interface, enum, 배열 등이 있다.

 


long


 

원시 타입에 해당하는 longnull로 지정할 수 없다.

이와 같은 이유 때문에 원시 타입에 Wrapper Class를 사용함으로써 Boxing 작업을 하는 것이다.

 

반면 원시 타입은 직접 값을 할당하기 때문에 참조 타입에 비해 뛰어난 성능을 가진다.

원시 타입은 Stack에 값을 저장하지만,

참조 타입은 Stack에 참조할 주소 정보만 존재하고, 실제 Data는 Heap에 저장한다.

다시 말해, 원시 타입이 Data 값을 불러오는 효율과 속도가 훨씬 좋은 것이다.

반응형

 

728x90
반응형

loading