class Tv {
// Tv의 속성(멤버변수)
String color; // 색상
boolean power; // 전원상태(on/off)
int channel; // 채널
// Tv의 기능(메서드)
void power() { power = !power; } // TV를 켜거나 끄는 기능을 하는 메서드
void channelUp() { channel++; } // TV의 채널을 높이는 기능을 하는 메서드
void channelDown() { channel--; } // TV의 채널을 낮추는 기능을 하는 메서드
}
Tv t = new Tv();
)t.channel = 7;
)클래스명 변수명; // 클래스의 객체를 참조하기 위한 참조변수 선언
변수명 = new 클래스명(); // 클래스의 객체를 생성 후, 객체의 주소를 참조변수에 저장
Tv t; // Tv클래스 타입의 참조변수 t를 선언
t = new Tv(); // Tv인스턴스를 생성 후, 생성된 Tv인스턴스의 주소를 t에 저장
Tv t = new Tv(); // 같음
t.channel = 7; // Tv인스턴스의 멤버변수 channel의 값을 7로 한다.
t.channelDown(); // Tv인스턴스의 메서드 channelDown()을 호출한다.
System.out.println("현재 채널은 " + t.channel + " 입니다.");
package ch06;
public class Ex6_1 {
public static void main(String[] args) {
Tv t; // 기본 8가지 타입이 아니기떄문에 Tv는 참조변수
// Tv클래스 타입의 참조변수
t = new Tv(); // Tv인스턴스를 생성한 후, 생성된 Tv인스턴스의 주소를 t에 저장
t.channel = 7; // (변수사용) Tv인스턴스의 멤버변수 channel의 값을 7로 한다
t.channelDown(); // (메서드호출)
System.out.println("현재 채널은 " + t.channel + " 입니다.");
}
}
class Tv {
// Tv의 속성(멤버변수)
String color; // 색상
boolean power; // 전원상태(on/off)
int channel; // 채널
// Tv의 기능(메서드)
void power() { power = !power; } // TV를 켜거나 끄는 기능을 하는 메서드
void channelUp() { channel++; } // TV의 채널을 높이는 기능을 하는 메서드
void channelDown() { channel--; } // TV의 채널을 낮추는 기능을 하는 메서드
}
Tv t1 = new Tv();
Tv t2 = new Tv();
t2 = t1;
t1.channel = 7;
System.out.println("t1의 channel값은 " + t1.channel + " 입니다.");
System.out.println("t2의 channel값은 " + t2.channel + " 입니다.");
t10x100
→ 0x100
null |
false |
0 |
power() |
channelUp() |
channelDown() |
t20x200
→ 0x200
null |
false |
0 |
power() |
channelUp() |
channelDown() |
일때, t2 = t1; 으로 t20x200
부분이 쓸모없어지게 됨.
즉 메모리만 차지하는 불필요한 변수가 됨.
이때 등장하는게 GC(Garbage Collecter : 청소부)
주기적으로 메모리를 확인하고 있다가 사용할수 없게 된 변수(가 차지하는 메모리)를 제거
원래는 메모리 사용량을 개발자가 정하고, 사용 후 메모리를 정리해야하는데, GC가 알아서 해줌. 편리함
0x100
(O)0x100
(O)0x100
0x100 |
color |
power |
channel |
0x100
0x200
(X)0x100
0x100 |
color |
power |
channel |
0x200 |
color |
power |
channel |
public class arrEx6_8 {
public static void main(String[] args) {
Tv[] tvArr = new Tv[3]; // 1. 객체 배열 생성 (참조변수 배열 생성)
System.out.println("==1= tvArr : " + Arrays.toString(tvArr));
tvArr[0] = new Tv(); // 2. 배열안에 객체 생성 (참조변수 배열 안에 참조변수 생성)
tvArr[1] = new Tv();
tvArr[2] = new Tv();
System.out.println("==2= tvArr : " + Arrays.toString(tvArr));
}
}