로그인 회원가입
모두인포
전체IT경제사회생활스포츠시사여행연애

자바 초기화(Initialization)와 생성자(Constructor)

lmkfox · 2025-07-13 · 조회 0
자바 초기화(Initialization)와 생성자(Constructor)
1. 초기화(Initialization)란? 초기화란 변수에 처음 값을 설정하는 것입니다. 자바에서는 변수나 필드를 여러 방식으로 초기화할 수 있습니다. 자바 초기화 방식 요약 초기화 방식 설명 예시 명시적 초기화 선언과 동시에 값을 지정 int x = 10; 초기화 블록 중괄호 {}를 사용한 블록에서 초기화 static 또는 인스턴스 초기화 블록 생성자 초기화 생성자 내부에서 변수 초기화 this.value = 100; 기본값 초기화 자바가 자동으로 설정 (필드에 한함) int → 0, boolean → false 등 2. 생성자(Constructor)란? 생성자는 객체를 생성할 때 자동으로 호출되는 특수한 메소드입니다. 클래스 이름과 동일하며, 반환 타입이 없습니다. 생성자의 특징 - 클래스 이름과 동일 - 반환값이 없음 (void도 쓰지 않음) - 오직 객체 생성 시(new 키워드 사용 시) 자동 호출 - 필요에 따라 오버로딩 가능 (여러 개 정의) 기본 생성자 자바 컴파일러는 사용자가 생성자를 정의하지 않으면 자동으로 기본 생성자를 생성합니다. public class Person { String name; // 기본 생성자 (명시적으로 작성) public Person() { name = "홍길동"; } } 3. 매개변수가 있는 생성자 public class Person { String name; public Person(String name) { this.name = name; // this는 현재 인스턴스를 가리킴 } } 사용 예: Person p = new Person("이순신"); System.out.println(p.name); // 이순신 4. 생성자 오버로딩 하나의 클래스에 여러 개의 생성자를 정의할 수 있으며, 매개변수의 개수나 타입으로 구분합니다. public class Car { String model; int year; public Car() { this("모델 없음", 0); } public Car(String model) { this(model, 0); } public Car(String model, int year) { this.model = model; this.year = year; } } 5. this() 생성자 호출 하나의 생성자에서 같은 클래스 내의 다른 생성자를 호출할 때 this()를 사용합니다. public class Book { String title; int price; public Book() { this("제목 없음", 0); } public Book(String title, int price) { this.title = title; this.price = price; } } 6. 초기화 블록 인스턴스 초기화 블록 객체가 생성될 때마다 실행됩니다. 생성자보다 먼저 실행됩니다. public class Example { int number; { number = 100; // 인스턴스 초기화 블록 } public Example() { System.out.println("생성자 호출됨"); } } static 초기화 블록 클래스가 메모리에 최초 로딩될 때 단 한 번 실행됩니다. public class StaticExample { static int staticVar; static { staticVar = 500; System.out.println("static 초기화 블록 실행"); } } 7. 생성자와 초기화 순서 객체가 생성될 때 실행 순서는 다음과 같습니다: - 필드의 명시적 초기화 - 인스턴스 초기화 블록 - 생성자 8. 정리 개념 설명 명시적 초기화 변수 선언과 동시에 초기값 지정 초기화 블록 생성자 호출 전 실행되는 초기화 영역 생성자(Constructor) 객체 생성 시 호출, 클래스 이름과 동일, 반환형 없음 this 키워드 인스턴스 자신을 가리킴 this() 다른 생성자를 호출할 때 사용 생성자 오버로딩 다양한 인자를 받는 여러 생성자 정의 가능 9. 예제 코드 종합 public class Student { String name; int grade; // 인스턴스 초기화 블록 { grade = 1; } // 생성자 1 public Student() { this("이름 없음"); } // 생성자 2 public Student(String name) { this.name = name; } void printInfo() { System.out.println("이름: " + name + ", 학년: " + grade); } public static void main(String[] args) { Student s = new Student("김영희"); s.printInfo(); // 이름: 김영희, 학년: 1 } }

댓글

아직 댓글이 없습니다.

로그인 후 댓글을 남길 수 있습니다.