자바에서 접근 제한자는 클래스, 메서드, 변수 등의 접근 범위를 제한하는 키워드입니다. 네 가지 종류가 있습니다:
- public: 모든 클래스에서 접근 가능.
- protected: 같은 패키지 또는 상속받은 클래스에서 접근 가능.
- default(아무것도 명시하지 않음): 같은 패키지 내에서만 접근 가능.
- private: 해당 클래스 내에서만 접근 가능.
- 오버라이딩(Overriding): 상위 클래스의 메서드를 하위 클래스에서 재정의하는 것. 메서드 이름, 파라미터, 반환 타입이 모두 동일해야 합니다.
- 오버로딩(Overloading): 같은 이름의 메서드를 여러 개 정의하되, 파라미터의 타입이나 개수를 다르게 하는 것.
- this(): 같은 클래스 내의 다른 생성자를 호출할 때 사용.
- super(): 상위 클래스의 생성자를 호출할 때 사용.
- final 키워드: 변수를 상수로 만들거나, 메서드를 오버라이딩하지 못하게 하거나, 클래스를 상속받지 못하게 할 때 사용.
- 변수: 값 변경 불가.
- 메서드: 오버라이딩 불가.
- 클래스: 상속 불가.
- 쓰레드(Thread): 프로그램의 실행 단위로, 여러 작업을 동시에 수행할 수 있게 해줍니다. 멀티쓰레딩은 응용 프로그램의 성능을 향상시키고, 동시 작업 처리가 필요한 경우에 사용됩니다.
- 제네릭(Generic): 클래스나 메서드에서 사용할 데이터 타입을 나중에 지정할 수 있도록 하는 기법입니다. 코드 재사용성을 높이고, 타입 안전성을 보장합니다.
- 타입 선언: 자바는 강타입 언어로 변수 타입을 명시해야 하지만, 파이썬은 동적 타이핑을 사용합니다.
- 실행 속도: 자바는 컴파일된 후 바이트코드로 실행되어 빠르지만, 파이썬은 인터프리터 방식으로 상대적으로 느립니다.
- 문법: 자바는 문법이 엄격하고 코드가 길지만, 파이썬은 간결하고 읽기 쉬운 문법을 가지고 있습니다.
- 플랫폼: 자바는 JVM 위에서 실행되며, 파이썬은 파이썬 인터프리터 위에서 실행됩니다.
- 인터페이스: 구현 없이 메서드 선언만 포함할 수 있으며, 다중 상속이 가능합니다.
- 추상 클래스: 구현이 포함될 수 있으며, 단일 상속만 가능합니다. 인터페이스보다 구체적인 구조를 가질 수 있습니다.
- static 키워드: 클래스 수준의 변수나 메서드를 정의할 때 사용합니다. 인스턴스 없이 클래스 이름으로 접근할 수 있습니다.
- 캡슐화: 데이터와 메서드를 하나의 단위로 묶고, 데이터 접근을 제한하는 것. 정보 은닉을 통해 데이터 무결성을 유지합니다.
- 상속: 상위 클래스의 속성과 메서드를 하위 클래스가 물려받아 재사용할 수 있게 하는 것. 코드 재사용성과 구조적 관계를 나타냅니다.
- main 메서드가 static인 이유는 프로그램 실행 시 JVM이 인스턴스 없이 호출할 수 있어야 하기 때문입니다.
new String()
: 항상 새로운 String 객체를 생성.""
: String 리터럴을 사용하며, 동일한 값을 갖는 리터럴은 JVM의 String Pool에서 공유됩니다.
- 동기화(Synchronized): 여러 쓰레드가 동시에 접근할 때, 공유 자원의 일관성을 유지하기 위해 사용합니다.
synchronized
키워드를 메서드나 블록에 사용하여 쓰레드 간의 충돌을 방지합니다.
- 리플렉션(Reflection): 런타임에 클래스, 메서드, 필드 등에 접근하고 조작할 수 있는 기능입니다. 동적 객체 생성, 메서드 호출 등에 사용됩니다.
- 클래스: 객체를 생성하기 위한 설계도.
- 객체: 클래스의 인스턴스, 실제 메모리에 할당된 실체.
- 인스턴스: 클래스가 메모리에 할당된 구체적인 객체를 의미합니다.
- 소스 코드 작성:
.java
파일에 작성. - 컴파일:
javac
컴파일러가 소스 코드를 바이트코드.class
파일로 변환. - 실행: JVM이 바이트코드를 로드하고, 해석하여 실행.
- 람다 표현식: 익명 함수를 간결하게 표현하는 문법입니다. 자바 8에서 도입되어 함수형 프로그래밍 스타일을 지원합니다.
- 컬렉션 프레임워크: 데이터 저장, 검색, 조작을 위한 표준화된 클래스 및 인터페이스의 모음입니다. 주요 인터페이스로 List, Set, Map 등이 있습니다.
- JVM(Java Virtual Machine): 자바 바이트코드를 실행하는 가상 머신입니다. 플랫폼 독립성을 제공하고, 메모리 관리, 가비지 컬렉션, 보안 등을 담당합니다.
- 백엔드: 서버 측 로직, 데이터베이스 연동, 비즈니스 로직 등을 처리.
- 프론트엔드: 사용자 인터페이스, 사용자 경험, 클라이언트 측 로직을 처리.
- 객체 지향 프로그래밍(OOP): 객체를 중심으로 프로그램을 설계 및 구현하는 패러다임입니다. 주요 특징으로 캡슐화, 상속, 다형성, 추상화가 있습니다.
- JDBC(Java Database Connectivity): 자바에서 데이터베이스와 연결하여 SQL 쿼리를 실행하고, 결과를 처리하는 API입니다.
- 가비지 컬렉션(Garbage Collection): 더 이상 참조되지 않는 객체를 자동으로 메모리에서 해제하여 메모리 누수를 방지합니다. JVM이 관리하며, 개발자가 직접 메모리 관리를 하지 않아도 됩니다.