참조 클래스

이동건 (불꽃냥펀치)·2024년 11월 18일
0

참조클래스

기본형의 한계 1

자바는 객체지향 언어임에도 자바 안에 객체가 아닌 기본형이 있다. 기본형은 객체가 아니기에 다음과 같은 한계가 있다.

  • 기본형 데이터는 객체가 아니기에 유용한 메서드를 제공할 수 없다.
    • 추가로 객체 참조가 필요한 컬렉션 프레임워크를 사용할 수 없다.

기본형의 한계 2

  • null 값을 가질 수 없음: 때로는 데이터 없음 이라는 상태를 나타내야 할 필요가 있는데, 기본형은 항상 값을 가지기에 이런 표현을 할 수 없다.
package lang.wrapper;
 public class MyIntegerNullMain0 {
     public static void main(String[] args) {
         int[] intArr = {-1, 0, 1, 2, 3};
         System.out.println(findValue(intArr, -1)); //-1
         System.out.println(findValue(intArr, 0));
         System.out.println(findValue(intArr, 1));
         System.out.println(findValue(intArr, 100)); //-1
     }
     private static int findValue(int[] intArr, int target) {
     
       for (int value : intArr) {
            if (value == target) {
                return value;
            }
		}
	return -1; 
    }
}
     
  • findVaue()는 배열에 찾는 값이 있으면 해당 값을 반환하고, 찾는값이 없으면 -1을 반환한다.
  • 실행 해 보면 입력값이 -1일때 -1을 반환한다.
  • 배열에 -1값이 있어서 -1을 반환한건지 찾는 값이 없어서 -1을 반환한지 모호하다.
  • 기본형은 항상 값이 존재해야 하지만, 참조형 클래스의 경우 아무런 값을 입력하지 않으면 null값이 입력된다.
  • 참조값은 위와 같은 모호한 상황에서 확실하게 찾는 값이 없음이라는 결과값을 보여줄 수 있다.



자바 참조 클래스

참조 클래스 종류

  • byte => BYTE
  • int => Integer
  • long => Long
  • float => Float
  • double => Double
  • char => Character
  • boolean => Boolean
  • 위와 같은 자바 참조 클래스는 공통적으로 불변이다.
  • equals() 메서드로 비교해야한다.

박싱/ 언박싱

  • 기본형을 참조클래스로 변경하는 것을 마치 박스에 물건을 넣은 것 같다고 박싱이라한다.
  • intValue() (언박싱):박스에 들어있는 물건을 꺼내는 것 같다고 언박싱이라하며, 객체에서 다시 기본형으로 변경된다.
  • 참조 클래스는 객체이므로 ==비교를 하면 인스턴스 참조값을 비교한다.
  • 참조 클래스는 내부의 값을 비교하도록 equals()를 재정의 해두었다. 값을 비교하려면 equals()를 사용해야 한다

오토박싱/오토언박싱

자바에서는 오랜기간 개발자들이 기본형을 참조클래스로 ㅂ녀호나하거나 래퍼클래스를 기본형으로 변환하는 일이 자주 발생했다. 이런 문제를 해결하기 위해 오토박싱/오토언박싱 기능을 지원한다.

  • 오토박싱과 오토언박싱은 컴파일러가 개발자 대신 valueOg(),xxxValue() 등의 코드를 추가해주는 기능이다.
  • 이로 인해 개발자들은 기본형과 참조형을 편리하게 변환할 수 있다.

참조클래스 주요 메서드와 성능

주요 메서드

  • valueOf(): 참조 타입을 반환
  • parseInt(): 문자열을 기본형으로 변환
  • compareTo(): 내값과 인수로 넘어온 값을 빅하여, 내값이 크면 1 같으면 0 작으면 -1을 반환
  • Integer,sum(),Integer.min(),Integer.max() : static 메서드로 간단한 덧셈, 최대, 최소 값 연산을 수행

성능

profile
자바를 사랑합니다

0개의 댓글

관련 채용 정보