string
[Java] hashCode()
[Java] hashCode()
2023.07.02hashCode() hashCode()는 객체, 즉 Object에 정의되어 있다. hashCode()는 객체의 주소 값을 변환하여 생성한 고유한 정수 값이다. 만약 같은 객체를 참조하고 있다면 hashCode 값은 동일하게 나온다. 예시로, 다음과 같이 작성하여 출력해보면 정수값을 확인해볼 수 있다. class Person { } public class Test { public static void main(String[] args) { System.out.println(new Person().hashCode()); // ex) 798154996 } } Java의 모든 객체의 최상위 부모는 Object이므로 hashCode() 메서드를 Override하여 재정의할 수 있다. equals()와 hashCo..
[Algorithm] 보이어-무어 알고리즘(Boyer-Moore Algorithm)
[Algorithm] 보이어-무어 알고리즘(Boyer-Moore Algorithm)
2023.04.04보이어-무어 알고리즘(Boyer-Moore Algorithm) 보이어-무어 알고리즘은 문자열 검색에 사용되는 알고리즘이다. 보이어-무어 알고리즘은 일반적인 상황에서 문자열은 앞부분보다 뒷부분에서 불일치가 일어날 확률이 높다는 성질을 활용한다. 때문에 오른쪽 끝부터 비교하게 된다. 보이어 무어 알고리즘은 다음과 같이 이동할 칸의 개수를 저장해 놓은 테이블을 미리 만들어 저장해 놓는다. 오른쪽 끝과 일치하지 않는 경우 오른쪽 끝 문자가 일치하지 않는다면, 패턴에 해당 문자가 존재하는지 검사한다. 만약 패턴에 존재하지 않는다면, 패턴의 길이만큼 패턴을 이동시킨다. 만약 패턴에 존재한다면, 패턴의 오른쪽 끝에서부터 그 문자까지의 칸 수를 세서, 해당 칸수만큼 이동시킨다. 오른쪽 끝과 일치하는 경우 오른쪽 끝 문..
[Java] "" vs new String("")
[Java] "" vs new String("")
2023.03.19String Java에는 문자열을 쉽게 다룰 수 있는 String Class가 존재한다. 아마 객체 중에서 제일 많이 사용한 것이 무엇일까 생각해보면 거의 당연히 String 일거라 생각한다. 이렇게 많이 사용하는 만큼 사용법도 잘 알고 사용하면 금상첨화가 될 것이다. 먼저, String은 다음과 같은 방식들로 선언할 수 있다. public class Main { public static void main(String[] args) { String s1 = ""; String s2 = new String(""); } } 분명 딱 봐도 선언하는 방식이 다르다. 그런데 둘에게 차이가 없을까? 분명 어떠한 차이라도 있지 않을까? 그럼 이제부터 그 차이를 한 번 살펴보자 "" vs new String("") 위..