본문 바로가기

Java

(29)
clone 메서드의 문제점 (얕은 복사, 깊은 복사) clone메서드는 Object클래스의 메서드로 해당 객체의 복사본을 리턴해 주는 메서드이다. 해당 메서드의 문제점은 값에 의한 복사가 이루어진다는 것이다. 값에 의한 복사란 인스턴스의 멤버들의 값들이 복사가 된다는 것이다. 이건 멤버들이 전부 참조변수가 아니면 문제가 되지 않는다. 만약 참조변수 포함하고 있다면 참조변수 안의 주소가 복사된 가 때문에 복사된 인스턴스가 원본인스턴스와 같은 주소를 가리키게 된다는 문제점이 발생한다.(얕은 복사) 이를 원치 않다면 clone()의 오버라이딩이 필요한 시점이다. ※ 해당 class가 clone()을 지원하는지 확인하는 방법은 해당 class가 Cloneable 인터페이스를 구현한 클래스인지를 확인하면 된다. 얕은 복사 예제 package myColne; impo..
자바 내 코드 성능 테스트 방법 System클래스에 static native 메서드로 currentTimeMillis()가 정의되어 있다. currentTimeMillis() 메서드를 사용해서 프로그램의 성능을 테스트할 수 있다. public static void main(String[] args) { long start = 0, end = 0; double result = 0; start = System.currentTimeMillis(); // 실행코드 작성 // 종료 end = (System.currentTimeMillis() - start); result = end / 1000.0; System.out.printf("소요시간 : %.6f초 %n", result); } 주석 안에 코드를 작성하면 소요시간을 소수점 6자리까지 잘라서..
String Class의 특징 String class는 문자열을 다루기 위한 class로 불편클래스(immutable class)이다. String class는 문자열을 변경할 경우 인스턴스 내의 문자열이 변경되는 것이 아니라 새로운 객체가 생성된다. 그래서 문자열의 수정이나 결합이 많이 일어나는 경우 StringBuffer클래스를 이용하는 것이 바람직하다. ex. String a = new String("abc"); String b = new String("def"); a = a + b; // a = new String(a+b); String a = "abc"; 와 같은 문자열 리터럴로 String을 선언하면 문자열 리터럴은 프로그램 실행 시 자동으로 constant pool에 저장된다. 그리고 해당 문자열("abc") 리터럴을 참..
Object class의 메서드 Object class의 메서드 설명 protected Object clone() 객체의 복사본을 반환한다. public boolean equals( Object obj) 두 객체의 hashcode()가 같으면 true 다르면 false를 반환한다. protected void finalize() 객체가 소멸할 때 GC에 의해 자동으로 호출된다. public Class getClass() 객체 자신의 클래스 정보를 담고 잇는 Class인스턴스를 반환한다 public int hashCode() 객체의 해시코드를 반환한다. 해시코드란 객체의 주소를 통해 만들어진 중복이 없는 식별값이다. public String toString() 객체의 정보를 문자열로 반환한다. ( getclass().getclass() +..