본문 바로가기
국비 과정/Java

국비 - 0725 ( Wrapper Class , String )

by 코딩호야 2022. 7. 25.

Wrapper Class

자바의 8가지 기본자료형은 단순히 값을 저장하는 기능만 있지만
Wrapper 클래스로 다양한 기능을 사용할 수 있습니다.

 Wrapper 클래스를 사용하면자료형을
여러가지 형태로 처리할수 있습니다. 소문자를 대문자로 변환 정수를 문자열로 변환,
문자열을 정수로 변환 들과 같은 부가적인 처리를 할수 있어서 

 Wrapper 클래스를 Data Type Wrapper 라고
부릅니다.

자바의 Primitive Type(기본형) 변수도 때로는 객체로 다루어 져야 하는 경우도 있습니다. 예를 들면
매개변수로 객체를 요구할때 등 기본형이 아닌 객체로 저장해야 할때, 객체간의 비교가
필요할때 등등 경우에 기본값들을 객체로 변환해서 작업을 수행해야 합니다.
이때사용되는것이 Wrapper 클래스 입니다.


기본자료형은 단순히 값을 저장하는 기능만 있지만 Wrapper 클래스는 
객체이므로 다양한 기능을 사용할수 있습니다.

종류

기본자료형                Wrapper 클래스     

boolean                         Boolean
byte                                 Byte
char                                Character
double                            Double
float                                 Float
int                                    Integer
short                               Short
long                                 Long
void                                 Void

 

char 타입과 int 타입을 제외한 나머지는 앞글자를 대문자로바꾸면 Wrapper 클래스이다.  

public class Wrapper_1 {
	public static void main(String[] args) {

		Integer one = new Integer("345");
		Integer two = new Integer(45);

		int total = one.intValue() + two.intValue(); // intValue()는 숫자값
		String totalString = one.toString() + two.toString();

		System.out.println("one :" + one.intValue() + ", two :" + two.intValue());
		System.out.println("one :" + one + ", two :" + two);

		System.out.println("one + two :" + total);
		System.out.println("one.toString() + two.toString() :" + totalString);

		System.out.println(total + ">>2진수 :" + Integer.toBinaryString(total)); // 2진수표기
		System.out.println(total + ">>8진수 :" + Integer.toOctalString(total)); // 8진수표기
		System.out.println(total + ">>16진수 :" + Integer.toHexString(total)); // 16진수표기

		System.out.println(Integer.TYPE);

	}

}

Integer wrapper 클래스를 활용해 Integer 메서드를 사용한 예제이다.

 

 

오토박싱 과 언박싱

오토박싱: 기본형 값을 래퍼 클래스 객체로 자동 변환

언박싱: 래퍼 클래스 객체를 기본형 값으로 자동 변환

 

오토박싱과 언박싱은 기본타입과 레퍼런스 타입사이의 구분을
흐릿하게 만들어주지만 그차이를 완벽히 없애는것은 아니다.

		Integer abc1 = new Integer(789);
		Integer abc2 = new Integer(456);
		
		int kbs1 = (int)abc1;			//UnBoxing
		int kbs2 = abc2;				//Auto UnBoxing
		
		Integer bbc1 = (Integer)357;	//Boxing
		Integer bbc2 = 589;				//Auto Boxing
		
		Integer king1 = abc1+abc2;		//Wrapper 끼리연산
		Integer king2 = kbs1+kbs2;		//기본형 끼리 연산후 Auto Boxing
		
		int queen1 = abc1 + kbs1;		//기본형과 Wrapper 형 연산

 

String 

자바에서 문자열 저장하는데 사용되는 객체는
String , StringBuilder , StringBuffer 세가지가 있습니다.


 String 클래스는 한번 생성되면 변하지 않는 문자열 
즉 상수 문자열을 처리하는 클래스 입니다.


계속 변하는 문자열을 StringBuffer 클래스를 이용해 처리하는
것이 좋습니다. 자바는 String 클래스를 사용할때 내부적으로
StringBuffer 클래스로 변현되어 처리합니다.

 

문자열 저장 객체 비교
                                       특징                                                        성능 
String                        불변하는 문자열 저장시 사용                   가장 낮다

StringBuilder            수시로 변하는 문자열 사용시 사용           가장 높다

StringBuffer             다른 스레드간 동기화가 필요한경우        StringBuilder 대신사용

 

equals 와 hashCode 의 이해를 돕는 링크

https://velog.io/@99gaga/Java-equals-

String pool 의 이해를 돕는 링크

https://starkying.tistory.com/entry/what-is-java-string-pool