기록 111

메서드

1. 메서드란?메서드는 객체가 수행할 수 있는 행동이다. 객체지향에서는 객체는 메서드를 통해서만 외부와 상호작용한다.class Person { void speak() { System.out.println("말한다"); }}필드 -> 상태메서드 -> 행동2. 메서드의 구조 [접근제어자] [기타제어자] 반환타입 메서드명(매개변수) { 실행 코드}public static int add(int a, int b) { return a + b;} 접근제어자: 외부 접근 범위변환 타입 : 결과 값의 타입메서드명 : 역할을 드러내는 이름매개변수 : 입력값메서드 바디 : 실제 로직3. 메서드 시그니처메서드 이름 + 매개변수 타입/순서 ❌ 포함되지 않는 것반환 값 접근 제어자4. 메서드 호출과 스택 ..

Java & Spring/Java 2026.01.06

Static

1. static 이해static은 클래스가 JVM에 로딩되는 순간부터 존재한다. 즉, 객체 이전 단계에서 이미 메모리에 존재함.class A { static int x;}new A() 필요 없이 A.x로 바로 접근이 가능함.2. class 로딩 시 JVM의 동작Class Loader가 class 파일 로딩Method Area에 클래스 정보 적재 (데이터, 메서드, static 변수)static 초기화 수행 (기본값, 초기화 블록 실행)class Example { static int x = 10; static { System.out.println("static block"); }}📌 객체가 없어도 static 변수와 print문은 동작함. 3. static 변수의 메모..

Java & Spring/Java 2026.01.05

객체의 상태와 변수의 생명주기

1. 객체의 상태란?객체는 상태(state)와 행동(behavior)으로 구성된다. 상태 -> 변수행동 -> 메서드class Person { String name; // 상태 int age; // 상태 void speak() { // 행동 System.out.println("아아 목소리!!"); }}📌즉, 변수를 이해하는 것은 객체의 상태를 이해하는 것이라고 볼 수 있다. 2. 변수는 모두 같지 않다. Java의 변수는 선언 위치와 생명 주기에 따라 명확히 구분된다. 변수의 3가지 종류인스턴스 변수 (필드)클래스 변수 (static 변수)지역 변수이 변수들은 메모리와 생명 주기 차이가 핵심이다. 3. 필드(Field) vs 지역 변수(Local Variable)..

Java & Spring/Java 2026.01.05

객체 지향 기본

1. 객체와 클래스 클래스(Class)객체를 생성하기 위한 설계도필드(상태)와 메서드(행동)을 정의JVM 관점에서는 클래스 로딩 시 Method Area에 적재하는 것class Person { String name; int age; void speak() { System.out.println("아아 목소리 테스트!"); }} 객체(Object)클래스를 기반으로 실제 메모리에 생성된 실체서로 다른 객체는 각자 독립적인 상태를 가짐Person p1 = new Person(); # Person 객체 1 Person p2 = new Person(); # Person 객체 2 2. 객체 생성 과정(메모리 관점)Person p = new Person();JVM 내부 동작 순서클래스..

Java & Spring/Java 2026.01.05

객체지향프로그래밍(OOP)

1. 객체 지향 프로그래밍(OOP)이란?상태와 행동을 가진 객체를 만들고, 이 객체들이 서로 협력하며 거대한 프로그램을 완성해가는 방식을 의미한다. 구분설명객체(Object)상태(State)와 행동(Behavior)을 가진 독립적인 존재클래스(Class)객체를 만들기 위한 설계도메시지객체 간 상호작용 방식 (메서드 호출)협력여러 객체가 상호작용하며 프로그램을 구성 2. 사고의 전환: 절차 지향 vs 객체 지향 절차지향 : 기능을 어떻게 구현할까? (순서 중심)객체지향 : 누가 이 기능을 담당해야 하지? (책임 중심) 절차 지향은 데이터와 로직이 분리되어 코드가 꼬이기 쉽지만, 객체지향은 역할과 책임을 분리한다. 3. 객체지향이 유리한 상황 기능이 계속 추가되는 대규모 프로젝트 (확장성)여러 개발자가 협업..

Java & Spring/Java 2026.01.05

연결 리스트(Linked List)

연결리스트란?데이터를 저장할 때 각 요소가 다음 요소의 주소(또는 포인터)를 함께 저장하는 선형 자료구조이다. 배열과 달리 연속되지 않은 위치에 저장되며, 노드라고 불리는 단위(Node)로 구성됨. 즉, 노드(Node) 안에는 data와 포인터(next)가 있고, 이러한 노드들의 집합이다. 연결리스트(Linked List) vs 배열(Array) 연결 리스트 배열메모리 구조비연속적으로 할당(노드 단위)연속적으로 할당(한 번에 확보)메모리 할당 방식필요한 만큼 한 개씩 동적 할당전체 크기를 미리 정하고 고정 할당삽입/삭제 효율성노드 연결만 바꾸면 되어 효율적요소 이동이 필요함 -> 비효율적접근 방식순차 접근만 가능(임의 접근 불..

큐(Queue)

큐선입선출(FIFO) 방식으로 데이터를 처리하는 선형 자료구조이다. 가장 먼저 들어온 데이터가 가장 먼저 나가는 특징을 가지고 있다. 구조 장점순차적 처리에 적합하다.구현이 간단함.deque으로 구현 시 메모리 관리 효율이 좋음 단점중간 데이터 접근이 불가능함.배열 기반 큐는 삽입,삭제 시 앞 공간이 낭비됨.복잡한 자료 구조에는 부적합함. 큐의 주요 연산 연산기능시간복잡도enqueue삽입O(1)dequeue삭제O(1)front맨 앞 요소 조회O(1)size() / empty()사이즈/ empty 확인O(1) 리스트로 구현(python)class Queue: def __init__(self): self.q = [] def isEmpty(self): if len(self...

스택(Stack)

스택 한쪽 끝에서만 삽입과 삭제가 이루어지는 선형 자료구조(linear data structure)이다. 가장 나중에 삽입된 데이터가 먼저 삭제되는 LIFO를 따른다. 스택의 장점과 단점장점 : 구현이 쉬움, 삽입과 삭제가 빠르다(O(1)), 재귀적 상황을 자연스럽게 표현 가능단점 : 중간요소 접근 불가, LIFO 구조로 인해 일부 알고리즘에 부적합하다, 크기 제 스택을 왜 사용할까? 후입선출 구조가 필요한 문제 해결함수 호출 관리 (Call Stack)괄호 검사, 수식 계산기DFS(깊이 우선 탐색)와 백트래킹Undo/Redo 기능 (웹브라우저, 텍스트 에디터 등) 스택 주요 연산함수 이름기능시간복잡도push()삽입O(1)pop()삭제 및 반환O(1)is_empty()비어있는지 확인O(1)size(..