String Constant Pool과 Constant Pool
String 클래스에 대해 공부를 했다면 String이 String Constant Pool 이라고 불리는 String 상수풀에 저장된다는 것을 알 것이다. 하지만 String Constant Pool과 Constant Pool이 용어가 비슷해 혼용해 헷갈리는 경우가 많은데, 명백히 다른 저장공간이다. 심지어 Constant Pool은 JVM-Me...
String 클래스에 대해 공부를 했다면 String이 String Constant Pool 이라고 불리는 String 상수풀에 저장된다는 것을 알 것이다. 하지만 String Constant Pool과 Constant Pool이 용어가 비슷해 혼용해 헷갈리는 경우가 많은데, 명백히 다른 저장공간이다. 심지어 Constant Pool은 JVM-Me...
기본적으로 Comparable과 Comparator는 모두 인터페이스(Interface)다. 즉, Comparable과 Comparator 모두 인터페이스 내에 선언된 메소드를 ‘반드시 구현’ 해야한다. 그럼 어떤 메소드를 구현해야 하는지 각 API문서를 뒤져보자. Comparable 인터페이스에는 compareTo(T o) 메소드가 하나 선언 ...
상속이란 상속이란 한 마디로 자식이 부모의 특징을 물려 받는 것이다. 예를 들어, 사람이라는 큰 카테고리가 있다면 그 아래 학생, 직장인 등으로 나눌 수 있을 것이다. 이때, 자바에서는 사람 = 부모 클래스, 그 아래 학생, 직장인 = 자식 클래스라고 정의한다. 위에서 상속이란 자식이 부모의 특징을 물려 받는다고 했는데 그건 어떤 의미일까? ...
abstract(추상) class란? 추상 클래스란, 추상 메서드를 선언해 놓고 상속을 통해 자식 클래스에서 메서드를 완성하도록 유도하는 클래스이다. 즉, 자식(서브) 클래스에서 반드시 재정의 해야할 필요가 있는 메서드의 경우 부모(수퍼) 클래스에서 추상 메서드로 만드는 것이다. 이러한 특성 때문에, 미완성 설계도라고 불리기도 한다. 추상 클래스...
제네릭(Generic)이란 ‘데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입을 가질 수 있도록 하는 방법’ 입니다. 우리가 흔히 쓰는 ArrayList, LinkedList 등을 생성할 때, 객체 객체명 = new 객체 (); 과 같이 쓰인다. ArrayList<Integer> list1 = new ArrayList...
SOLID 원칙 객체 지향 프로그래밍의 5가지 원칙, SOLID solid란 객체 지향 프로그래밍을 하면서 지켜야하는 5대 원칙을 뜻한다. SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), DIP(의존 역전 원칙), ISP(인터페이스 분리 원칙)의 앞글자를 따서 만들어졌다. SOLID 원칙을 철저히 지키면서 시간이...
변수 초기화 변수의 초기화는 변수를 사용할 때 선언과 함께 필요한 작업 중 하나이다. 변수 초기화는 지역 변수(메소드 안에서 사용하는 변수)에서는 필수적으로 필요하지만, 멤버변수(스태틱, 인스턴스 변수)에는 선택적으로 사용 가능하다. public class Main { // int i; // 가능 static int i; // 가능...
Method(Static) 영역 JVM이 동작해서 클래스가 로딩 될 때 생성 JVM이 읽어들인 클래스와 인터페이스에 대한 런타임 상수 풀, 멤버 변수(필드), 클래스 변수(Static 변수), 상수, 생성자와 메소드 등을 저장하는 공간 Method(Static) 영역에 있는 것은 어느 곳에서나 접근 가능 Method(Static) 영...
static 변수나 메서드의 경우 프로그램 시작과 동시에 메모리에 크기가 할당된다. 그리고 프로그램이 종료할 때까지 할당된 메모리는 사라지지 않는다. 일반적으로 우리가 만든 class는 static 영역에 소속된다. 그 클래스를 new 연산을 통해 객체를 생성할 시 Heap영역에 메모리가 할당된다. Scanner sc = ne...