01 this 예약어
1. this란?
- 생성된 인스턴스 스스로를 가리키는 예약어
1-1. 자신의 메모리를 가리키는 this
this 예약어 예제 1
ThisExample.java
[결과 화면]
* bDay (참조변수)를 출력한 값과 같음 <클래스 이름@메모리 주소>
1-2 생성자에서 다른 생성자를 호출하는 this
this 예약어 예제 2
CallAnotherConst.java
* this로 다른 생성자를 호출할 때 주의사항
- this를 사용하여 생성자를 호출하는 코드 이전에 다른 코드를 넣을 수 없다
[결과 화면]
1-3. 자신의 주소를 반환하는 this
- this를 사용하여 생성된 클래스 자신의 주소 값을 반환할 수 있음
this 예약어 예제 3
CallAnotherConst.java
* this를 사용하여 자신의 주소 값을 반환 가능
[결과 화면]
02 객체 간 협력
객체 지향 프로그램에서는 객체를 정의하고 객체 간 협력으로 구현
ex) 학생이 버스나 지하철을 타고 학교에 간다.
객체 지향 프로그램 예제
Student.java, Bus.java, Subway.java, TakeTrans.java
ex) Student.java
① 4행: 멤버 변수(속성) = 학생 이름 ,학년, 돈
② 13행~25행: 메서드 = 버스타기, 지하철타기, 학생정보출력
ex) Bus.java
① 4행: 멤버 변수(속성) = 버스 번호, 승객 수, 버스가 받은 요금 총액
② 8행~19행: 메서드 = 승객이 탄다(승객 수 증가), 승객이 요금을 지불한다(버스가 받은 수입 증가), 버스정보출력
ex) Subway.class
① 4행: 멤버 변수(속성) = 지하철 노선, 승객 수, 지하철이 받은 요금 총액
② 8행~19행: 메서드 = 승객이 탄다(승객 수 증가), 승객이 요금을 지불한다(지하철이 받은 수입 증가), 지하철정보출력
ex) TakeTrans.java
[결과 화면]
03 static 변수
1. static 변수(정적 변수)란?
- 클래스에서 공통으로 사용하는 변수
- 클래스 내부에 선언하지만 프로그램이 실행되어 메모리에 올라갔을 때 딱 한 번 메모리 공간이 할당되고 그 값은 모든 인스턴스가 공유
- static 자료형 변수이름;
- 클래스에 기반한 변수라고 해서 Class variable 클래스 변수 라고도 함
학번 부여 예제
Student.java, StudentTest1.java
ex) Student.java
① 4행: serialNum은 기준 값으로 static으로 설정 > 학생이 생성될 때마다 1씩 증가하여 학번을 부여
ex) StudentTest1.java
① 7행: 학생 인스턴스를 생성할 때마다 serialNum 변수의 값은 증가 > static으로 선언한 serialNum 변수는 모든 인스턴스가 공유하기 때문
static 변수 = 정적 변수 = 클래스 변수
2. 클래스 메서드 (static 메서드)
- 클래스 메서드 내부에서 지역 변수와 클래스 변수는 사용할 수 있지만, 인스턴스 변수는 사용할 수 없음
04 변수
변수 유형
|
선언 위치
|
사용 범위
|
메모리
|
생성과 소멸
|
지역 변수
(로컬 변수) |
함수 내부에 선언
|
함수 내부에서만
사용 가능 |
Stack 스택
|
함수가 호출될 때 생성되고 함수가 끝나면 소멸
|
멤버 변수
(인스턴스 변수) |
클래스 멤버 변수로 선언
|
클래스 내부에서 사용하고
private이 아니면 참조 변수로 다른 클래스에서 사용 가능 |
Heap 힙
|
인스턴스가 생성될 때 힙에 생성되고, 가비지 컬렉터가 메모리를 수거할 때 소멸
|
static 변수
(클래스 변수) |
static 예약어를 사용하여 클래스 내부에 선언
|
클래스 내부에서 사용하고
private이 아니면 클래스 이름으로 다른 클래스에서 사용 가능 |
데이터 영역
|
프로그램이 처음 시작할 때 상수와 함께 데이터 영역에 생성되고 프로그램이 끝나고 메모리를 해제할 때 소멸
|
* 변수는 특성에 맞게 선언해서 사용하는 것이 중요
출처: Do it! 자바 프로그래밍 입문, 이지스퍼블리싱
'STUDY > Java' 카테고리의 다른 글
[JAVA] 추상 클래스, 인터페이스 (0) | 2021.11.05 |
---|---|
[JAVA] 상속과 다형성 (0) | 2021.11.05 |
[JAVA] 제어문(if, switch), 반복문(for, while, do while), 배열, ArrayList (0) | 2021.11.05 |
[JAVA] 변수, 자료형, 상수, 형변환 (0) | 2021.10.20 |
[JAVA] JAVA, ECLIPSE 설치하기 (0) | 2021.10.20 |