본문 바로가기

프로그래밍/초보자를 위한 Java프로그래밍

Thinking in JAVA 2. 모든 것이 객체다.

반응형

객체는 참조(reference)하는 식별자(identifier)로 조작한다.

객체는 생성한 후 사용한다.

참조(변수)를 지정하면서 새로운 객체에 연결하려고 할때는 new 키워드를 사용한다.

데이터 저장소
  1. 레지스터 : 프로세스(CPU)에 있으며 가장 처리속도가 빠르다. 개수가 한정적이며, 컴파일러가 필요할때 할당된다.
  2. 스택 : 램 메모리 영역에 있으며, 스택 포인터를 이용하여 프로세스가 직접 관리한다. 레지스터 다음으로 처리 속도가 빠르고 효율적인 장소이다. 컴파일러는 스택에 저장할 데이터의 크기와 생명주기를 알아야 한다. 그러기때문에 유연성에 제한이 있다.
  3. 힙 : 램 메모리 영역에 있으며, 자바의 모든 객체는 여기에 위치한다. 컴파일러는 스택과 달리 이영역이 얼마동안 사용하는지 알 필요가 없다. 이 때문에 유연성이 좋고, 객체를 생성하고자 할때는 new 키워드를 사용하면된다. 하지만 스택에 비해서 메모리 할당과 해지 시간이 오래걸린다.
기본형

프로그램을 작성할때 자주 사용하는 데이터 타입이다. 이는 new 를 이용하는 힙 영역에 할당되면 비효율적이기 때문에 c나 c++ 방식을 따른다.

모든 기본형(primitives)는 이와 대응하는 포장클래스(wrapper class)들이 있다.

포장 클래스를 사용하는 이유는

  1. 메소드를 호출할 때 인자로 객체를 전달할 경우
  2. 기본형에는 상수나 메소드가 있어서 이를 이용해 처리 하는 경우

자바SE5 버전에는 오토박싱(autoboxing) 기능이 있어서 포장객체 타입으로 자동 변환해준다.(형변환 할 필요가 없음)

객체는 자동으로 소멸된다.

변수는 자신이 정의된 유효 범위(scope)에 의해서 가시성과 수명이 결정된다. 유효범위는(중괄호{})에 의해 결정된다.

자바에는 가비지 컬렉터가 있어서 new로 생성된 객체를 주시하고있다가 더이상 사용하지 않는다 판단하면 그 객체의 메모리를 자동반환한다.

static 키워드 - 특수한 용도로 하나의 메모리 영역만 필요한 경우, 클래스에서 생성된 객체와 무관하게 실행할 수 있는 메소드가 필요할 경우

반응형