목차
1. 클래스
2. 필드
3. 생성자
4. 메소드
Intro
• 변수(Variable): 메모리상에 데이터를 저장하는 기억공간
• 변수 만드는 형식: 자료형 변수명 = 데이터; (ex. Int num = 10;)
① 지역변수(Local variable): 스택(stack) 영역에 저장
1. 메소드 안에서 정의되는 변수
2. 매개 변수(parameter): 메소드 괄호안에서 사용되는 변수
3. 블럭문(조건문, 반복문) 안에서 사용되는 변수
→ 해당 메소드가 호출될때 스택 메모리에 할당되고, 메소드 실행이 종료되면 자동으로 메모리가 해제된다.
② 멤버변수(전역 변수, field)
- heap 메모리 영역에 저장
- 메소드 바깥쪽에 정의되는 변수(ex. Animal.java에서 public class Animal의 int age;)
1. 멤버변수는 heap메모리 영역에 저장됨.
2. 클래스(생성자, 메소드) 안에서 모두 사용이 가능함
3. 참조형(클래스, 배열, 인터페이스)을 이용해서 new연산자로 객체를 생성할 때 heap 메모리 영역에 새로운 공간을 할당 받는다.
→ 메모리 해제 시점: 더 이상 참조할 주소값이 없을 때 → garbage collection
1. 클래스(Class)
1) 객체 생성
- new 클래스();
- 클래스()는 생성자를 호출하는 코드
- 생성된 객체는 힙 메모리 영역에 생성
2) 클래스 생성
• 클래스 변수 = new 클래스();
3) 클래스의 구성 멤버
- 필드(Field): 객체의 데이터가 저장되는 곳
- 생성자(Constructor): 객체 생성시 초기화 역할 담당
- 메소드(Method): 객체의 동작에 해당하는 실행 블록
2. 필드(Field)
1) 필드 선언
타입 필드 = 초기값;
2) 필드의 기본 초기값 → ★FieldEx 참고
- 객체 생성시 자동으로 기본값으로 초기화
- 같은 기본형 자료라고 하더라도, 지역변수면 변수의 초기값이 자동으로 설정되지 않지만,
멤버변수는 초기값이 자동으로 설정됨(ex. Int형은 0, double형은 0.0)
3) 필드 사용
- 필드 값을 읽고, 변경하는 작업을 말한다.
- 필드 사용 위치:
객체 내부: "필드 이름" 으로 바로 접근
객체 외부: "변수.필드이름"으로 접근
3. 생성자(Constructor)
1) 생성자
- New 연산자에 의해 호출되어 객체의 초기화 담당
- 생성자는 클래스명과 동일한 이름으로 생성해야 한다.
- 기본 생성자(default constructor): 매개변수가 없는 생성자
- 매개변수가 있는 생성자: 괄호 안에 매개변수를 가지는 생성자
* 생성자에서 접근제어자는 public 또는 default 접근제어자 사용
2) 생성자의 역할
- 객체가 생성될 때 heap영역에 멤버변수들이 저장될 수 있는 공간을 할당하고 초기화하는 역할을 담당한다.
3) 생성자 호출
- 생성자는 객체가 생성될 때 호출된다.
ex) Animal an = new Animal();
생성자 호출
- 기본 생성자는 객체가 생성될 때 컴파일러가 자동으로 생성해준다.
• 다른 생성자 호출: this()를 이용해 같은 클래스 안에 있는 생성자를 호출할 수 있다.
4) 생성자 오버로딩(overloading)
- 한 개의 클래스 안에 동일한 이름의 생성자를 여러 개 생성하는 것
- 올바른 오버로딩 방법: [① 매개변수의 자료형, ② 매개변수의 개수, ③ 매개변수의 순서]를 다르게 하기
4. 메소드(Method)
1) 리턴값이 있는 메소드
- return문: 메소드를 호출한 곳에 값을 돌려주는 역할
- 반드시 리턴(return)문 사용해 리턴(return)값 지정해야 함
- return 문 뒤에 실행문 올 수 없음(return문은 메소드 가장 마지막 줄에 사용해야 한다.)
2) 메소드 호출
- 클래스 내부: 메소드 이름으로 호출
- 클래스 외부: 객체 생성 후, 참조 변수를 이용해 호출
'Java' 카테고리의 다른 글
9일차: Java 패키지/접근 제어자/날짜시간 관련 클래스 - 2021.06.25 (0) | 2021.06.25 |
---|---|
8일차: Java 메소드 호출/static/final - 2021.06.24 (0) | 2021.06.24 |
6일차: Java 배열/String/객체 - 2021.06.22 (0) | 2021.06.23 |
5일차: Java 메소드호출/배열 - 2021.06.21 (0) | 2021.06.21 |
4일차: Java 반복문(for,while,do~while)/보조제어문 - 2021.06.18 (0) | 2021.06.18 |