본문 바로가기
JAVA

[자바의 정석]클래스와 객체

by xunxou 2018. 9. 12.
2018년 9월 4일의 기록이다.

친구한테 카톡으로 보낸 내용인데, 
다른 내용은 저장이 안되서 이거 포함 2개만 기록이 남아있어서 얼른 가져왔다.




클래스와 객체


클래스: 객체의 속성과 기능을 기술한다.
객체: 속성과 기능의 집합이다.



객체의 선언

Tv라는 객체가 있다고 가정한다.
아래는 객체를 선언하고 생성하는 코드다.

1. Tv t; // 객체 선언
2. t = new Tv(); // 객체 생성

1.은 Tv라는 공간 t를 메모리에 만든다. 이 공간 t에는 아직 아무값도 없다.
2. 객체를 생성한다. 객체는 클래스에 기술한대로 생성된다. t라는 변수에 해당 객체를 가리키는 주소값이 들어간다.
왜냐하면 참조변수이기 때문에(기본형 외에는 모두 참조변수)



Ex)
Tv클래스안에 int 형 멤버변수 test가 있다고 하자.

(int test =0)

Tv t1 = new Tv();
Tv t2 = new Tv();

System.out.println(t1.test) // 결과:0
System.out.println(t2.test) //결과:0

t1.test=3;
t2=t1; //t2에 t1의 주소값이 들어감.

출력(t1.test) // 결과:3
출력(t2.test) //결과:3


t2=t1 코드를 통해 t1의 주소값이 t2에 할당되었다. 저장공간에는 하나의 값만 저장될 수  있으므로 기존 t2의 주소값은 사라지며, 더이상 접근할 수 있는 변수가 기존레 t2가 가르키던 객체는 가비지 컬렉터의 대상이되어 사라진다.

======================

지역변수 , 인스턴스변수, 클래스변수

변수의 선언위치에 따라 변수의 종류가 달라진다.


지역변수 
멤버변수를 제외한 모든 변수

인스턴스변수
클래스를 선언할때 생성되는 변수. 클래스를 인스턴스화 해야지 사용할 수 있다. 각각 독립적인 저장공간을 가지기 때문에 
각각 다른값을 가질 수 있다.

클래스변수
인스턴스 변수에 static이 붙은 변수. 클래스가 메모리에 올라갈때 생성되기때문에 별도의 인스턴스화가 필요없음. 
모든 인스턴스 변수가 하나의 저장공간을 공통으로 사용한다. 
클래스.클래스변수 형태로 접근할 수 있다.


[출처] - 자바의 정석