전체 글 검색 결과
java에서 빈 문자열을 비교할 때에는 어떤 메서드를 써야 할까요? length? 아니면 equals? 아니면 isempty? 이 셋이 어떻게 동작하는지 비교를 해 봅시다. 만약에 퍼포먼스가 차이가 난다면 어디서 차이가 나는지도 비교 분석해 보는 것도 좋은 공부가 될 듯싶습니다. 먼저 이것을 테스트할 프로그램을 작성해 봅시다. random 객체를 생성한 다음에 무언가를 하고 있는데요. 문자열 하나를 만들 때마다, 길이도 랜덤 하게 정하고, 문자 또한 랜덤하게 정한다는 것을 알 수 있어요. 문자열을 만드는 작업은 StringBuilder 클래스를 이용하는데요. 단일 스레드 환경에서는 append 작업이 많이 일어나는 경우, String보다 성능이 좋고, StringBuffer보다 빠르기 때문입니다. Str..
보통 Dynamic array, 동적 배열이라고 하면 크기가 변하는 배열을 의미합니다. c++의 STL에서는 vector가, 그리고 Java에서는 ArrayList가 있어요. 그런데, push_back이나 add를 100만번, 200만번을 해도, 실제로는 그렇게 오래 걸리지 않는 듯 싶습니다. 이는 왜 그럴까요? ArrayList와 vector는 다음 두 함수가 있습니다. size와 capacity. 이 둘의 차이를 이해하기 전에, 배열에 원소를 추가할 때 어떤 식으로 처리해야 좋은지 생각해 보도록 합시다. 추가할 공간이 많이 남아 있습니다. 예를 들자면, 이 경우, 추가할 공간이 2개나 더 있습니다. 4 뒤에 추가해도 되는 상황입니다. 그러면, push_back이나 add가 호출이 되었을 때, 4 뒤에..
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을 곱했으니까, ..
최근댓글