JAVA 26

[자바의 정석 기초편 chapter 11] 스택과 큐/ Stack 과 Queue

개념부터 잡자 🟥 스택(Stack)이란? 마지막에 저장한 데이터를 가장 먼저 꺼내게 되는 리포구조(LIFO:Last In First Out) 스택의 저장은 푸시(phsh) 추출은 팝!(pop) 저장은 0 → 1 → 2 순서로 넣었고, 추출할 때는 마지막부터 한다. 2 → 1 → 0 스택 활용 예시) 수식계산, 웹브라우저의 앞/뒤로, 수식괄호검사, 워드프로세서의 undo/redo 🟥 큐(Queue)란? 처음에 저장한 데이터를 가장 먼저 꺼내게 되는 피포구조(FIFO: First in First Out) 큐의 저장은 오퍼(offer) 추출은 폴(poll) 저장은 0 → 1 → 2 순서로 넣었고, 추출할 때도 저장순으로 한다. 0 → 1 → 2 큐 활용 예시) 최근사용문서, 인쇄작업 대기목록, 버퍼(buffe..

JAVA 2022.12.29

[자바의 정석 기초편 chapter 11] LinkedList

배열은 장점과 단점이 있다! 🟨 장점 구조가 간단, 사용이 쉬움, 데이터를 읽어오는 데 걸리는 시간이 가장 빠름 🟥 단점 1. 크기를 변경할 수 없다. - 크기를 초과할 시 새로운 배열을 생성해서 데이터를 복사해야됨 - 실행속도 향상을 위해서 충분히 큰 크기의 배열을 생성해야 하므로 메모리가 낭비됨 2. 비순차적인 데이터의 추가 또는 삭제에 시간이 많이 걸린다. - 배열 중간에 데이터를 추가할 시, 다른 데이터들을 복사해서 이동시켜야 함 이런 배열의 단점을 보완하기 위해서 고안된 자료구조가 링크드 리스트(linked list)이다! 🟦 링크드 리스트(linked list)란? 불연속적으로 존재하는 데이터를 서로 연결(link) 한 형태로 구성되어 있다. 링크드 리스트의 각 요소를 노드(node)라고 하고..

JAVA 2022.12.29

[자바의 정석 기초편 chapter 11] Collection/List/Set/Map/ArrayList 인터페이스의 메소드 한번에 모아보기

🟪 컬렉션 프레임워크의 핵심 인터페이스 간의 상속계층도 Collection Map ↗ ↖ List Set 🟪 Collection 인터페이스 인터페이스 특징 순서 중복 List 순서가 있는 데이터의 집합. 데이터의 중복을 허용한다. 예) 대기자 명단 O O 구현클래스: ArrayList, LinkedList, Stack, Vector 등 Set 순서를 유지하지 않는 데이터의 집합. 데이터의 중복을 허용하지 않는다. 예) 양의 정수집합. 소수의 집합 X X 구현클래스: HashSet, TreeSet등 Map 키(key) 와 값(value)의 쌍(pair)으로 이루어진 데이터의 집합. 순서는 유지되지 않으며 키는 중복을 허용하지 않고, 값은 중복을 허용한다. 예) 우편번호, 지역번호(02:서울) X 키: X ..

JAVA 2022.12.27

[자바의 정석 기초편 charter 11] 컬렉션과 프레임 워크

컬렉션이란? 여러 객체(데이터)를 모아놓은 것. 즉 물건을 모아놓은 것 프레임워크란? 표준화. 정형화된 체계적인 프로그래밍 방식. 즉 틀이다. 라이브러리란? 이미 만들어놓은 기능 컬렉션 프레이워크란? 컬렉션을 다루기 위한 표준화된 프로그래밍 방식 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공 컬렉션 클래스란? 다수의 데이터를 저장할 수 있는 클래스(Vector, ArrayList, HashSer) 인터페이스 특징 순서 중복 List 순서가 있는 데이터의 집합. 데이터의 중복을 허용한다. 예) 대기자 명단 O O 구현클래스: ArrayList, LinkedList, Stack, Vector 등 Set 순서를 유지하지 않는 데이터의 집합. 데이터의 중복을 허용하지 않는다. 예) 양의 정수집합. ..

JAVA 2022.12.26

[자바의 정석 기초편 chapter 10] DateFormat(DecimalFormat/SimpleDateFormat)

DecimalFormat이란? 숫자를 형식화하는데 사용하는 Format이다. DecimalFormat 사용방법 1. 원하는 출력형식 패턴 작성하고 2. DecimalFormat인스턴스 생성하고 3. 출력하고자 하는 문자열로 format 메서드를 호출하기 double number = 1234567.89; DecimalFormat df = new DecimalFormat("#.#E0"); String result = df.format(number); // result = "1.2E6" 입력값: 1234567.89 기호 의미 패턴 결과 0 10진수(값이 없을때는 0) 0 12345678 0.0 12345678.9 0000000000.0000 0001234567.8900 # 10진수 # 12345678 #.# ..

