
Garbage Collection?가비지컬렉션은 JVM의 Heap 영역에서 동적으로 할당했던 메모리 중에서 필요 없게 된 메모리 객체들을 모아서 주기적으로 제거하는 프로세스를 말한다. JVM은 프로그램 실행 시 메모리를 여러 영역으로 나누어 관리한다. 각 영역의 역할은 다음과 같다.Heap: 동적으로 생성된 객체와 배열이 저장되고, 가비지 컬렉션의 주요 대상이다.Stack: 메서드 호출 시 생성되는 지역 변수, 메서드 호출 정보를 저장한다.Method Area (or MetaSpace): 클래스, 메서드 정보와 같은 메타데이터를 저장한다.PC Register, Native Method Stack: JVM이 사용하는 다른 정보 저장 영역. 가비지 컬렉션의 역할과 필요성역할: 더 이상 참조되지 않는 객체를 ..

오버로딩(Overloading)정의같은 이름의 메서드가 다른 매개변수 목록(개수, 타입, 순서)으로 정의되는 것.특징 컴파일 시점에 호출할 메서드가 결정됨.반환값은 오버로딩과 관계없음.같은 클래스 내에서 정의. 오버라이딩(Overriding)정의부모 클래스에서 정의한 메서드를 자식 클래스에서 재정의하는 것.특징 메서드 시그니처(이름, 매개변수, 반환 타입)가 부모 클래스와 동일해야 함.런타임 시점에 호출할 메서드가 결정됨(다형성 구현).접근 제어자는 부모 클래스의 메서드보다 넓거나 동일해야 함.@Override 애너테이션을 통해 오버라이딩 여부를 명시. 차이선언부(Signature), 동작 시점(컴파일 vs 런타임)오버로딩메서드 이름은 같지만 매개변수 목록이 다름.컴파일 시점에 호출될 메서드가 결정됨...

동기란? - Synchronous동기는 작업이 순차적으로 실행되는 방식을 의미한다. 현재 작업이 끝나야 다음 작업을 실행할 수 있다. 작업의 순차 실행을 보장한다.호출자가 결과를 즉시 확인할 수 있다. 비동기란? - Asynchronous비동기는 작업이 독립적으로 실행되는 방식을 의미한다. 작업 요청 후 결과를 기다리지 않고, 다른 작업을 동시에 처리할 수 있다. 비동기와 동기 비교특징동기(Synchronous)비동기(Asynchronous)작업 처리 방식순차적으로 작업 처리독립적으로 작업 처리작업 대기 여부호출자가 작업 완료까지 대기호출자가 대기하지 않고 다른 작업 수행사용 사례트랜잭션 처리, 데이터베이스 작업네트워크 요청, 파일 I/O 처리장점간단하고 구현이 쉬움작업 병렬 처리로 성능 향상단점작업 ..

String, StringBuffer, StringBuilder의 차이 – 문자열 처리의 모든 것문자열은 자바에서 가장 많이 사용되는 데이터 유형 중 하나다. 자바에서는 문자열을 처리하기 위해 String, StringBuffer, StringBuilder라는 세 가지 주요 클래스를 제공한다. String: 불변 객체(Immutable)와 메모리 구조String은 불변(Immutable): 한 번 생성된 String 객체는 변경할 수 없다. 문자열을 수정하려고 하면 새로운 객체를 생성하여 변경된 값을 저장한다.메모리 구조: String 리터럴은 JVM의 String Constant Pool에 저장되며, 동일한 값의 문자열은 같은 참조를 공유한다.장점단점불변성 덕분에 쓰레드 안전(Thread-Safe)...

자바의 장점1. 플랫폼 독립성 – “Write Once, Run Anywhere”자바의 가장 큰 장점은 플랫폼 독립성이다. 자바로 작성된 프로그램은 JVM(Java Virtual Machine) 덕분에 한 번만 작성하면 다양한 운영 체제에서 실행 가능하다. 자바 컴파일러(javac)는 소스 코드를 바이트코드(.class 파일)로 변환한다.이 바이트코드는 특정 OS에 종속되지 않고, JVM이 바이트코드를 각 OS에서 실행 가능한 기계어로 변환한다. 2. 다양한 라이브러리와 커뮤니티 지원자바는 오랜 역사를 가진 언어로, 방대한 표준 라이브러리와 Spring, Hibernate, Apache Commons 등 강력한 오픈 소스 프레임워크가 풍부하다. 네트워킹, 데이터베이스, 파일 처리 등 대부분의 기능을 표준..

