📌 변수의 기본형 & 참조형
✅ 기본형 (Primitive Type)
- 논리형, 문자형, 정수형, 실수형 총 8가지:
boolean, char, byte, short, int, long, float, double
- 값 자체가 스택(Stack) 영역에 저장됨
✅ 참조형 (Reference Type)
- 실제 값은 힙(Heap) 영역에 저장되고, 참조값(주소)은 스택에 저장
- 종류
- 클래스 타입: String, Integer, ArrayList, HashMap 등
- 배열 타입: int[], String[], User[]
- 인터페이스 타입: List, Map, Runnable
- 열거형 타입: enum
📌 형변환
✅ 자동(묵시적) 형변환
- 낮은 자료형 → 높은 자료형 (데이터 손실 없음)
- 예: int → long, float ← long
- float가 4바이트지만 지수/가수 구조로 long보다 넓은 범위 표현 가능
- 단, float는 정밀도가 낮아 큰 수 표현엔 double 추천
✅ 강제(명시적) 형변환
- (타입) 키워드를 사용해 강제 변환
- 예: (int)3.14, (double)10
- 데이터 손실 가능성 있음
📌 배열
- Java 배열은 고정 길이, 선언 시 크기 지정 필요
- 직접 출력 시 주소값 출력됨
- 배열 유틸
- Arrays.toString(arr) : 배열 값 출력
- Arrays.copyOf(arr, n) : 복사 (얕은 복사)
- Arrays.sort(arr) : 정렬
- Arrays.sort(arr, Collections.reverseOrder()) : 역순 정렬
- 객체 배열은 참조 복사되므로, 수정 시 내용 공유됨
- Comparable<T> 구현 → compareTo() 오버라이딩으로 정렬 가능
📌 객체지향 클래스 문법 (OOP)
public class Circle {
public int radius;
public String name;
public double getArea() {
return 3.14 * radius * radius;
}
}
✅ 객체 vs 인스턴스
Animal cat = new Animal();
- 클래스: Animal
- 객체: cat
- 인스턴스: cat은 Animal의 인스턴스
✅ 필드(멤버 변수)
구분저장 영역특징
| 클래스 변수 (static) |
메소드 영역 |
모든 인스턴스에서 공유 |
| 인스턴스 변수 |
힙 영역 |
인스턴스마다 별도 존재 |
| 지역 변수 |
스택 영역 |
메서드 블록 내에서만 존재 |
✅ 메소드
구분설명
| 클래스 메서드 (static) |
인스턴스 생성 없이 호출 가능, 인스턴스 변수 접근 불가 |
| 인스턴스 메서드 |
인스턴스 생성 후 호출 |
| 생성자 (constructor) |
객체 생성 시 한 번 호출, 초기화 용도 |
✅ this 키워드
- 해당 클래스 자신의 인스턴스를 가리킴
- 인스턴스 메서드나 생성자 내에서 사용됨
📌 클래스 상속 (extends)
- Java는 단일 상속만 지원
- 다중 상속 시 동일 메서드 중복 문제 발생 가능성 때문
- 생성자 호출 순서: 부모 → 자식
- super 키워드
- super.name: 부모 클래스의 변수
- super() : 부모 클래스 생성자 호출
📌 제어자 (modifier)
✅ 접근 제어자
제어자접근 가능 범위
| public |
전체 (어디서든 접근 가능) |
| protected |
같은 패키지 + 다른 패키지의 자식 클래스 |
| (default) |
같은 패키지 내부 |
| private |
같은 클래스 내부 |
✅ 기타 제어자
키워드설명
| static |
클래스 레벨, 공유 변수/메서드 |
| final |
상수, 메서드/클래스 오버라이딩 금지 |
| abstract |
추상 클래스/메서드 정의용 |