목록Programing & Coding/JAVA (21)
S E P H ' S
인터페이스(Interface)와 추상클래스(Abstract Class)의 차이점 추상 클래스는 클래스 내에 하나 이상의 추상 메소드를 포함하거나 abstract로 정의된 클래스를 말하고 인터페이스는 모든 메소드가 추상 메소드인 경우이다. (Java 8에서는 default 키워드를 사용해 일반 메소드의 구현도 가능함) 두 개념의 차이는 명확하다. 생김새도 다르고 사용방법도 다르다. 그러나 역할이 비슷하여 혼동이 많이 오기도 한다. 추상클래스와 인터페이스 모두 상속받는 클래스 혹은 구현하는 구현체가 추상 메소드를 구현하도록 강제한다. 이렇게 보면 추상 클래스에 추상 메소드를 여러개 두거나 전부 추상 메소드만 두면 될 것 같은데 인터페이스가 존재하는 이유는 무엇일까? 비슷해보이지만 두 개념의 목적을 자세히 짚..
Iterator iterator의 사전적 의미는 반복자이다. 동사형인 iterate는 사전을 찾아보면 (계산, 컴퓨터 처리 절차를)반복하다. 라고 되어있다. 뉘앙스만 보자면 코드에서 반복적인 일을 처리하도록 할 것 같다. 그런데 이미 for, while과 같은 반복문으로 우리는 코드의 반복적인 작업을 처리하고 있다. 그런데 굳이 왜 iterator를 사용할까? 또, 알고리즘 문제를 풀다가 상대적으로 많이 접해보지 않아서 정확히 알아보고자 포스팅을 하게 됐다. 알고리즘 문제 풀이를 하거나 코드 작업을 하다보면 Collection 객체의 요소들을 조작할 일들이 정말 많다. 삽입이나 수정, 삭제 등과 같은 일을 하게 되는데 코드로 예시를 살펴보자. public static void main(String[] a..
사실 이 포스팅의 내용은 Java 뿐만이 아닌 거의 모든 프로그래밍 언어가 메모리를 사용하는 방식이라고 봐도 무방하다. 이후 지속적으로 포스팅할 Java의 메모리 사용 방식에 대해 정리하기 전에 다루는 포스팅이라고 생각하고 정리해볼 것이다. 지역 변수와 메모리 변수는 스태틱 영역, 스택 영역, 힙 영역 세군데 모두에 존재한다. 하지만 각기 다른 목적을 가진다. 그래서 지역 변수, 클래스 멤버 변수, 객체 멤버 변수로 다르다. 지역 변수 : 스택 영역에 존재. 스택 프레임이 사라지면 마찬가지로 사라진다. 클래스 멤버 변수 : 스태틱 영역에 존재. 스태틱 영역에 한 번 자리 잡으면 JVM이 종료될때 까지 고정(static)된 상태로 존재. 객체 멤버 변수 : 힙 영역에 존재. 객체 멤버 변수들은 객체와 함께..
자바 프로그램의 실행 C나 다른 언어의 실행 방식과 Java 실행 방식을 비교한 간단한 그림이다. JDK가 운영체제에 맞게 존재하고 그 안에 자바 컴파일러(javac.exe)가 자바 코드를 해석하면 바이트 코드(.class 형태의 파일)가 되고 그를 JRE이 지니고 있는 자바 프로그램 실행기(java.exe)를 포함하고 있고 JVM이 중재자로서 각 플랫폼에서 프로그램을 구동하는 데 문제 없게끔 만들어준다. 자바 프로그램의 메모리 사용 방식 프로그램이 실행될때 메모리는 보통 다음과 같이 영역이 나눠서 사용된다. 자바와 같이 객체 지향 프로그램에서는 데이터 저장 영역을 다시 세 개의 영역으로 분할해서 사용한다. 위의 그림을 다시 더 상세한 설명을 덧붙인다면 스태틱 영역은 클래스가 위치하고 스택 영역은 메소드..