오늘은 Java의 접근 제어자 중에서, private와 public에 대해서만 알아보도록 하겠습니다. 나머지 2개는 상속이랑, 패키지에 대해서 배우고 언급하도록 하겠습니다. 사실 저 혼자서 개발할 때에는 그냥 Class를 구조체 쓰듯이 다 public으로 선언해 버리고, 다른 클래스에서 접근 가능하게 할 수 있습니다. 그냥 내 마음대로 짜면 되니까요. 그랬으면 좋겠어요. A 클래스는 위와 같습니다. packA에 선언이 되어 있습니다. public으로 선언된 a가 있고, private로 선언된 b가 있습니다. 프로젝트의 구조는 다음과 같습니다. packA에 있는 A 클래스가 있고요. main 함수는, Main 패키지의 Main 클래스 안에 있습니다. 메인 함수에서 A 객체를 하나 생성하였습니다. A의 필드..
코딩 검색 결과
나중에 설명할 인덱스를 소개하기 전에, Hash와 균형 트리의 차이점을 짚고 넘어가는 게 나을 듯 싶습니다. 사실, 나중에 인덱스에 대해서 할 때, 이런 이야기는 상당히 많이 나오기 때문입니다. 범위 검색과 동등 검색. 맞나 잘 모르겠어요. 일치 검색인지. 하여튼, Tree 기반 인덱스와 Hash 기반 인덱스가 나오는데요. 이에 대해서 지금은 잘 모르셔도 괜찮습니다. 대신에, 균형 Tree 기반으로 찾는 것과, Hash 기반으로 찾는 것에 대해서 다루고 넘어가도록 하겠습니다. 자료구조에 대해서 복습도 할 겸. 사실 왜 그렇게 하는지 디스크와 메모리에 대한 차이도 이해해야 겠지만, 여기서 길게 언급하면 글이 매우 길어질 듯 싶으니 언급하진 않겠습니다. 먼저, Hash 기반 자료구조는 = 검색에 특화된 구조..
java의 클래스들을 뜯다 보면, final 이라던지, static final과 같은 키워드가 생각보다 자주 보인다는 것을 알 수 있어요. 특히, String은 이 키워드가 상당히 많이 붙어있습니다. 이것은 무엇을 하는 것일까요? 한 번 값이 정해지면 그 값을, 수정할 수 없게 만드는 것입니다. 언제 정해질 수 있을까요? 메모리에 올라갈 때. 한 가지 예를 들어보겠습니다. String 클래스 안에는 final 필드인 value가 있습니다. 이것은 문자열의 실제 내용을 저장하기 위한 char형 배열입니다. 이것은 언제 값이 정해지나요? 생성자에서 초기화를 할 때 값이 정해집니다. String 객체 a를 새로 생성해 봅시다. 그러면, 생성자가 호출이 되고, 152 ~ 153번째 줄이 끝나고 나면, val의 ..
저번 시간에 함수 포인터에 대해서 언급을 했고, clockwise 해석법에 대해서도 간단하게 언급을 했으니, 다소 복잡한 것을 해석해 보도록 하겠습니다. C언어에는 signal 함수가 있는데요. 이것의 선언부만 간단하게 해석해 보도록 하겠습니다. 간단해 보이진 않지만요. 사실 원래는, void (*signal(int,void (*)(int)))(int); 입니다. 먼저, keyword를 찾아봅시다. signal입니다. 그리고 큰 덩어리 하나 찾아봅시다. signal에서 시계 방향으로 돌기 시작했을 때 맨 먼저 만나는 '('과 쌍을 이루는 ')'을 찾아서, 표시를 해 주었는데요. 이 부분은 안쪽에서 해석을 해 보도록 하겠습니다. 먼저, keyword인 signal에서, 오른쪽을 먼저 보니까 ()이 보였습니..
포인터를 배우시면, 가장 머리가 아픈 부분이 함수 포인터일 겁니다. 교재에서는 아마 signal이랑, qsort를 예제로 많이 들 거에요. 사실 signal은 잘 안 쓰지만요. qsort는 비교체를 넘겨줄 때 함수 포인터를 넘겨주고요. 그런데, 이것이 대체 무엇을 하는 것일까요? 어떻게 실행되는지, 자세하게 분석을 하는 것은 아마도, 어셈블리랑 같이 하면서 이야기를 할 듯 싶어요. 오늘은 예제 코드만 간단하게 이해해 보도록 하겠습니다. 17줄짜리 프로그램입니다. func라는 변수를 선언했는데요. 이것이 무엇인지만 안다면, 끝난다고 보셔도 될 듯 싶습니다. 먼저, 6번째 줄에서, void (*func)() = foo; 라고 되어 있습니다. 선언부만 잘 보시면 되는데요. 시계 방향으로 해석하겠습니다. 먼저 ..
최근댓글