본문 바로가기

Programming 언어

(22)
18. 자바에서 제공되는 자료구조 구현 클래스들 - 컬렉션 프레임워크 1. 컬렉션 프레임워크 프로그램 구현에 필요한 자료구조(Data Structure)를 구현해 놓은 JDK 라이브러리 1. java.util 패키지에 구현 2. 개발에 소요되는 시간을 절약하면서 최적화 된 알고리즘을 사용할 수 있음 3. 여러 구현 클래스와 인터페이스의 활용에 대한 이해가 필요 Collection과 Map 크게 두 갈래 2. Collection 인터페이스 하나의 객체를 관리하기 위한 메서드가 선언된 인터페이스 (하위에 List와 Set 인터페이스가 있음) List 인터페이스 1. 객체를 순서에 따라 저장하고 관리하는데 필요한 메서드가 선언된 인터페이스 2. 자료구조 리스트(배열,연결리스트)의 구현을 위한 인터페이스 3. 중복을 허용 4. ArrayList, Vector, LinkedList..
17. 제네릭 프로그래밍과 <T extends 클래스> 1. 무엇이든 담을 수 있는 제네릭 프로그래밍 제네릭 자료형의 정의 1. 클래스에서 사용하는 변수의 자료형이 여러 개일 수 있고, 그 기능(메서드)은 동일한 경우 클래스의 자료형을 특정하지 않고 추후 해당 클래스를 사용할 때 지정할 수 있도록 선언 2. 실제 사용되는 자료형의 변환은 컴파일러에 의해 검증되므로 안정적인 프로그래밍 방식 3. 컬렉션 프레임워크에서 많이 사용 제네릭 타입을 사용하지 않는 경우의 예 이렇게 개별 작성하거나 Object를 이용하거나 그러나! 이렇게 하면 이 코드를 실행하면 getMaterial시 데이터형이 Object라서 오류가 난다!(return이 Object 데이터형으로 나오는거니까) -> 그래서 (Powder)printer.getMaterial(); 이거로 형 변환을 해줘야..
16. 배열 및 연결 리스트 구현하기 1. 배열 구현하기 Array의 특징 1. 동일한 데이터 타입을 순서에 따라 관리하는 자료 구조 2. 정해진 크기가 있음 3. 요소의 추가와 제거 시 다른 요소 이동 필요 4. 배열의 i 번째 요소를 찾는 인덱스 연산이 빠름 5. jdk 클래스 : ArrayList, Vector 2. 연결 리스트(LinkedList) 구현하기 LinkedList 특징 1. 동일한 데이터 타입을 순서에 따라 관리하는 자료 구조 2. 자료를 저장하는 노드에는 자료와 다음 요소를 가리키는 링크(포인터)가 있음 3. 자료가 추가될 때 노드만큼의 메모리를 할당 받고 이전 노드의 링크로 연결함(정해진 크기가 없다) 4. 연결 리스트의 i 번째 요소를 찾는데 걸리는 시간은 요소의 개수에 비례 : O(n) 5. jdk 클래스 : Li..
15. 자바와 자료구조 1. 자료구조 자료구조란 무엇인가? (Data Structure) 1. 프로그램에서 사용할 많은 데이터를 메모리 상에서 관리하는 여러 구현방법들 2. 효율적인 자료구조가 성능 좋은 알고리즘의 기반이 됨 3. 자료의 효율적인 관리는 프로그램의 수행 속도와 밀접한 관련이 있음 4. 여러 자료구조 중에서 구현하려는 프로그램에 맞는 최적의 자료구조를 활용해야 하므로 자료구조에 대한 이해가 필요 2. 선형 자료구조 한 줄로 자료를 관리한다. 1. 배열(Array) 선형으로 자료를 관리, 정해진 크기의 메모리를 먼저 할당 받아 사용함 -> 자료의 물리적 위치와 논리적 위치가 같음 2. 연결 리스트(LinkedList) 선형으로 자료를 관리, 자료가 추가될 때마다 메모리를 할당 받고, 자료는 링크로 연결됨 -> 자료..
14. String 클래스 및 Class 클래스 1. String 클래스 String 선언하기 new 해서 쓰거나 그냥 = "abc"처럼 할당해서 쓰거나 1. 힙 메모리에 인스턴스로 생성되는 경우와 상수 풀에 있는 주소를 참조하는 두 가지 방법 2. 힙 메모리는 생성될 때마다 다른 주소 값을 가지지만, 상수 풀의 문자열은 모두 같은 주소 값을 가짐 -> 얘는 힙에 잡힌다. -> 생성마다 다른 주소 값(객체로 생성한다 생각해) -> 얘는 상수 풀에 잡힌다.-> 생성마다 같은 주소 값 == -> 주소값을 비교하니까 위와 같은 결과가 나온다, 3. 한 번 생성된 String은 불변(immutable) 4. String을 연결하면 기존의 String에 연결되는 것이 아닌 새로운 문자열 생성(메모리 낭비 발생 가능성) 문자열 객체 두 개 만들고 concat으로..
13. Object 클래스 및 메서드 활용 1. Object 클래스 모든 클래스의 최상위 클래스 1. java.lang.Object 클래스 2. 모든 클래스는 Object 클래스를 상속 받고, Object 클래스의 메서드 중 일부는 재정의 후 사용 가능 3. 컴파일러가 extends Object를 추가한다. java.lang 패키지 1. 프로그래밍시 import 하지 않아도 자동으로 import 된다.(import.java.lang) 2. 많이 사용하는 기본 클래스들이 속한 패키지(Object 포함됨) -> String, integer, System등 2. Object 클래스의 메서드 활용 toString() 메서드 1. 객체의 정보를 String으로 바꾸어서 사용할 때 쓰임 2. String 이나 integer 클래스는 이미 재정의 되어 있음 ..
12. 인터페이스(interface) 1. 인터페이스 인터페이스란? 추상 클래스(abstract class)와 마찬가지로 추상화된 데이터나 동작을 정의하는데 사용되는 중요한 개념 1. 모든 메서드가 추상 메서드로 선언됨 -> public abstract 2. 모든 변수는 상수로 선언됨 -> public static final 3. 자바 8부터 디폴트 메서드와 정적 메서드 기능 제공으로 일부 구현 코드가 있다. 인터페이스 구현 쩜쩜쩜 화살표는 구현이라는 뜻 오른쪽처럼 구현하면 implements를 사용해줘야함 // implements 키워드 // java에서 implements 키워드는 인터페이스를 구현할 때 사용, 클래스나 추상 클래스는 extends 키워드를 이용하여 상속받지만, 인터페이스는 implement 키워드를 이용하여 구현 즉, ..
11. 추상 클래스의 의미 및 응용 1. 추상 클래스 추상 클래스란? 구현 코드 없이 메서드의 선언만 있는 추상 메서드를 포함한 클래스 1. 메서드 선언 : 반환타입, 메서드 이름, 매개변수로 구성 2. 메서드 정의 : 메서드 구현과 동일한 의미 구현부를 가짐 -> {} 이 부분을 의미한다. ex) int add(int x, int y); // 이게 이제 선언 -> 추상 메서드 ex) int add(int x, int y){}; // 구현부가 있으므로 추상 메서드 X 3. abstract 예약어를 사용 4. 추상 클래스는 new 할 수 없다.(인스턴스화 할 수 없다 -> 구현부가 없으니!) 추상 클래스 구현하기 1. 메소드에 구현코드가 없다면 abstract로 선언 2. abstract로 선언된 메서드를 가진 클래스는 abstract로 선..