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이 붙은 변수. 클래스가 메모리에 올라갈때 생성되기때문에 별도의 인스턴스화가 필요없음.
모든 인스턴스 변수가 하나의 저장공간을 공통으로 사용한다.
클래스.클래스변수 형태로 접근할 수 있다.
[출처] - 자바의 정석
'JAVA' 카테고리의 다른 글
[자바의 정석]Exception (0) | 2018.09.12 |
---|---|
[자바의 정석]직렬화 (0) | 2018.09.11 |
[자바의 정석] 클래스 메소드(static 메소드)와 인스턴스 메소드 (0) | 2018.09.10 |