반응형

Java 31

ArrayList와 LinkedList의 차이점은? 언제 무엇을 사용해야할까?

솔직히 말하면...4년차까지 와서도 ArrayList만 쓰고 살았다.LinkedList? 면접 때나 나오는 얘기 아닌가 싶었는데,최근에 대용량 데이터 처리하다가 성능 차이를 체감했다.그때서야 진짜 차이를 알게 됐다.간단하게 구조 차이부터ArrayList - 배열 기반// 내부적으로는 이런 느낌Object[] elementData = new Object[10]; // 기본 크기 10연속된 메모리에 데이터를 저장한다. 인덱스로 바로 접근 가능.LinkedList - 노드 기반// 내부적으로는 이런 느낌class Node { Object data; Node next; Node prev;}각 노드가 다음/이전 노드의 주소를 가지고 있다. 체인처럼 연결됨.성능 차이 조회 성능 (get)// Arr..

Java 2025.09.16

Java에서 try-with-resources를 사용해야 하는 이유

try-catch-finally의 문제점기존 방식으로 파일을 읽는 코드를 보면:FileInputStream fis = null;try { fis = new FileInputStream("example.txt"); // 파일 읽기 작업} catch (IOException e) { e.printStackTrace();} finally { if (fis != null) { try { fis.close(); // 또 다른 try-catch 필요! } catch (IOException e) { e.printStackTrace(); } }}문제점:코드가 복잡하고 길어짐finally에서 또 다른 예외 처리 필요자원..

Java 2025.08.26

HashMap의 get() 메서드 동작 원리

HashMap이란?HashMap은 키-값 쌍을 저장하는 자바의 컬렉션 프레임워크다. 내부적으로 배열과 연결리스트(또는 트리)를 사용해 데이터를 관리한다.get() 메서드의 기본 동작1단계: 해시코드 계산HashMap map = new HashMap();map.put("apple", 100);int value = map.get("apple"); // 여기서 get() 동작 시작먼저 키("apple")의 hashCode() 메서드를 호출한다.2단계: 인덱스 계산해시코드를 배열 크기로 나눈 나머지로 배열 인덱스를 구한다.index = hashCode & (배열크기 - 1)3단계: 버킷 탐색계산된 인덱스의 버킷을 확인한다. 버킷이 비어있으면 null을 반환한다.4단계: 키 비교버킷에 데이터가 있으면 저장된 키와..

Java 2025.08.26

JDK, JRE, JVM의 차이점

자바 개발을 4년간 하면서 신입 때부터 지금까지도 가끔 헷갈리는 개념들이 있다.JDK, JRE, JVM이 대표적인데, 면접에서도 자주 나오고 실무에서도 중요한 개념이라 한 번 정리해보려고 한다.JVM (Java Virtual Machine) - 자바의 핵심정의와 역할자바 바이트코드를 실행하는 가상머신JVM은 자바의 "Write Once, Run Anywhere" 철학을 실현하는 핵심 기술이다.자바 소스코드가 javac로 컴파일되면 .class 파일(바이트코드)이 생성되는데,이를 실제 기계어로 번역해서 실행하는 것이 JVM의 역할이다.주요 구성요소클래스 로더: .class 파일을 메모리에 로드실행 엔진: 바이트코드를 기계어로 번역 (인터프리터 + JIT 컴파일러)메모리 영역: 힙, 메서드 영역, PC 레지..

Java 2025.08.24

JVM이 뭔지 쉽게 알아보자!

JVM을 한 줄로 설명하면?자바 코드를 실행해주는 프로그램윈도우에서 작성한 자바 코드가 맥, 리눅스에서도 돌아가는 이유가 바로 JVM 때문JVM 안에 뭐가 들어있나?집에 비유하면 이해하기 쉽다: 클래스 로더 (Class Loader)현관문 역할.class 파일을 JVM 안으로 가져오는 곳"어서오세요, 자바 클래스님!"메모리 영역 (Runtime Data Area)실제 거주 공간객체들이 살고 있는 곳방이 여러 개로 나뉘어져 있음실행 엔진 (Execution Engine)일꾼 역할바이트코드를 보고 실제로 일을 처리하는 곳메모리는 어떻게 나뉘어져 있나?힙(Heap) - 물건 창고모든 객체가 저장되는 곳String name = "홍길동"; // 이 "홍길동"이 힙에 저장됨List list = new Array..

Java 2025.08.21
728x90
반응형