Java hashCode랑 identityHashCode의 차이점이 무엇일까요? 그에 대해서 답을 하기 전에, 간단한 실험을 하고 넘어갑시다. identityHashCode는 객체가 다르면, 무조건 다른 값을 리턴할까요? 즉, 이 메서드의 리턴 값이, 객체의 고윳값이 될 수 있을까요? 사실 저는 그런 줄 알았습니다. 100만개짜리 Object 객체 배열을 만들었습니다. 그리고, 100만개의 Object 객체를 만들었습니다. 그리고, 객체 arr[i]의 identityHashCode 값을 treeset에다가 넣었습니다. 만약에, 객체 각각의 identityHashCode가 고유하다면, treeset에 들어간 원소 갯수는 100만개였을 겁니다. 그런데 실제로는 999768개입니다. TreeSet은 기본적으로..
Java 검색 결과
java에서 빈 문자열을 비교할 때에는 어떤 메서드를 써야 할까요? length? 아니면 equals? 아니면 isempty? 이 셋이 어떻게 동작하는지 비교를 해 봅시다. 만약에 퍼포먼스가 차이가 난다면 어디서 차이가 나는지도 비교 분석해 보는 것도 좋은 공부가 될 듯싶습니다. 먼저 이것을 테스트할 프로그램을 작성해 봅시다. random 객체를 생성한 다음에 무언가를 하고 있는데요. 문자열 하나를 만들 때마다, 길이도 랜덤 하게 정하고, 문자 또한 랜덤하게 정한다는 것을 알 수 있어요. 문자열을 만드는 작업은 StringBuilder 클래스를 이용하는데요. 단일 스레드 환경에서는 append 작업이 많이 일어나는 경우, String보다 성능이 좋고, StringBuffer보다 빠르기 때문입니다. Str..
java에서, String을 Integer, 혹은 int형으로 변환하기 위해서 각각 valueOf라던지, parseInt를 많이 사용하는 편입니다. 이들은 내부적으로 어떻게 동작할까요? parseInt를 먼저 봅시다. 615번째 줄에서 같은 이름의 메서드를 호출합니다. 그런데, 2번째 인자가 10인데, 이는 10진법인 s를 int형으로 바꾸겠다는 것을 나타냅니다. 처음에, 조건에 맞는지 확인을 합니다. 만약에 맞지 않다면, 예외를 던질 텐데요. radix가 2 미만이거나 36 이상이거나, s가 null이라면, 예외를 던지게 되어 있습니다. 밑에 줄을 계속 봅시다. 558번째 줄에 limit라는 친구가 있습니다. Integer.MAX_VALUE의 값이 2148483647인데요. 여기에 -1을 곱했으니까, ..
최근댓글