정보보안공부

Java2_day03 본문

Language/Java2

Java2_day03

Steady_sp 2017. 3. 14. 19:49

*** j2.object.sysyem - Employee

 

 

-> Employee클래스 정의

-> 생성자 public int eno; 선언후 public Employee(int eno) { this.eno = eno; }

-> public void finalize(){ System.out.println("Employee(" + eno + ") 이 메모리에서

    제거됨."); } System.gc()선언시 finalize()메소드 실행

 

*** j2.api.System - GcExample

 

 

-> Employee emp;

-> emp = new Employee(1);

-> emp = null;

-> emp = new Employee(2);

-> emp = new Employee(3);

-> 생성자에의해 Employee(1) (2) 3) 가 메모리에 생성됨 문장 순서대로 출력

-> System.out.print("emp가 최종적으로 참조하는 사원번호 : ");

-> System.out.println(emp.eno); 3 출력

-> System.gc(); garbage collector 실행 : 사용되지 않고 있는 객체를 메모리에서 제거

 

*** j2.object.clone - Member

 

 

-> Member클래스의 생성자 정의

-> implements Cloneable를 구현한 클래스만 복제가

-> public Member getMember() { Member cloned = null;

    try { cloned = (Member) this.clone(); }

    catch(CloneNotSupportedException e) {

    e.printStackTrace(); }

    return cloned;

-> public boolean equals(Object obj)    {

    if(obj instanceof Member) {

    Member mem = (Member) obj;

    if(name.equals(mem.name))

    if(id.equals(mem.id))

    if(password.equals(mem.password))

    if(age == mem.age)

    if(adult == mem.adult)

        return true; }

    return false;

-> 5가지 객체가 다 같아야 true 출력

 

*** j2.object.clone - MemberExample

 

 

-> Member original = new Member("blue", "홍길동", "12345", 25, true);

    원본 객체를 생성한다.

-> Member cloned = original.getMember();

    복제 객체를 얻는다.

-> original == cloned 는 주소값비교이므로 값이 같아도 false출력

-> original.equals(cloned) 는 값을비교하므로 true출력

    cloned선언밑에 cloned.name = "홍길순" 선언하면 false출력 5가지 객체중에

    하나라도 다르면 false가 된다.

 

*** j2.object.deep_clone - Car

 

 

-> Car 클래스 선언

-> public class Car { public String model;

    public Car(String model) { this.model = model; } }

 

*** j2.object.deep_clone - Member

 

 

-> public Class Member implements Cloneable로 복제가능하도록 클래스 설정

-> 위와같이 Member클래스 정의

-> public Member getMember()도 위와같이 정의

-> protected Object clone() throws CloneNotSupportedException {

    Member cloned = (Member) super.clone(); 선언 name,age복제

    cloned.scores = Arrays.copyOf(this.scores, this.scores.length); scores복제

    cloned.car = new Car(this.car.model); car를 복제

    return cloned; 선언하면 MemberExample 가 복제값을 선언하면 복제값만 바뀐다.

 

*** j2.object.deep_clone - MemberExample

 

 

 

-> Member original = new Member("홍길동",25,new int[]{90,90}, new Car("소나타"));

-> Member cloned = (Member) original.getMember();

-> cloned.scores[0] = 100;

-> cloned.car.model = "그랜져"; cloned만 바꿀려했지만 original도 같이 바뀐다.

    Member 클래스에 protected Object clone() throws CloneNotSupportedException

    정의해서 cloned값 복제값만 바뀌도록 설정

-> System.out.print("scores : { ");

    for(i=0;i<cloned.scores.length;i++)

    System.out.print(cloned.scores[i]);

    System.out.print(if(i==(cloned.scores.length-1))? "":",");

'Language > Java2' 카테고리의 다른 글

Java2_day06  (0) 2017.03.17
Java2_day05  (0) 2017.03.16
Java2_day04  (0) 2017.03.16
Java2_day02  (0) 2017.03.11
Java2_day01  (0) 2017.03.11
Comments