본문 바로가기

CS21

[Java] Java Map의 내부 구현 파악 Java Map의 내부 구현은 어떻게 이루어져 있을지 추측해보실 수 있을까요? Java에서 Map 인터페이스 도구가 있으며 대표적으로 Map, HashMap, TreeMap, LinkedHashMap이 있다. Map Map은 key-value 구조로 구성되어 데이터를 저장할 수 있다. key를 가지고 저장된 value를 찾을 수 있다. key를 이용하여 데이터 검색에 최적화되어있으나, 동일한 key에 다른 데이터 value가 저장되어 있을 경우 기존에 저장된 데이터는 덮어씌워져 사라진다. 따라서 중복된 key는 존재할 수 없다. HashMap HashMap은 Hash Table 을 이용하여 만들어졌다. HashMap의 핵심은 배열이며, 배열의 각 슬롯은 연결리스트 또는 트리로 이루어져있다. Hash Ta.. 2023. 12. 18.
클래스와 인스턴스 클래스와 인스턴스의 차이에 대해 설명해주실 수 있을까요? 클래스(Class)란 클래스(Class)란 Java 프로그램에서 객체를 생성하기 위한 일종의 설계도 객체가 가지는 속성(필드)와 동작(메소드)으로 이루어져 있다. 흔히 붕어빵(객체)를 만들기 위한 붕어빵 틀(클래스)이라고 비유를 한다. 클래스는 필드(Field), 생성자(Constructor), 메소드(Method)로 구성되어 있다. 필드: 객체의 데이터가 저장되는 곳 생성자 : 객체가 실제로 생성될 때 초기화 역할을 담당 메소드: 객체의 동작에 해당하는 실행 블록이다. 인스턴스(Instance)란 클래스가 붕어빵 틀이라면 그 틀을 통해 생성된 객체(붕어빵) 하나하나를 해당 클래스의 인스턴스(Instance)라고 부른다. Java 프로그램 실행 시.. 2023. 12. 15.
JVM의 힙 & 스택 메모리 JVM의 스택과 힙메모리 영역에 대해 아는 만큼 설명해주실 수 있을까요? 자바의 메모리 영역 자바 프로그램이 실행되면 JVM(자바 가상 머신)은 OS로부터 메모리를 할당받고, 그 메모리를 용도에 따라서 여러 영역으로 나누어 관리합니다. JVM의 메모리 공간(Runtime Data Area)은 크게 Method(Static)영역, Stack 영역, Heap 영역으로 구분되고 데이터 타입(자료형)에 따라 각 영역에 나누어 할당 되게 된다. 컴파일러에 .java -> .class컴파일 클래스 로더에 의해서 클래스 파일을 메모리 영역에 로드 후 초기화 작업을 수행 메모리 영역에 Static(Method)부터 로드가 된다. 클래스 로드가 끝난 후 JVM은 main 메소드를 찾아 지역변수, 객체변수, 참조변수를 스.. 2023. 12. 14.
[Java] 컴파일되는 과정 컴파일되는 과정에 대해 설명해주세요. 자바는 OS에 독립적인 특징을 가지고 있다. JVM(Java Vitual Machine) 덕분이다. 컴파일 순서 개발자가 자바 소스코드(.java)를 작성합니다. 자바 컴파일러가 자바 소스코드(.java)파일을 읽어 바이트코드(.class)코드로 컴파일 합니다. 바이트코드(.class)파일은 아직 컴퓨터가 읽을 수 없는 JVM(자바 가상 머신)이 읽을 수 있는 코드이다.(java -> class) 컴파일된 바이트코드(.class)를 JVM의 클래스로더(Class Loader)에게 전달합니다. 클래스 로더는 동적로딩(Dynamic Loading)을 통해 필요한 클래스들을 로딩 및 링크하여 런타임 데이터 영역(Runtime Data Area의 Method Area), 즉.. 2023. 12. 13.