Java 107

스택과 큐

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. Stack과 QueueStack (스택)후입선출(LIFO, Last In First Out) 구조나중에 넣은 데이터가 먼저 나감예: 접시 쌓기 → 위에 올린 접시부터 먼저 꺼냄주요 연산push(): 데이터를 위에 넣음pop(): 위에서 데이터를 꺼냄예:push(0), push(1), push(2)→ 스택: [0, 1, 2]pop() → 2, pop() → 1, pop() → 0 Queue (큐)선입선출(FIFO, First In First Out) 구조먼저 넣은 데이터가 먼저 나감예: 줄 서기 → 먼저 선 사람이 먼저 나감주요 연산offer(): 뒤에 데이터를 넣음poll(): 앞에서 데이터를 꺼냄예:offer(0), offer(1), offer..

Java 2025.06.23

LinkedList

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. LinkedList란?데이터를 연결 구조(Linked Structure) 로 저장하는 자료구조입니다.각 요소는 자기 데이터 + 다음 요소의 주소를 저장합니다.이를 통해 데이터를 유연하게 추가하거나 삭제할 수 있습니다.배열과의 차이점크기를 변경할 수 없다 (배열)배열은 미리 정해진 크기만큼만 저장할 수 있음 → 확장하려면 새 배열을 만들어 복사해야 함.삽입/삭제가 느림 (배열)중간에 삽입/삭제하면 뒤에 있는 요소들을 모두 이동시켜야 하므로 느림.→ 이를 보완하기 위해 LinkedList가 등장! 배열과 LinkedList 비교배열은 연속된 공간(예: 0x100 ~ 0x10C 등)에 데이터를 저장arr[0] = 1, arr[1] = 2, ... 이런 ..

Java 2025.06.23

ArrayList

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. ArrayList란 무엇인가?핵심 요약:ArrayList는 List 인터페이스를 구현한 클래스이며, 데이터의 저장 순서를 유지하고, 중복을 허용합니다.가장 많이 사용되는 컬렉션 클래스 중 하나입니다.과거의 Vector보다 더 효율적이고 빠르게 작동합니다.저장 구조:내부적으로 데이터를 배열(Object[]) 에 저장합니다.요소들은 배열의 순서대로 저장됩니다. 즉, 인덱스가 0, 1, 2, ... 이런 식으로 정해진 순서에 맞춰 저장됩니다.배열의 크기를 초과하면 새로운 배열을 만들어 기존 데이터를 복사합니다.소스 코드의 일부:public class ArrayList extends AbstractList implements List, RandomA..

Java 2025.06.23

Collection인터페이스

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다.Collection 인터페이스 (공통 메서드)Collection이란?List, Set 등 공통적으로 사용하는 인터페이스입니다.데이터를 추가하고, 삭제하고, 포함 여부 등을 확인할 수 있는 메서드를 정의합니다.주요 메서드 설명add(Object o)객체 1개 추가. 성공하면 trueaddAll(Collection c)다른 컬렉션의 모든 요소 추가clear()전체 요소 제거contains(Object o)해당 요소 포함 여부 확인remove(Object o)해당 요소 삭제isEmpty()컬렉션이 비어 있는지 확인size()요소의 개수 반환toArray()컬렉션을 배열로 변환 💡 대부분의 메서드는 boolean 반환: 작업 성공 여부를 알려줍니다.예: ..

Java 2025.06.23

컬렉션 프레임웍

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. 컬렉션 프레임워크란?컬렉션 프레임워크(Collection Framework)는"데이터를 저장하는 클래스들(자료구조)을 표준화한 설계 방식"입니다.핵심 개념 요약컬렉션(Collection)데이터의 모음 (데이터 집합)프레임워크(Framework)표준화된 방식으로 잘 짜인 설계 구조컬렉션 프레임워크데이터를 저장/관리하는 클래스들의 집합이며, 이를 일관되게 다루는 인터페이스와 구현 클래스들의 체계입니다. 왜 필요한가?과거의 문제점JDK1.1 이전에는 Vector, Hashtable, Properties 같은 클래스가 각각 독자적으로 존재했고,호환성과 사용 방법이 달라서 불편하고 비효율적이었습니다.예: Vector는 동기화되지만, Array는 안 됨 → ..

