그래도 해야지
[JAVA] 진법과 2의 보수법
1. 2진법과 10진법 컴퓨터는 2진 체계로 설계되어 있다. 따라서 0과 1밖에 모르기 때문에 모든 수를 2진수로 바꾸어 저장한다. int age = 25 // 25라는 10진수를 11001이라는 2진수로 변환해 저장 이처럼 2진법은 0과 1로만 데이터를 표현하기 때문에 10진법에 비해 많은 자리수를 필요로 한다. 2. 비트와 바이트 한 자리의 2진수를 비트(bit, binary digit)라고 하며, 1비트는 컴퓨터가 값을 저장할 수 있는 최소단위이다. 하지만 1비트는 너무 작은 단위이기떄문에 1비트 8개를 묶어서 바이트(byte)라는 단위로 정의해서 데이터의 기본단위로 사용한다 이 외에도 워드(word)가 있는데 이는 CPU가 한번에 처리할 수 있는 데이터의 크리를 말하며, 32비트 CPU에서 1워드..
[JAVA] 변수와 변수의 타입
1.변수(variable) 1.1 변수(variable)란? 프로그래밍 언어에서 변수란, 단 하나의 값을 저장할 수 있는 메모리상의 공간을 의미한다. 1.2 변수의 선언와 초기화 //age라는 이름의 변수 선언 int age // 변수타입 변수이름 변수타입은 변수에 저장될 값이 어떤 타입인지를 지정하는 것이다. 자바는 정수형, 실수형, 문자형 등이 있다. 변수이름은 말 그대로 변수에 붙인 이름이다. 변수는 값을 저장할 수 있는 메모리 공간이므로 변수의 이름은 메모리 공간에 이름을 붙여주는 것이다. 그래야 이름을 이용해 저장공간(변수)에 값을 저장하고 , 저장된 값을 읽어오기도 할 수 있는 것이다. 변수의 초기화 변수를 선언한 이후부터는 변수를 사용할 수 있으나 그 전에 반드시 변수를 초기화(Initial..
[JAVA] TreeMap
1. TreeMap TreeMap은 이전검색트리의 형태로 키와 값의 쌍으로 이루어진 데이터를 저장한다. 그래서 검색과 정렬에 적합하다. 이진트리를 기반으로 한 Map컬렉션이며, TreeSet과의 차이점은 TreeSet은 값만 저장 , TreeMap은 키와 값 Map.Entry에 저장한다. 검색의 관한 부분에서는 HashMap과 TreeMap 중 HashMap이 검색성능이 더 뛰어나므로 HashMap을 사용하는 것이 좋다. 다만 정렬이 필요한 경우에는 TreeMap을 사용하는 것이 좋다. 메서드 설명 메서드 설명 TreeMap() TreeMap 객체 생성 TreeMap(Comparator c) 지정된 Comparator을 기준으로 정렬하는 TreeMap 객체 생성 TreeMap(Map m) 주어진 Map에..
[JAVA] HashMap과 Hashtable
1. HashMap과 Hashtable HashMap과 Hashtable의 관계는 Vector과 ArrayList과 같아서 Hashtable보다 새로운 버전인 HashMap을 사용할 것을 권한다. HashMap은 Map을 구현했으므로 앞에서 살펴본 Map의 특징, key와 value를 묶어서 하나의 데이터(entry)로 저장한다는 특징을 갖는다. 그리고 해싱(hashing)을 사용하기 때문에 많은 양의 데이터를 검색하는데 있어 뛰어난 성능을 보인다. HashMap은 Entry라는 내부 클래스를 정의하고, 다시 Entry 타입의 배열을 선언하고 있다. 키와 값은 별개의 값이 아니라 서로 관련된 값이기때문에 각각의 배열로 선언하기 보다는 하나의 클래스로 정의해서 하나의 배열로 다루는 것이 데이터의 무결성적인..
[JAVA] TreeSet
1. TreeSet TreeSet은 이진검색트리(Binary search tree)라는 자료구조의 형태로 데이터를 저장하는 컬렉션 클래스이다. 이진 검색 트리는 정렬,검색, 범위검색(range search)에 높은 성능을 보이는 자료구조이며, TreeSet이는 이진 검색 트리의 성능을 향상시킨 레드-블랙 트리(Red Black Tree)로 구현되어 있다. 그리고 Set인터페이스를 구현했으므로 중복된 데이터의 저장을 허용하지 않으며 정렬된 위치에 저장하므로, 저장순서를 유지하지도 않는다. 이진트리(Binary Tree) 는 링크드 리스트처럼 여러 개의 노드가 서로 연결된 구조로, 각 노드에 최대 2개의 노드를 연결할 수 있으며 루트라고 불리는 하나의 노드에서부터 시작해 계속 확장해 나갈 수 있다. 위 아래..
[Java] HashSet
1. HashSet HashSet은 Set 인터페이스를 구현한 가장 대표적인 컬렉션이며, Set인터페이스의 특징대로 중복된 요소를 저장하지 않는다. 따라서 새로운 요소를 추가할 때는 add, addAll메서드를 사용하는데 만약 이미 저장되어 있는 요소와 중복된 요소를 추가하고자 하면 이 메서드들은 false를 반환해 추가에 실패했다는 것을 알려준다. 따라서 이러한 특징을 이용하면 컬렉션 내의 중복 요소들을 쉽게 제거할수 있다. ArrayList와 달리 HashSet은 저장순서를 유지하지 않으므로 저장순서를 유지하고자 한다면 LinkedHashSet을 이용해야한다. 메서드 설명 HashSet() 객체 생성 HashSet(Collection c) 주어진 컬렉션을 포함하는 HashSet 객체 생성 HashSe..
[Java] Stack과 Queue
1. Stack과 Queue 스택은 마지막에 저장한 데이터를 가장 먼저 꺼내는 LIFO(Last In First Out)의 구조리며, 큐는 처음에 저장한 데이터를 가장 먼저 꺼내게 되는 FIFO(FIrst In FIrst Out)의 구조이다. 예를 들면 스택은 웹 브라우저의 방문기록 (뒤로가기), 나중에 실행된 것부터 나중에 취소하는 실행 취소와 같은 곳에 활용할 수 있다. 큐는 프린터의 인쇄 대기열같은 우선순위가 같은 작업 예약, 프로세스 관리와 같은 입력 순서대로 처리해야할 필요가 있는 상황에 이용한다. - Stack 메서드 메서드 설명 boolean empty() Stack이 비어있는지 알려준다 . Object peek() Stack의 맨 위에 저장된 객체를 반환. pop과 달리 Stack에 객체를..
[Java] LinkedList
1. LinkedList (링크드리스트) 배열은 구조가 간단하여 사용하기 쉽고 데이터를 읽어오는데 걸리는 시간이 가장 빠르다는 장점을 가지고 있지만, 다음과 같은 단점을 가지고 있다. 크기를 변경할 수 없다. - 크기를 변경할 수 없으므로 새로운 배열을 생성해 데이터를 복사해야한다. 비순차적인 데이터의 추가 또는 삭제에 시간이 많이 걸린다. - 차례대로 데이터를 추가하고 , 마지막부터 삭제하는 것은 빠르지만, 배열의 중간에 데이터를 추가하려면 빈자리를 만들기 위해 다른 데이터들을 복사해서 이동해야한다. 이러한 배열의 단점을 보완하기 위해서 LinkedList라는 자료구조 형태가 나왔다. 링크드리스트는 메모리상에서 불연속적으로 존재하는 데이터를 서로 연결한 형태로 구성되어있다. 링크드리스트의 각 요소(No..