[Java] 어노테이션 (Annotation)
·
Java/Base
어노테이션 (Annotation)  - 프로그램의 코드에 메타데이터를 추가하는 기능을 제공하는 것  - 컴파일러 or 런타임 시점에 코드를 처리하는 도구들에게 추가적인 정보를 제공함  - 주로 클래스, 메서드, 변수, 매개변수 등에 부착해서 사용됨  - 형식 : @어노테이션(속성1=값1, 속성2=값2, ...)  - 코드 가독성 향상  - 자동화된 코드 생성, 테스트, 디버깅 등에 활용 #  빌트인 어노테이션 (Built-in Annotation)  - @Override      : 상위 클래스나 인터페이스의 메서드를 오버라이드함을 나타냄  - @Deprecated      : 해당 요소가 더 이상 사용되지 않음을 나타냄  - @SuppressWarnings      : 컴파일러의 경고를 무시하도록 지정..
[Java] 리플렉션 (Reflection)
·
Java/Base
리플렉션 (Reflection)  - 프로그램 실행 중에 클래스의 정보를 분석/조작할 수 있는 부분  - 런타임 시점에 동작으로 클래스의 메서드/필드/생성자 등에 접근하고 호출할 수 있음  - 자바의 핵심 기능  - java.lang.reflect 패키지 #  클래스 정보 가져오기123456789// 1) Class.forName() 사용 Class<?> clazz = Class.forName("com.example.MyClass"); // 2) 객체.getClass() 사용 MyClass obj = new MyClass();Class<?>&..
[Java] JVM (Java Virtual Machine)
·
Java/Base
JVM (Java Virtual Machine)  : Java 바이트코드(.class 파일)를 OS에 특화된 코드로 변환하여 실행하는 역할을 하는 가상의 실행 환경 #  주요 역할  1) Java 바이트코드 실행      - Java 소스 코드(.java 파일)는 컴파일러에 의해 Java 바이트코드(.class 파일)로 변환됨          → 바이트코드는 모든 JVM에서 실행될 수 있음  2) 메모리 관리      - 객체의 생성과 가비지 컬렉션을 통한 메모리 해제를 담당함  3) 플랫폼 독립성      - 한 번 작성된 Java 코드가 어떤 플랫폼에서든 실행 가능하도록 함      - 플랫폼에 따라 달라질 수 있는 저수준 세부 사항을 추상화함          → Java 바이트코드가 특정 운영체제/..
[Java] Garbage Collection
·
Java/Base
Garbage Collection  : 프로그래밍 언어의 메모리 관리를 자동화하는 역할  - 프로그램이 힙 메모리 영역의 객체들을 더 이상 참조하지 않게 되면, 자동으로 메모리에서 해제됨  - 백그라운드에서 실행되는 Daemon Thread에 속함  - 개발자는 객체의 메모리 해제에 신경을 쓸 필요가 없음      → 메모리 누수 문제 감소 & 더 간결한 프로그래밍 가능  - 프로그램의 안정성 향상  - 단점      : 가비지 컬렉션의 시점과 소요 시간을 정확히 예측하기 어려움          → 고성능 시스템에서는 가비지 컬렉션에 의한 성능 저하를 고려할 것          ⇒ 불필요한 객체 생성 주의 & 객체의 참조를 적절하게 관리
[Java] 객체 지향 프로그래밍 (OOP)과 SOLID 원칙
·
Java/Base
객체 지향 프로그래밍  - 프로그램을 '객체'라는 기본 요소로 봄      → 이들 간의 관계를 형성하거나 상호작용함으로써 프로그램을 설계/구현하는 방법론  - 객체      : 데이터 (상태)와 데이터를 처리하는 함수 (행동)를 하나로 묶은 것#  핵심 원리  1) 캡슐화 (Encapsulation)      : 객체의 데이터를 외부로부터 직접 접근할 수 없도록 숨기고, 함수를 통해서만 접근하도록 함          → 객체의 내부 데이터를 보호하고, 객체가 받아들일 수 있는 연산을 제어함  2) 상속 (Inheritance)      : 한 클래스의 속성/메서드를 다른 클래스가 물려받는 것          → 코드의 재사용성 향상 & 중복된 코드 축소  3) 다형성 (Polymorphism)     ..