캡슐화의 개념캡슐화는 데이터(필드)와 데이터를 조작하는 메서드(동작)를 하나의 단위로 묶는 것을 의미한다.-> 즉, 객체의 내부 데이터를 보호하고, 데이터에 접근할 수 있는 인터페이스(메서드)를 제공한다.실제로 구현되는 부분을 외부에 드러나지 않도록 캡슐로 감싸 이용 방법만을 알려주는 것을 말한다.데이터를 절대로 외부에서 직접 접근을 하면 안되고 오로지 함수를 통해서만 접근해야하는데 이를 가능하게 해주는 것이 바로 캡슐화이다.정보 은닉Information Hiding) : 내부의 데이터나 함수를 외부에서 참조하지 못하도록 차단하는 개념 캡슐화가 객체지향 프로그래밍에서 중요한 이유데이터 보호: 외부 코드가 객체의 내부 데이터에 직접 접근하지 못하게 하여, 데이터의 무결성을 유지한다.인터페이스 제공: 데이터..

예외 처리 (Exception Handling)예외(Exception)란 무엇인가?프로그램 실행 중에 발생할 수 있는 비정상적인 상황을 의미한다. 예를 들어, 배열의 인덱스를 초과해서 접근하려는 시도, 파일이 없을 때 파일을 읽으려는 시도 등이 예외 상황에 해당한다.Checked Exception: 컴파일 시점에 발생 가능성을 컴파일러가 확인해야 하는 예외. 예: IOException, SQLException.Unchecked Exception: 런타임에서만 확인되는 예외. 예: NullPointerException, ArrayIndexOutOfBoundsException.예외처리가 java에서 중요한 이유는 아래와 같다. 프로그램 안정성예외를 처리하지 않으면 프로그램이 비정상적으로 종료될 수 있다.사용..

람다의 개념 및 자바에서의 도입 배경람다 표현식(Lambda Expression)은 자바 8에서 도입된 기능이다.익명 함수(anonymous function)를 간단하게 표현할 수 있는 방식입니다.자바는 람다 도입 이전에 익명 클래스(anonymous class)를 통해 함수형 스타일로 코드를 작성했지만, 코드가 길어지고 읽기 어려워져 이를 개선하기 위해 도입되었다.람다 표현식의 목적은코드의 간결함과 가독성을 높이고 함수형 프로그래밍을 지원하여 데이터 처리와 이벤트 처리를 더 직관적으로 만들기 위함이다.사용 방법(매개변수) -> { 표현식 }사용 예시를 보자면,List names = Arrays.asList("Avery", "Bobby", "Caley");// 기존names.forEach(new Cons..

컬렉션의 구조 및 계층도 Iterable │ Collection │ ┌───────────────┬─────────────────────┐ │ │ │ List Set Queue │ │ │ ┌─────┴─────┐ ┌────┴────┐ ┌──────┴───────┐ │ │ │ │ │..

1.1 제네릭의 개념 및 필요성제네릭이란 무엇인가?제네릭(Generic)은 클래스나 메서드를 다양한 타입으로 재사용할 수 있도록 도와주는 기능이다.쉽게 말해, 데이터를 담을 때 "어떤 타입이 들어올지 미리 지정하지 않고, 사용자가 필요에 따라 지정하게 하는" 방식을 말한다.Java 5부터 Generic이라는 타입이 새로 추가되었다. 제네릭은 왜 필요할까?// 타입을 지정하지 않는 경우List list = new ArrayList();list.add("Hello");list.add(123); // 다양한 타입이 들어갈 수 있음.// 제네릭을 사용하는 경우List list = new ArrayList();list.add("Hello");// list.add(123);// 타입 불일치로 컴파일 오류가 발생한다..