정보보안공부
Java2_day03 본문
*** 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 |