2008. 7. 16. 10:41

chapter 4. 메소드에서는 인스턴스 변수를 사용합니다.

클래스에서는 객체가 아는것과 하는것을 정의한다.
인스턴스 변수는 객체가 아는것이고 메소드는 객체가 하는것이다.

메소드에 뭔가를 보내거나 돌려받을 수 있습니다.
메소드에서 사용하는 것은 매개변수(parameter), 전달하는 것은 인자(argument)라고 한다.

Dog d = new Dog();                     d라는 레퍼런스 변수에 bark라는 메소드를 호출하고 3 인자값을 전달한다.
d.bark(3);
void bark(int numOfBarks) {          3이라는 인자는 numOfBarks에 전달이 된다.
while (numOfBarks > 0) {
System.out.println("ruff");
numOfBarks = numOfBarks -1 ;      numOfBarks 이라는 매개변수는 메소드 내에서 변수로 쓰인다.
}
}

메소드에서 매개변수를 받도록 선언했다면 그 메소드를 사용할 때 반드시 뭔가를 전달해야 하는데 이 뭔가는 반드시 정해진 유형의 값이어야 한다.

메소드에 인자 두 개 이상을 전달 할 수 있으며,
변수의 유형이 매개변수 유형과 일치한다면 변수를 매개변수로 전달할 수도 있다.

자바는 값을 전달한다 ( 복사본을 전달하는 것이다.)   

메소드를 선언할때는 반드시 리턴유형을 지정해야 한다.(void로 지정하면 아무것도 리턴하지 않는다.)
void가 아닌 리턴 유형을 지정했을 경우 반드시 선언된 리턴 유형과 호환 가능한 값을 리턴해야 한다.

매개변수와 리턴 유형의 활용 방법
개터(getter) : 어떤 값을 리턴값 형태로 받아오기 위한 용도
세터(setter) : 어떤 값을 인자로 받아서 인스턴스 변수를 그 값으로 설정하기 위한 용도

캡슐화 : 모든 인스턴스 변수는 세터 메소드를 만들어서 직접 접근할 수 없도록 한다.
인스턴스 변수는 private로 지정하고 게터와 세터는 public로 지정해서 데이터를 숨긴다.

인스턴스 변수와 지역변수의 차이점
인스턴스 변수 : 유형과 이름이 들어가므로 어떤 값을 대입하지 않거나 세터 메소드를 호출하지 않은 경우에는 기본값이 호출 된다.
지역 변수 : 기본값이 없으므로 사용하기 전에 반드시 초기화를 해야 한다.

원시변수와 객체 레퍼런스 변수를 비교할때는 == 연산자를 이용하면 된다.

'Java > Head First 자바' 카테고리의 다른 글

chapter 7. 상속과 다형성  (1) 2008.07.22
chapter 6. 자바 API를 알아봅시다.  (0) 2008.07.20
chapter 5. 프로그램 만들기  (2) 2008.07.16
chapter 3 원시변수와 객체 레퍼런스 변수  (0) 2008.07.15
chapter 1,2  (1) 2008.07.12
2008. 7. 15. 23:14

chapter 3 원시변수와 객체 레퍼런스 변수

3. 원시변수와 레퍼런스
변수는 원시변수와 객체 레퍼런스로 나누어지며, 이전까지는 변수를 객체상태(인스턴스 변수)지역 변수(메소드 안에서 정의된 변수)로만 사용했으나,
이번장에서는 추가적으로 인자(호출하는 코드에 의해 메소드로 전달되는 값)
리턴 유형(메소드를 호출한 부분으로 돌아가는 값)으로도 사용한다.

자바는 유형을 철저히 따진다(byte에 short나 int 변수를 집어넣지 못한다)
변수는 유형과 이름을 반드시 갖고 있어야 한다.

숫자원시변수는 아래와 같다
이름                크기
byte                8비트(-128~127)
short               16비트(-32768~32767)
int                   32비트
long                64비트

(부동소수점 소수)
float                32비트
double            64비트

변수에 값을 대입하는 방법
등호 옆에 리터럴 값을 입력하는 방법(x=12, isGood=true 등)
한 변수의 값을 다른 변수에 대입하는 방법(x=y)
두가지를 병행하는 방법 (x=y+2)

변수 생성 규칙
알파벳, 언더바(_), 달러($)로 시작해야 한다.(숫자로 시작 안됨)

예약어를 이름으로 사용해서는 안된다
BCBILFD (boolean, char, byte, int, long, float, double)

myDog.bark(); -> myDog라는 변수로 참조할 수 있는 객체를 이용하여 bark()메소드를 호출하라는 의미

Dog myDog = new Dog();
myDog라는 레퍼런스 변수를 생성합니다(Dog 유형의 변수네요.)
힙에 새로운 Dog 객체를 위한 공간을 마련하도록 합니다.
새로운 Dog 객체를 myDog 레퍼런스 변수에 대입합니다.

int [] nums ; -> int 유형의 nums 레퍼런스 변수를 정의한다.
nums = new int[7]; -> 길이가 7인 새로운 int 배열을 생성하고 nums 라는 int[] 변수에 대입한다.
2008. 7. 15. 19:10

훔 글이 없네.

매일 매일 한개 이상 포스팅 하기!

어때?