깨알 개념 122

배열의 길이(length)와 원소의 순번(index)

#1 알고리즘 #1-1 #1-2 자바에서, 배열을 선언할 때는 '갯수'를 이용한다. 다음 자바 코드를 보자. 자바는 0-based indexing을 사용한다. int[] array = new int[5]; // 5는 0-based index의 최댓값 혹은 1-based index의 최댓값도 아닌 그저 '갯수'다 array[2] = 789; // 2는 '순번'이다. 배열을 선언할 때 [ ] 자리에 들어가는 숫자는 '갯수'를 의미한다. 배열에 접근할 때 쓰는 [ ] 속에 들어가는 숫자가 '순번'인 것과 달리 말이다. 이를 구분하지 못하면, "0-based indexing을 쓰는 언어일지라도 선언할 때만큼은 1-based indexing을 쓰나?" 와 같은 오해가 생긴다. #1-3 '순번' 과 '갯수'는 서로..

[Java] Map<Key, Value>의 Key 자리에 원시 타입(Primitive types) 데이터 형식이 올 수 없는 이유

#1 알고리즘 #1-1 자바의 Map 인터페이스에서, Map의 Key는 제네릭으로 작성되어 있다. 따라서, "제네릭(Generic) 자리에 원시 타입(Primitive types) 데이터 형식이 올 수 없는 이유"를 생각해야 한다. #1-2 먼저, 제네릭 탄생의 배경을 알아야 한다. 제네릭은, 자바에서 제네릭 도입 이전에 발생한 여러가지 문제(타입 안전성이 없고, 프로그래머가 일일이 명시적으로 형변환을 해야 하며, 코드 재사용성이 낮음)를 해결하기 위해 도입되었다. 제네릭은 많은 종류의 객체들을 다뤄야 하는 프로그래머가 객체를 더 쉽고 직관적으로 다룰 수 있도록 도와준다. #1-3 제네릭을 한 마디로 표현하면 객체 구별의 직관화이다. 따라서, 객체와 연관이 없는, 독립적인 개념인 원시 타입 변수의 데이터..