이 포스트를 이해하기 위해서는, Hash 자료구조에 대한 이해가 선행되어야 합니다. 만약에 이에 대한 이해가 없다면, 이 포스팅을 보고 오시는 것을 강력하게 권해드립니다. 흔히 많은 책에서 equals를 오버라이딩 하면, hashCode를 같이 오버라이딩을 하라고 합니다. 왜 그런지 천천히 알아보도록 하겠습니다. Dog 클래스입니다. 오늘은 이 클래스만 보고 이야기를 해 보도록 하겠습니다. 먼저 hashSet에 item을 하나 넣었다고 가정해 봅시다. 그러면 HashSet의 add 메서드가 hashMap의 put 메서드를 호출합니다. put은 putVal 메서드를 호출하는데요. 이 때, 1번째 인자로 hash(key)를 넣습니다. 이 함수의 내부를 봅시다. hashSet에 add한 key 객체가 hash..
Java 검색 결과
이번 시간에는 Java의 생성자에 대해서 알아보겠습니다. 먼저 Main 클래스의 main 함수에는 다음과 같은 내용이 있습니다. "chogahui" 라는 이름을 가진 Dog 객체를 생성한 다음에, 생성한 Dog 객체가 barking합니다. 즉, 제 강아지가 barking 이라는 기능만을 수행한 것입니다. 이제 Dog 클래스를 봅시다. 먼저, String을 매개변수로 넘긴 Dog 생성자는 made a object라는 내용을 출력합니다. 그리고, 해당 객체의 name과 age를 초기화 합니다. 다음에, barking 메서드는 bark라는 내용만 출력합니다. 그러면, 위 프로그램의 출력 결과가 어떻게 나올까요? made a object가 먼저 출력이 되고, bark가 출력이 됩니다. 이를 통해서, 우리는 Do..
인스턴스를 생성했습니다. 예를 들어, MyCar 객체라면 MyCar a = new MyCar(); 이런 식으로 생성했을 거에요. 그러면, 우리는, a.run()과 같은 메소드를 호출할 수 있을 거에요. 그런데, a.run 메서드 안에서, 자기 자신을 참조하려면 어떻게 해야 할까요? 영어 시간으로 돌아가 봅시다. 지시 대명사 중에서 this, that. 이런 것들이 있어요. 이 중에 this는 이것 이라는 뜻을 가져요. Mycar a = new MyCar(); 를 호출하면, 힙에 인스턴스 변수들이 생성이 됩니다. 그리고 a는 힙에 생성된 무언가를 가리키고 있을 겁니다. 여기서 차 이름에 맞게 부속품들을 setting 한다고 생각해 봅시다. 이 일을 MyCar 클래스가 다 해버리면 힘들 거에요. 차는 달리고..
이번 시간에는 Java의 yield 메서드에 대해서 알아보도록 하겠습니다. 사실, 이것은 백준 사이트에서 yield 관련한 질문이 들어와서 레퍼런스 보면서 조금이나마 알게 되었습니다. 물론, 그 질문에 대한 답은 pc 레지스터와 쓰레드가 어떤 영역을 독립적으로 가지는지에 대해서 찾아보세요. 였지만요. 일단 이 함수는, 설명부터 보는 게 중요할 듯 싶어요. 레퍼런스 사이트에 있는 설명 중 일부만 보도록 하겠습니다. current thread와 스케쥴러가 나오고, 힌트가 나옵니다. 정확하게 해석은 못 하겠지만, 현재 돌고 있는 쓰레드에 대한 무언가의 힌트인 것으로 보여요. 계속 보면 is willing to yield가 나오는데, 양보를 한다는 것이에요. 무엇을? 그것의 current use를. 쓰레드가 프..
이제 슬슬 OOP를 배워보도록 하겠습니다. ArrayList는 동적 배열입니다. 이 클래스 내부에 있는 변수들을 봅시다. elementData와 size입니다. elementData는 ArrayList의 실제 데이터들을 저장해 놓은 배열입니다. 그리고, size는 배열 리스트의 크기를 의미합니다. 이 둘을 가지고 어떠한 연산을 할 수 있을까요? 기능 중 하나인 add입니다. 이 함수 내에서, size와 elementData를 쓰고 있다는 것을 알 수 있어요. 그러면, 필드인 size와 실제 데이터를 담아두는 배열인 elementData. 이것과 기능인 add를 묶었나요? 즉, 메소드와 필드들을 하나로 묶었다고 할 수 있어요. 그러면 이들이, arrayList라는 클래스 안에 wrapping 되어 있다고도..
최근댓글