'staticTest[실습]'에 해당되는 글 1건

  1. 2012.07.28 staticTest[실습]

* class
package : statictest
Name :  StaticTest

package : statictest
Name :  CustomerDTO


ex :

package statictest;

public class StaticTest {
 public static void main(String[] args) {
  //CustomerDTO 객체 3개 생성
  CustomerDTO c1 = new CustomerDTO("홍길동", 20);
  CustomerDTO c2 = new CustomerDTO("이순신", 28);
  CustomerDTO c3 = new CustomerDTO("길무스", 20);
  
  System.out.println(c1.getName());
  System.out.println(c2.getName());
  //어떤 객체한테 일을 시켰느냐에 따라 결과가 다르게 나온다. 그래서 getter/setter는 객체껄로 한다. 구현은 class에 했어도 객체꺼다. 객체를 생성해야지만 사용가능하다.
  
  System.out.println("지금까지 CustomerDTO class에서 생성된 객체의 개수 :  "+c1.getTotalInstanceCount());
  System.out.println("지금까지 CustomerDTO class에서 생성된 객체의 개수 :  "+c2.getTotalInstanceCount());
  System.out.println("지금까지 CustomerDTO class에서 생성된 객체의 개수 :  "+c3.getTotalInstanceCount());

  CustomerDTO c4 = new CustomerDTO();  

  System.out.println("지금까지 CustomerDTO class에서 생성된 객체의 개수 :  "+CustomerDTO.getTotalInstanceCount());//static변수를 사용해서 class의 메소드로 만들고 class명.메소드이름 으로 count에 접근하게 한다.
 }
}


-------------------------

package statictest;

public class CustomerDTO {
 private String name;
 private int age;
 private static int totalInstanceCount=0;   //클래스에서 생성된 객체의 개수를 저장.
 
 
 //생성자, setter,getter, toString()
 public CustomerDTO(){
  totalInstanceCount++;
 }

 public CustomerDTO(String name, int age) {
  this.name = name;
  this.age = age;
  totalInstanceCount++;
 }

 public static int getTotalInstanceCount(){
  return totalInstanceCount;
 }
 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public int getAge() {
  return age;
 }

 public void setAge(int age) {
  this.age = age;
 }

 @Override
 public String toString() {
  return "CustomerDTO [name=" + name + ", age=" + age + "]";
 }


 
}
----------------------------

* 메소드 안에 선언되면 local변수로 스택에 저장된다. args,c1,c2,c3,c4
* class 변수 static붙은 변수 totalInstanceCount
* instance변수는 private로 class에 선언된 변수는 힙에 저장된다. name,age

* compile 시점
1. class Loading ->이 시점에 static변수나 static 메소드는 메모리에 올라온다.
2. 실행 -> main()

메소드 영역                           static영역                              Coastant Pool
->메소드 코드                         ->static 멤버 -변수                     ->final 변수
                                                    -메소드 
CustomerDTO(){}                       int totalInstanceCount;
CustomerDTO(String name,int age){}    getTotalInstanceCount(){}
getName(){}
setName(){}
getAge(){}
setAge(){}
gettotalInstanceCount(){}

class영역(Area)->class별로 구분

* static 변수는 메인 메소드 실행전에 class 로딩시에 하나만 만들어 지고(class에 만들어짐) Instance변수는 객체 생성시마다 여러개가 생성된다.

* static영역은 코드만 있고 직접 접근이 안되서 실행시 클래스로 접근해야 하고, Instance영역은 객체를 통해서 접근해야 한다.
 
* static변수의 묵시적인 초기화 예제

package statictest;

public class StaticTest {
 public static void main(String[] args) {
  
  System.out.println("지금까지 CustomerDTO class에서 생성된 객체의 개수 :  "+CustomerDTO.getTotalInstanceCount());
  //CustomerDTO 객체 3개 생성
  CustomerDTO c1 = new CustomerDTO("홍길동", 20);
  CustomerDTO c2 = new CustomerDTO("이순신", 28);
  CustomerDTO c3 = new CustomerDTO("길무스", 20);
  
  System.out.println(c1.getName());
  System.out.println(c2.getName());
  //어떤 객체한테 일을 시켰느냐에 따라 결과가 다르게 나온다. 그래서 getter/setter는 객체껄로 한다. 구현은 class에 했어도 객체꺼다. 객체를 생성해야지만 사용가능하다.
  
  System.out.println("지금까지 CustomerDTO class에서 생성된 객체의 개수 :  "+c1.getTotalInstanceCount());
  System.out.println("지금까지 CustomerDTO class에서 생성된 객체의 개수 :  "+c2.getTotalInstanceCount());
  System.out.println("지금까지 CustomerDTO class에서 생성된 객체의 개수 :  "+c3.getTotalInstanceCount());
  
  CustomerDTO c4 = new CustomerDTO();
  
  System.out.println("지금까지 CustomerDTO class에서 생성된 객체의 개수 :  "+CustomerDTO.getTotalInstanceCount());//static변수를 사용해서 class의 메소드로 만들고 class명.메소드이름 으로 count에 접근하게 한다.
  System.out.println("지금까지 CustomerDTO class에서 생성된 객체의 개수 :  "+CustomerDTO.getTotalInstanceCount());
 }
}

실행화면 :

지금까지 CustomerDTO class에서 생성된 객체의 개수 :  0
홍길동
이순신
지금까지 CustomerDTO class에서 생성된 객체의 개수 :  3
지금까지 CustomerDTO class에서 생성된 객체의 개수 :  3
지금까지 CustomerDTO class에서 생성된 객체의 개수 :  3
지금까지 CustomerDTO class에서 생성된 객체의 개수 :  4
지금까지 CustomerDTO class에서 생성된 객체의 개수 :  4

 

'프로그래밍 > JAVA프로그래밍' 카테고리의 다른 글

싱글턴 패턴  (0) 2012.07.28
static 예  (0) 2012.07.28
package, import  (0) 2012.07.28
productManagerArray만들기 [실습]  (0) 2012.07.28
배열  (0) 2012.07.28
Posted by 조은성
,