반응형
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(); } } }
'JAVA > Java' 카테고리의 다른 글
[JAVA] HashMap 사용하기2 (0) | 2014.11.18 |
---|---|
[JAVA] HashMap 사용하기 (0) | 2014.11.18 |
[JAVA] 영문자, 숫자, 카타문자의 개수를 세며 String ,StringBuilder 의차이점 (0) | 2014.11.18 |
[JAVA] try, catch, finally 이해하기 (0) | 2014.11.18 |
[JAVA] Interface(인터페이스)를 사용하기 (0) | 2014.11.18 |