2019/05

객체 => 상태와 행위가 존재함 (개체(entity)와 개체들에 관련된 연산을 제공하는 메서드들의 모음을 나타냄) 원시 타입(primitive type)을 제외하면 자바 언어의 다른 모든 변수들은 참조 타입이다. 객체는 참조 타입이다. 라는 말은 정확히 무엇을 의미하는 것일까? 원시 타입은 int i = 42로 변수가 선언되었을 때, 42라는 값이 메모리에 할당된다. 그러면 프로그램은 나중에 int j = i 라는 형식으로 i에 의해 표현되는 값이 j에 할당되었을 때 메모리의 다른 위치에 같은 값을 할당한다.(일단 할당하고 나면 i는 j의 값에 영향을 미칠 수 없다.) 그렇다면 객체 타입은 어떻게 동작할까 자바에서 new ArrayList(20)같은 구문은 데이터를 저장하는데 필요한 영역을 메모리에 요구..
Queue는 선입선출(First In First Out)자료구조를 구현한 자바 인터페이스이다. 새 원소를 추가하는 add, 오래된 원소를 제거하는 remove, 가장 오래된 원소를 반환하지만 삭제하지 않는 peek 메서드가 있다. Deque(`덱(deck)`이라고 발음함)는 Queue 인터페이스의 확장이며 자료구조의 양끝에 원소를 추가하고 삭제할 수 있다. @Test public void queueInsertion(){ final Queue queue = new LinkedList(); queue.add("first"); queue.add("second"); queue.add("third"); Assert.assertEquals("first", queue.remove()); Assert.assertEqu..
리스트 정렬된 컬렉션 List 인터페이스를 사용 배열과 리스트의 관계 배열 JVM은 배열이 생성될 때 반드시 배열의 크기를 알아야 한다. final String[] stringArray = new String[3]; 배열의 원소에는 인덱스 값을 이용해서 직접 접근할 수 있다.(랜덤 접근 Random Access) 배열 전체를 사용 중일 때 원소를 추가하려면 배열 크기를 늘려야 한다. 배열 복사 후 새로운 배열이 원본 배열의 주소를 가리키도록 재할당 @Test public void arrayCopy(){ int[] integers = {0, 1, 2, 3, 4}; int[] newIntegersArray = new int[integers.length + 1]; System.arraycopy(integers..
정렬되지 않은 리스트 검색 시 주어진 값에 맞는 원소를 찾기 위해선 리스트를 모두 찾아봐야 한다. 하지만 리스트가 정렬되어 있다면 이진 탐색(binary search)를 사용하는 것이 매우 효율적이다 성능 - O(logn) public static boolean binarySearch(final List numbers, final Integer value){ if(numbers == null || numbers.isEmpty()){ return false; } final Integer comparison = numbers.get(numbers.size()/2); if(value.equals(comparison)){ return true; } if(value < comparison){ binarySearc..
깡냉쓰
'2019/05 글 목록 (4 Page)