객체
•
instance
•
객체 생성
•
8가지 데이터 타입이외에도 참조형 타입이 있다.
•
객체는 참조형 타입이다.
•
int[] → 이것도 참조형이다. (중요)
◦
int배열이라고 해서 int형이 아니다.
◦
배열은 주소를 담고 있다.
•
jvm은 메인 메소드부터 실행한다.(중요)
◦
메인 메소드를 실행하면서 참조형 타입의 변수가 있으면 주소지를 받아 데이터를 받는다.
•
객체는 .class의 설계도면대로 메모리할당을 하고 데이터를 메모리에 올린 것을 말한다.
•
String도 객체이다.
클래스
•
변수와 함수가 들어 있는 구조가 기본적인 클래스 구조이다. (필드, 메소드 부분으로 나뉘어져 있다.)
•
클래스를 컴파일을 한 .class파일이 객체의 설계도면.
•
클래스명에 _쓰지 말자.
클래스 정의 후 객체 생성
•
참조형도 메모리의 양, 무슨 값이 대입되는지 정해진다.
◦
용량을 몇 바이트 잡는지
◦
뭐가 들어가는지
•
jvm은 32bit 시스템 그래서 참조형 데이터 타입은 4byte 주소값이 들어간다.
◦
참조형 타입은 메모리에 있는 주소를 참조한다.
•
클래스 안의 메소드는 컴파일이 되고 실행이 되면 heap이라는 메모리에 올라간다.
•
함수는 4byte이다. 참조형이기 때문이다.
•
obj = new Circle(); 이렇게 객체를 생성하면 obj는 생성된 객체의 주소를 가리킨다.
•
new Circle을 하면 메모리에 객체가 생성된다.
•
obj에 생성된 객체의 주소값을 대입한다.
A a = new A();
class A{
int a;
int b;
public void c(){}
}
main(){
A a = new A();
}
Java
복사
•
대입 되기 전 주소를 담을 a라는 메모리를 할당
•
new A() 가 실행되면 메모리에 클래스의 필드 메소드를 담을 메모리를 할당
•
c도 객체 a와 똑같이 참조형 타입이므로 함수가 있는 어딘가의 주소를 가지고 있다.