본문 바로가기

Back-end/Java

(25)
[Java] 접근 제어자의 종류 접근 제어자를 사용하는 이유는 외부에서 보여주고 싶은 정보들을 선택적으로 제공하기 위함이고, 캡슐화와 통하는 면이 있습니다. private: 해당 클래스 내에서만 접근 가능 default: 해당 패키지 내에서만 접근 가능 protectd: 상속한 클래스 내에서만 접근 가능 public: 전체 영역에서 접근 가능
[Java] 정적(static)이란 무엇인가요? static은 클래스 멤버라고 하며, 클래스 로더가 클래스를 로딩해서 메소드 메모리 영역에 적재할 때 클래스 별로 관리됩니다. static 키워드를 통해 생성된 정적 멤버들은 PemGen 또는 Metaspace에 저장되며 저장된 메모리는 모든 객체가 공유하며 하나의 멤버를 어디서든지 참조할 수 있는 장점이 있습니다. 그러나, GC(Garbage Collector)의 관리 영역 밖에 존재하기 때문에 프로그램 종료 시까지 메모리가 할당된 채로 존재합니다. 너무 남발하게 되면 시스템 성능에 악영향을 줄 수 있습니다.
[Java] 클래스는 무엇이고 객체는 무엇인가요? 클래스는 객체를 정의하는 틀 또는 설계도와 같은 의미로 사용됩니다. 객체는 식별 가능한 개체 또는 사물입니다. 객체의 상태(속성, 특성)을 멤버 변수, 객체의 행동(기능)을 메소드 혹은 멤버 함수라고 표현합니다. 객체는 구별 가능한 식별자, 특징적인 행동, 변경 가능한 상태를 가집니다. 인스턴스(클래스가 메모리에 생성된 상태) 들을 통칭하는 용도로 사용합니다.
[Java] 인터페이스와 추상 클래스의 차이점 인터페이스는 구현 객체가 같은 동작을 한다는 것을 보장하기 위해 사용합니다. 다중 상속이 가능하고, 인터페이스를 구현하는 집합간에는 관계가 없을 수 있습니다. 인터페이스는 다른 클래스를 작성하는데 도움을 주는 목적으로 기본 설계도라고 표현합니다. public static final의 사용 목적은 인터페이스 변수는 아무 인스턴스도 존재하지 않는 시점이기 때문에 스스로 초기화 될 권한이 없습니다. 때문에 public static final을 사용해 구현 객체의 같은 상태를 보장합니다. interface 인터페이스 이름 { public static final 상수이름 = 값; public abstract void 메서드 이름(); } 추상 클래스는 객체의 추상적인 상위 개념으로 공통된 개념을 표현할 때 사용합..
[Java] 오버라이딩과 오버로딩이 무엇이며 어떤 차이가 있을까요? 오바라이딩(Overriding)은 상위 클래스의 메소드를 재정의 하는 것을 의미합니다. 또한, 런타임 다형성이기도 합니다. 오버로딩(Overloading)은 같은 클래스 내에서 동일한 메소드 이름을 가지지만, 매개 변수의 타입, 개수를 다르게 구현할 수 있는 것을 의미합니다. 또한, 컴파일 타임 다형성이기도 합니다. 따라서, 오버라이딩이 될 수 있습니다. 추가로 '@Override'를 써야하는 이유를 꼭 생각해보세요. 이 어노테이션은 컴파일 타임에 오버라이딩에 대한 안정성을 부여해주기 때문에 반드시 써주는 것이 좋습니다.
[Java] 제네릭이란 제네릭은 자바의 타입 안정성을 맡고 있습니다. 컴파일 과정에서 객체의 타입을 체크를 하기 때문에, 객체의 타입 안정성을 높이고 형변환의 번거로움을 줄여줍니다. 제네릭 선언은 클래스 제네릭 타입으로는 참조형 데이터 타입(배열, 열거 타입, 클래스, 인터페이스)만 설정 가능합니다. (* 레퍼클래스: Boolean, Character, Byte, Short, Integer, Long, Float, Double) 래퍼 클래스는 기본형 데이터 타입을 참조형 데이터 타입으로 바꿔주는 클래스입니다.
[Java] 컬렉션 프레임워크 Java Collection은 널리 알려져 있는 자료구조를 바탕으로 객체, 데이터들을 효율적으로 관리할 수 있는 라이브러리를 컬렉션 프레임워크라고 합니다. List, Set은 Collection 인터페이스를 상속받지만, Map 인터페이스는 구조상 차이라 별도로 정의합니다. List 순서가 있는 데이터의 집합으로 데이터의 중복을 허용함 구현 클래스: ArrayList, LinkedList, Stack, Vector, … 순서 O / 중복 O Set 순서를 유지하지 않는 데이터의 집합, 데이터의 중복을 허용하지 않음 구현 클래스: HashSet, TreeSet, … 순서 X / 중복 X Map 키와 값의 쌍(pair)으로 이루어진 데이터 군집으로 순서는 유지되지 않음 키는 중복을 허용하지 않지만, 값은 중복..
[Java] 가비지 컬렉션(Garbage Collection)의 과정 가비지 컬렉터(Garbage Collector)란? '더이상 참조되지 않은 메모리'인 가비지를 청소해주는 JVM의 실행 엔진의 한 요소입니다. JVM은 new와 같은 연산에 의해 새롭게 생성된 객체들 중에서 더이상 참조되지 않는 객체를 정리해줍니다. 가비지 컬렉터는 Heap 영역을 위주로 탐색하여 메모리를 정리해줍니다. 가비지 컬렉션(Garbage Collection)의 과정 가비지 컬렉션(GC)은 메모리를 정리하는 과정입니다. GC는 Heap 영역에서 사용하지 않는 객체들을 제거하는 작업을 총칭합니다. 이 객체를 제거하는 작업이 필요한 이유는 자바는 개발자가 메모리를 직접 해제해줄 수 없는 언어이기 때문입니다. 따라서 객체를 사용하고 제거하는 기능이 필요하게 됩니다. GC의 동작방식은 가장 간단한 Se..