JAVA 2022.12.16

[자바의 정석 기초편 chapter 10] Calendar/date

Calendar는 추상클래스이기 때문에 직접 객체 생성이 불가능! Calendar cal = new Calendar(); //에러!!! 추상클래스는 인스턴스 생성 불가 메서드를 통해서 완전히 구현된 인스턴스를 얻어야 한다. // getInstance()메서드는 Calendar클래스를 구현한 클래스의 인스턴스를 반환한다. Calendar cal = Calendar.getInstance(); Calendar 에 정의된 필드 필드명 설명 YEAR 년 MONTH 월(0부터 11까지) EX) 1월 = 0 WEEK_OF_YEAR 1월 1일 ~ 지금 WEEK_OF_MONTH 그 달의 몇번째 주인지 DATE 일 DAY_OF_MONTH 그 달의 몇번째 일인지 DAY_OF_YEAR 그 해의 몇번째 일인지 DAY_OF_WE..

JAVA 2022.12.15

[자바의 정석 기초편 chapter 7] 디폴드 메서드와 static메서드

조상 클래스에 새로운 메서드를 추가한다는 것은 별 일이 아니지만, 인터페이스의 경우에는 큰 일이다!! 큰일이 되는 이유! 인터페이스의 메서드를 추가한다 ▶ 추상 메서드를 추가한다 ▶ 이 인터페이스를 구현한 기존의 모든 클래스들이 새로 추가된 메서드를 구현해야하는 상황이 된다. 그래서 JDK 설계자들은 디폴트 메서드(default method)를 만들어냈다. 디폴트 메서드란? 추상 메서드의 기본적인 구현을 제공하는 메서드로 추상 메서드가 아니기 때문에 디폴트 메서드가 새로 추가되어도 해당 인터페이스를 구현한 클래스를 변경하지 않아도 된다. 디폴트 메서드는 앞에 키워드로 "default"를 붙이며, 일반 메서드처럼 몸통{ }이 있어야하고, 접근 제어자가 public이며, 생략 가능하다. interface M..

JAVA 2022.12.13

[자바의 정석 기초편 chapter 7] 인터페이스를 이용한 다형성과 장점

인터페이스 Fightable 을 클래스 Fighter가 구현했을 때, Fighter인스턴스를 Fightable 타입의 참조변수로 참조하는 것이 가능하다. Fightable f = new Fighter(); 따라서 인터페이스는 메서드의 매개변수 타입으로도 사용될 수 있다. void attack(Fightable f){ //내용생략 } 인터페이스 타입의 매개변수가 갖는 의미는 메서드 호출 시 해당 인터페이스를 구현한 클래스의 인스턴스를 매개변수로 제공해야 한다는 것이다. class Fighter extends Unit implements Fightable{ public void move(int x, int y){/*내용*/} public void attack(Fightable f){/*내용*/} } 위 코드..

JAVA 2022.12.12

[자바의 정석 기초편 chapter 7] 인터페이스(interface)

인터페이스란? 일종의 추상클래스이다. 즉, 추상메소드의 집합이다. 추상클래스보다 추상화 정도가 높아서 추상클래스와 달리 일반 메서드 또는 멤버변수를 가질 수 없다. 오직 추상메서드와 상수만 멤버로 가질 수 있다. 추상클래스: 미완성 설계도(부분적인 완성이 되어있음) 인터페이스: 기본 설계도(구현된 것이 아무것도 없음. 밑그림만 그려진 정도) 인터페이스의 목적 다른 클래스를 작성하는데 도움 줄 목적으로 작성된다. 인터페이스 작성법 클래스 작성법과 같다. 다만 class 대신 interfcace를 사용한다. 접근제어자는 class와 같이 public 또는 default만 가능하다. interface 인터페이스이름{ public static final 타입 상수이름 = 값; public abstract 메서드..

JAVA 2022.12.12

[자바의 정석 기초편 chapter 7] 추상클래스(abstract class)

추상클래스란? -미완성 메서드를 갖고 있는 클래스 -추상메서드를 가지고 있는 클래스 - 상속을 통해서 자손 클래스에 의해서만 완성될 수 있다. 추상메서드란? -구현부가 없는 메서드, 몸통이 없는 메서드 abstract class Player { 추상클래스(미완성클래스) abstract void play(int pos); //추상메서드(몸통{}이 없는 메서드) abstract void stop(); // 추상메서드 } 추상 클래스는 인스턴스 생성 불가! 그럼 왜쓰냠? -다른 클래스 작성에 도움을 주려고 - 아무것도 없는 것보다는 미완성이지만 무언가 있는 상태가 설계가 쉽고 효율적이다. 상속을 통해 추상 메서드를 완성해야 인스턴스 생성 가능하다. 키워드는 'abstract'고, 이 친구가 붙으면 추상메서드가..

JAVA 2022.12.09