Java 2025.06.23

Calendar클래스

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다.왜 Calendar 클래스가 생겼을까?과거에는 Date 클래스 하나만 있었지만, 기능이 부족하고 문제가 많았습니다.그래서 Java에서는 Date 클래스의 단점을 개선하기 위해 Calendar 클래스를 새롭게 도입했습니다. Calendar 클래스의 특징주요 특징추상 클래스(Abstract Class)입니다.즉, new Calendar()처럼 직접 객체를 만들 수 없습니다. Calendar cal = new Calendar(); // ❌ 에러 발생. 추상 클래스이므로 직접 생성 불가 올바른 생성 방법: getInstance() 메서드Calendar cal = Calendar.getInstance(); // ✔️ 올바른 방법getInstance()는 st..

Java 2025.06.23

오토박싱 & 언박싱

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다.오토박싱(autoboxing)과 언박싱(unboxing)이란?배경 설명자바는 기본형(예: int, double)과 참조형(예: Integer, Double)을 구분합니다.자바는 객체 지향 언어이므로 모든 데이터를 객체로 다루기를 권장합니다.하지만 int와 같은 기본형은 객체가 아니기 때문에, 컬렉션(List, Vector 등)에 바로 저장할 수 없었습니다.문제점int i = 5;Integer iObj = new Integer(7);int sum = i + iObj;위 코드처럼 int + Integer 연산을 하면, 타입이 다르기 때문에 원래는 에러가 났습니다.그래서 과거(JDK1.5 이전)에는 다음처럼 직접 변환(언박싱) 해야 했습니다:int sum..

Java 2025.06.22

래퍼(wrapper) 클래스

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다.래퍼(wrapper) 클래스자바는 모든 데이터를 객체로 다루기를 원하지만, 실제로는 int, char, boolean 같은 8개의 기본형(primitive type) 데이터가 존재합니다.이 기본형은 객체가 아니기 때문에, 메서드를 호출할 수 없고, 객체를 다루는 컬렉션(List, Set 등)에도 넣을 수 없습니다.그래서 기본형을 객체로 포장(wrap) 하기 위해 사용하는 클래스가 바로 래퍼 클래스(wrapper class)입니다.자바에는 다음과 같이 기본형마다 대응하는 래퍼 클래스가 있습니다:기본형래퍼 클래스booleanBooleancharCharacterbyteByteshortShortintIntegerlongLongfloatFloatdoubleD..

Java 2025.06.22

StringBuffer

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. StringBuffer 클래스StringBuffer 클래스는 문자열을 다룰 때 내용을 자유롭게 변경할 수 있도록 설계된 클래스입니다.기존의 String 클래스는 한번 생성되면 그 내용을 바꿀 수 없는(immutable) 클래스였습니다. 즉, 문자열을 연결하거나 일부만 바꾸고 싶어도 새로운 문자열 객체를 다시 생성해야 했습니다.→ StringBuffer는 이러한 단점을 보완하여 내용을 바꾸더라도 새로운 객체를 만들지 않고 기존의 객체에서 직접 변경이 가능합니다.내부 구조public final class StringBuffer implements java.io.Serializable { private char[] value; ...}내부적으..

Java 2025.06.22

문자열과 기본형 간의 변

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다.문자열과 기본형 간의 변환기본형을 문자열로 변환숫자나 문자를 문자열로 바꾸는 경우는 프로그래밍에서 매우 흔한 일입니다. Java에서는 이 변환이 매우 간단합니다.예를 들어 다음과 같이 정수 int i = 100;이 있다고 해봅시다.✅ 문자열로 변환하는 방법 2가지int i = 100;String str1 = i + ""; // 방법 ①: 문자열 결합String str2 = String.valueOf(i); // 방법 ②: String 클래스의 정적 메서드 사용 i + ""는 문자열과 숫자를 더하면 자동으로 숫자가 문자열로 변환되는 특징을 이용한 것String.valueOf(i)는 명시적으로 문자열로 바꾸는 방법 (..

Java 2025.06.22