반응형

TestPerson.java


package eception;

// clone메소드를 재정의하기 위해서 cloneable 인터페이스 구현
public class TestPerson implements Cloneable{
	
	
	public Object clone() throws CloneNotSupportedException{
		// 자신의 멤버를 가지고 새로운 객체를 생성해서 리턴
		TestPerson obj1 = new TestPerson(this.name, this.tell);
		return obj1;
	}
	
	String name;
	String tell;
	
	
	public TestPerson() {
		super();
	}

	public TestPerson(String name, String tell) {
		super();
		this.name = name;
		this.tell = tell;
	}

	public String getName() {
		return name;
	}

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

	public String getTell() {
		return tell;
	}

	public void setTell(String tell) {
		this.tell = tell;
	}

	public String toString() {
		return "TestPerson [name=" + name + ", tell=" + tell + "]";
	}
	

}



TestMain.java



package eception;

import java.io.IOException;

public class TestMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//person 객체 생성
		TestPerson obj1 = new TestPerson("이순신","011");
		// 얕은 복사 - 참초형 변수가 가지고있는 주소를 복사해 주는것
		TestPerson obj2 = obj1;
		
		// 얕은 복사의 묹점은 하나의 변경이 다른 하나에 영향을 준다는 것.
		System.out.println(obj1.getName());
		System.out.println(obj2.getName().toString());

		// 변경은 obj1을 가지고 했지만 obj2도 영향을 받는다.
		obj1.setName("Leehansu");
		System.out.println(obj2.getName());	
		
		System.out.println(obj1.hashCode());
		System.out.println(obj2.hashCode());
		
	
		TestPerson obj3 = new TestPerson("김유신","000111");
		try {
		
			TestPerson obj4 = (TestPerson)obj3.clone();
			System.out.println(obj3.getName());
			System.out.println(obj4.getName());
			
			// 출력하는 메소드의 객체이름을 사용하면  toString 메소드의 결과를 출력하게된다
			// toSting 메소드는 재정의하지않으면 클래스 이름과 해쉬코드를 불러온다
			System.out.println(obj3.toString());
			System.out.println(obj4.toString());
			
			
			System.out.println(obj3.hashCode());
			System.out.println(obj4.hashCode());
			
			obj3.setName("Clone 복제");
			
			System.out.println(obj3.getName());
			System.out.println(obj4.getName());
		
		} catch (CloneNotSupportedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		// 시간측정 방법 System.currentTimeMillis();
		// 앞과 뒤에 걸어서 시간차를 뺀다.
		long start = System.currentTimeMillis();
		for(int i = 0; i<100000; i++){
			System.out.println("Fuck");
		}
		long end = System.currentTimeMillis();
		System.out.println(end-start);

		
		Runtime r1 = Runtime.getRuntime();
		Runtime r2 = Runtime.getRuntime();
		
		System.out.println(r1.hashCode());
		System.out.println(r2.hashCode());
		
		try {
			r1.exec("notepad.exe");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}		
}



+ Recent posts