본문 바로가기

Java22

Java - Wrapper Class란 Wrapper Class 자바를 공부하다보면 Wrapper Class라는 용어를 듣게 된다. Wrapper 클래스는 이름 그대로 감싸고 있는 클래스이다. 여기서 감싸는 대상은 자바의 자료형 중에 기본형이다. 자바의 자료형은 크게 기본 타입과 참조타입으로 나누어지는데 기본 타입을 감싸서 참조타입으로 만들어준다. 자바의 기본 타입은 소문자로 시작하는데 int, char, float, double, boolean 등이 있고 이외의 것들은 모두 참조형이라고 생각하면 된다. 예를 들면 int -> Integer, double -> Double, boolean -> Boolean이 있다. Boxing, UnBoxing Primitive 기본형 타입과 객체형 타입끼리 형 변환을해주는 것을 박싱, 언박싱이라고 한다. .. 2022. 8. 8.
Java - Abstract Class와 Interface의 차이 Java를 처음 접했을 때 Abstract Class의 차이와 Interface의 차이도 모르긴 했지만 더 중요한건 이 귀찮은 구조를 왜 써야하는지에 대한 의문이었다. 모든 답변은 객체 지향 관점에서 개발하기 위해서 라고 할 수 있겠다. 지금도 완전히 객체 지향적인 개발이란게 무엇인지 잘 모르겠지만 이론적인 측면에서 좋은 구조를 만들기 위해서는 추상화가 중요하다는 사실만은 머릿속에 들어있다. 오늘은 추상 클래스와 인터페이스의 차이에 대해서 알아보도록하겠다. Abstract Class 먼저 추상 클래스에 대해서 알아보도록 하겠다. 추상클래스는 class 내부에 추상 메소드가 하나 이상 포함되거나 class 앞에 abstract라는 표시가 있는 클래스이다. abstract 클래스는 상속해서 사용하기 위해 만.. 2022. 8. 4.
Java - String pool 알고리즘 문제를 풀다보면 이런 이야기를 한 번쯤 본 적이 있을 것이다. 루프문에서 문자열이 많이 사용되면 StringBuilder를 사용해라. 적은 시간, 메모리로도 틀렸다는 결과를 받을 수 있기 때문에 최소한의 메모리와 시간을 사용하는 것이 중요하기 때문이다. 문자열을 계속해서 concatenate하는 것은 메모리 상 엄청난 낭비가 된다. 다른 객체들과 다르게 String은 Pool을 가지고 있기 때문이다. 작동 방식 String s = "Hello"; s += " World!"; 위처럼 String에 World!를 더하면 어떻게 될까? 기존의 객체들에 새로운 값을 주면 객체의 값이 변경될 뿐이다. 그런데 String에 새로운 값을 주면 기존의 값이 사라지지 않고 Pool에 남아있게 된다. 즉 Stri.. 2022. 8. 3.
Java - 가비지 컬렉션(Garbage Collection)이란? 자바에서는 불필요한 메모리 할당을 제거하기 위해 가비지 컬렉션이라는 기능을 제공한다. JVM의 Heap 영역에 동적으로 할당된 메모리 중에서 사용하지 않는 부분을 주기적으로 회수하는 작업이다. C, C++을 사용하면 alloc을 한 후에 free를 반드시 해줘야 됐었다는 사실이 기억날 것이다. 자바에서는 free를 JVM에 탑재된 가비지 컬렉터가 알아서 해준다. 그렇기 때문에 개발자가 실수로 free를 안해줘서 OOM(Out Of Memory) 같은 Exception이 발생할 일이 적고 오로지 개발에만 더 집중할 수 있다는 장점이 있다. 그렇다고 메모리에 대해 전혀 신경을 쓰지 않아도 되는 것은 아니니 필요한 상황에는 생성된 객체를 제거하거나 메모리 할당을 해제 해주어야 하는 경우도 종종있다. 그런데 자.. 2022. 8. 2.