ArrayList와 LinkedList는 Java에서 제공하는 Collection으로 List 인터페이스를 상속한다. 먼저 둘에 대해 알아보자. ArrayList는 배열을 사용한다고 생각하면 되는데 데이터를 추가하거나 삭제할 때 이미 크기가 정해져 있어 임시 배열을 생성해서 데이터를 복사하는 방법을 사용하고 있다. LinkedList는 각 노드의 앞과 뒤에 있는 노드의 주소로 연결되어 있어서 데이터를 추가하거나 삭제할 때 알고 있는 앞과 뒤쪽 노드의 주소 값만 바꿔주면 된다. 이제 앞에서 본 두 리스트의 차이점을 보자. 1. 검색 ArrayList는 각 데이터의 index를 가지고 있으므로 바로 검색할 수 있어 빠르다. LinkedList는 제일 앞에 있는 데이터부터 차례대로 찾아야 하기 때문에 느리다...
먼저 일차원 배열을 복사해보자 boolean[] bool1 = new boolean[1]; boolean[] bool2 = bool1; bool2[0] = true; 위와 같이 작성했을 때 boo1[0]은 false가 아닌 true를 return 한다. 왜냐하면, 배열 또한 객체이기 때문이다. 즉 bool2에 bool1의 값을 넘겨주는 게 아닌 주솟값을 넘겨준다. 그렇다면 어떻게 복사해야 같은 주솟값을 가지지 않을까? 세 가지 방법이 있다 (boolean 배열은 초기화하지 않아도 false를 담고 있다). 1. 새로운 배열을 만들어 해당 배열에 값을 넣어준다. boolean[] bool1 = { true }; boolean[] bool2 = new boolean[1]; for(int i = 0; i < ..
final 예약어를 예제와 함께 알아보자. - 순서 - 1. 클래스에 final이 붙으면? 2. 메소드에 final이 붙으면? - 변수에 final이 붙을 때 공통 - 3. 클래스 변수에 final이 붙으면? 4. 인스턴스 변수에 final이 붙으면? 5. 지역 변수에 final이 붙으면? 6. 매개 변수에 final이 붙으면? 7. 변수가 참조 자료형일 때 final이 붙으면? -------------------------------------------------------------------------- 1. 클래스에 final이 붙으면? final class SuperClass { } public class SubClass extends SuperClass { // 에러가 난다. } 상속되지 않..