230218 TIL #12 박싱/언박싱/Wrapper클래스

김춘복·2023년 2월 17일
0

TIL : Today I Learned

목록 보기
12/571

230218 Today I Learned

알고리즘테스트 4일차. 어제 못했던 것들을 정리하고 남은시간에 코딩테스트를 풀었다.


  • 문제 : 어제 TIL에 적은 대로 HashSet을 배열로 바꾸는 동안 int와 Integer의 차이가 궁금해졌다. 그래서 오늘은 관련 내용을 공부했다.

박싱 언박싱

  • 자바의 데이터 타입은 Primitive type 기본형과 reference type 참조형이 있다.
    기본형 : int char double등. 실제 값을 담고있다.
    vs
    참조형 : String Array등. 값을 바로 담고 있지 않으며 값을 담고있는 객체의 주소값을 담고있다. null값을 가질 수 있다.

  • 기본형은 객체가 아니다. 하지만 기본형 데이터를 객체로 취급해야할 때가 있다.
    이때 기본형을 객체 형태로 한번 감싼 것이 Wrapper클래스. (java.lang 패키지에 포함)
    앞글자를 대문자로 쓰고 풀네임을 작성하면 된다. Integer Character

  • 박싱 : 기본형을 Wrapper클래스로 바꿔주는 것.
    언박싱 : Wrpper클래스 타입의 값을 기본형으로 바꾸는 것.
    .intValue() 를 쓰면 Integer를 int로 언박싱 가능.

  • 참고로 기본형간 비교는 ==를 쓰고 참조형간 비교는 .equals를 쓴다.

  • 참조형 사용시 메모리/속도 효율성이 좋지 않아 가능하면 기본형을 쓰되 Collections를 사용하는 경우 어쩔수 없이 참조타입을 사용하는 것이 좋다고 한다.


Iterator

  • 자바의 컬렉션 프레임워크는 저장된 요소를 읽어오는 방법을 Iterator 인터페이스로 표준화한다. list set에서도 쓸 수 있다.

  • 아래와 같이 Iterator로 출력 가능.

Iterator<Integer> iter = lnkList.iterator();
while (iter.hasNext()){
	System.out.print(iter.next()); 
}
  • boolean hasNext() : 해당 iteratior가 다음요소를 가지고있으면 true, 아니면 false.
    E next() : iteratior의 다음요소를 반환

  • 역방향 출력시 hasPrevious()와 .previous()를 쓰면 된다.

while (iter.hasPrevious()) {
    System.out.print(iter.previous());
}

더 알게된 것

  • 중복시도 회피를 위해서 int[] 배열 하나 만들어서 기록지로 쓰면 좋다.
    기본 선언시 다 0으로 되어있는데 성공할때마다 해당 index에 1올리고
    시도할때는 index값에 0으로 되어있는거만 &&로 묶어서 시도

  • 라이브러리나 컬렉션 안쓰고 만들면 레거시라고 한다.
    실무에서는 그냥 쓰는 편이라고 한다.

  • ctrl+alt+v : 메서드 사용할때 어떤 값으로 받아야하는지 나옴

  • char의 초기값은 공백이 아니라 \u0000이다.

  • 정규식 참고 사이트

profile
Backend Dev / Data Engineer

0개의 댓글