최근에 안드로이드폰을 구매하여 안드로이드 어플 하나 만들어 보려고 하고 있습니다.
안드로이드 개발 관련 페이지를 보니 노트패드를 만드는 튜토리얼이 있어서 따라 해보고 있는 도중에 의문이 생겨서 질문을 해봅니다.
http://developer.android.com/resources/tutorials/notepad/index.html
변수를 선언할때 integer,long의 데이터형을 쓰는걸로 알고 있습니다.
그런데 하던 도중에
private EditText mBodyText; 을 봤습니다.
미약하지만 한글로 풀이해 보면..
EditText데이터형의 mBodyText 변수를 private관계로 선언하시오.
라고 알고있습니다.
레퍼런스에서 검색을 해보니 EditText는 android.widget EditText로 public class네요.
읽어보니 레퍼런스에는 클래스의 메쏘드와 필드가 나오고 있고요.
저는 클래스를 사용하려면 메모리를 할당해서 쓰는걸로 알고 있어서,
private EditText mBodyText = new EditText();
mBodyText.addFocusables(ArrayList<View> views, int direction)
이런식으로 쓸줄 알았습니다.
그런데 mBodyText = (EditText)findViewById(R.id.body);
이렇게 쓰네요. 위의 줄만 보면 하나의 변수네요.
클래스가 하나의 변수라니 너무나 혼란스럽습니다.
클래스의 경우 무조건 new를 이용해서 메모리 할당하지도 않고 쓰는 걸로 알고 있는데 이런식으로 써서 왜 그런지 알 수가 없습니다.
이제까지는 int,long등은 이미 배웠던 데이터형인데, 갑지가 본적이 없는 데이터형이 툭하고 튀어나와서 알 수가 없네요.
EditText외에도 Cursor, Bundle등이 계속 튀어나오는데 혼란스럽습니다.
공지사항을 다 읽었음




int나 long등은 기본형 변수이고, mBodyText 참조형변수입니다.
참조형변수는 사용자가 정의가능한 것으로써 그 수는 무한대가 됩니다.
new 연산자는 클래스의 인스턴스를 생성한 후 그 주소값을 리턴하게 됩니다.
그 주소값이 이 참조형변수에 저장되고 참조형변수를 통해서 인스턴스에 접근할 수 있습니다.
메모리를 할당하지 않는 클래스는 없습니다. static클래스라도 메모리가 할당되게 되어 있습니다.
클래스와 인스턴스, 그리고 기본형번수와 참조형변수 사이에서 헷갈리신듯 합니다. ^^