String클래스는 인스턴스를 생성 할 때 지정된 문자열을 변경할 수 없지만, StringBuffer클래는 변경이 가능하다. 내부적으로 문자열 편집을 위한 Buffer를 가지고 있기 때문이다. StringBuffer 인스턴스를 생성할 때, 문자열의 길이를 고려하여 버퍼의 길이를 충분히 잡아주는 것이 좋다. 편집중인 문자열이 버퍼의 길이를 넘어서면 버퍼의 길이를 늘려주는 작업이 추가로 수행되어야되서, 작업효율이 떨어진다. public StringBuffer(int length) { value = new char[length]; shared = false; } public StringBuffer() { this(16); //버퍼의 크기 지정하지 않으면 자동으로 16 } public StringBuffer(S..
String 클래스 String클래스의 주된 특지은 바로 'Immutable ' 변경불가능 하다는 것이다. String클래스에서는 문바열을 저장하기 위해서 문자형 배열 변수(Char[] v) value를 인스턴스 변수로 정의해놓고 있다. 인스턴스 생성 시, 생성자의 매개변수로 입력받는 문자열이 인스턴스 변수 (value)에 문자형 배열(char[])로 저장되는 것이다. public final class String implements java.io.Serializable, Comparable{ private char[] value; } 따라서 한번 생성된 String 인스턴스가 가지고 있는 문자열은 변경 할 수 없다. String a = "a"; String b = "b"; String a = a+b; ..
* 본문은 자바의 정석 chapter 9장을 정리한 내용입니다 Object 클래스는 모든 클래스의 최고 조상이다. 따라서 Object 클래스의 멤버들은 모든 클래스에서 바로 사용 가능하다. 그렇다면 Object 클래스의 메서드에는 어떠한 것들이 있는지 알아보자! protected Object clone() //객체 자신의 복사본 반환 public boolean equals(Object obj) // 객체 자신과 객체 obj가 같은 객체인지 알려준다 protected void finalize() //객체 소멸 시 가비지 컬렉터에 의해 자동 호출. public Class getClass() //객체 자신의 클래스 정보를 담고 있는 Class 인스턴스 반환 public int hashCode() //객체 자신..
중간값 퀵소트 (중간값 퀵소트에 대한 내용은 https://blog.naver.com/occidere/220870294816 를 참고했음을 밝힌다. 피벗값을 맨 앞, 맨 뒤로 설정하는 것에 대한 대안이 바로 '중간값 퀵소트' "Median QuickSort" 이다. 중간값 퀵소트의 원리는 일단 다음과 같다. 1. front, mid, rear 세 부분을 먼저 소트 해준다. 2. 만약 요소가 4개 이상으로 남아있다면, 기존의 퀵소트와 같은 방식으로 파티션을 해준다. -> 이 후, 피벗값의 자리를 기준으로 피벗값 앞, 피벗값 뒤를 다시 퀵소트 알고리즘을 호출해준다. 헷갈리는 내용이 많으니 아래 그림과 정리를 보면서 이해해보자. 1) pivot 값을 rear - 1 로 옮겨주는 이유는, 파티션 루프를 통해서 ..