변수의 초기화
::::특별한 Java Story 2013. 6. 4. 02:42 |/*내용을 복사 한 후 이클립스에서
ctrl + shift + F를 눌러주세요!!*/
//P.202 변수의 초기화
//이장을 쭉~읽으면서 생각한게..우리가 알고 있는 초기화 말고, 다른것을 쓸일이 있을까?라는 생각을 했다.
//답은...있으니깐 ...책에도 나왔겠지..ㅋㅋ하지만~ 예문빼고는 거의 쓸일은 없을것 같다.
//그래도 짚고 넘어가자.. 변수의 초기화만 이해가 안가서..'이게뭐야..'라고 생각하며..1시간동안 3~4번은
//정독한거 같다..ㅠ_ㅠ 스터디멤버들이여..열심히 해주세요..
package JavaTest;
//우선 클래스 하나 선언해주고~
class Product{
static int count = 0; //참 ~ 오랜만에 보는 클래스(static)변수..^^ 초기값을 0으로 선언했네요
int serialNo; //얜~ 인스턴스변수..얼래?초기값 없지? 앞에서 쭉~읽어본사람만 알수있다.
//인스턴스 변수는 자동으로 초기값을 0으로 갖게된다.
{
++count; //아...바로 이아이다..{ } 괄호만 나와서 묶는게 인스턴스 초기화 블럭이란다.쩝~
serialNo = count; //괄호안에 내용을 보아하니 클래스변수는 1씩증가해라~ 그리고 그값을 serialNo에
} // 넣어랏!! 끝! 클래스 만 따로 초기화하는 방법이 있는데..
//어?근데 이상하다..책을 본사람은 클래스 초기화는 static { } 이렇게 하는걸로
//알고있을텐데... 안타깝게도.. 여기서는 클래스변수 count를 정적으로 쓰기보다는
//유동적으로 쓰기 위해 저렇게 사용한것이다..understand??!!
public Product(){
//세현아 넌 왼쪽에 선언한 이것이 무엇이라고 생각하느냐? '생성자' 죠!
} //기본 생성자를 선언까지 해줬네~ 기본 생성자는 생략도 가능하다는거 알쥐?
//이친구는 앞으로 저위에 있는 클래스 안에 있는 ★클래스변수는'지맘대로 쓸거고'
//★인스턴스변수는 '인스턴스화'시켜서 쓸거야~~
}
///////////자 ~ 여기까지 이상없으면 Pass~~~
public class ProductTest {
public static void main(String[] args) {
//본격적으로 변수들을 사용해보겠어!!
Product p1 = new Product();
System.out.println(p1.serialNo); //0에서 1증가한 count를 serialNo에 넣어서 출력은 1이 나올테고
Product p2 = new Product(); // <--요놈 밉상(또 인스턴스 생성했음)
System.out.println(p2.serialNo); //◆ 핵심은 요기!!! '인스턴스 초기화블럭'은 인스턴스를 생성할때마다
//실행이 되기 때문에 이전에 생성됐던 값에 또 1이 증가하는거임!
//이부분은 한 3분만 코드보고 생각해보렴~...난 머리가 나빠 10분걸림
System.out.println(Product.count); //참내~ 마지막 출력와서 클래스변수 답게 인스턴스도 생성안하고 막부르네.ㅋ
//최종 count 값을 자기맘대로 쓴다고하네~~~ 건방진..클래스변수들...
}
}
//이상 여기까지가 '변수의 초기화' 부분이고 어차피 또 봐야하니 머리 싸매지 말고 집중해서 스피드하게 보고 지나가자!!
'::::특별한 Java Story' 카테고리의 다른 글
클래스간의 관계(포함관계) has-a (0) | 2013.06.06 |
---|---|
상속(inheritance) (0) | 2013.06.06 |
클래스메서드(static 메서드) 와 인스턴스메서드 (0) | 2013.06.03 |
인스턴스변수, 클래스(static)변수 (0) | 2013.06.03 |
오버로딩?! 메서드 오버로딩?! (0) | 2013.06.03 |