목록분류 전체보기 (131)
자바칩
API 설계의 중요성API(Application Programming Interface, 응용 프로그래밍 인터페이스)는 소프트웨어 구성 요소가 서로 상호작용할 수 있게 하는 규칙 및 도구 모음이다. 잘 설계된 API는 다음과 같은 중요한 이점을 제공한다.유지보수성: 명확하고 일관된 API는 코드의 이해와 수정이 용이하여 유지보수가 쉬워진다.확장성: 잘 설계된 API는 새로운 기능을 추가하거나 기존 기능을 개선할 때 확장이 용이하다.재사용성: 표준화된 API는 다양항 애플리케이션에서 쉽게 재사용될 수 있다.협업 용이성: API는 개발 팀 간의 협업을 용이하게 하여, 분산된 팀이 동시에 작업할 수 있도록 지원한다.사용자 경험 향상: 명확하고 직관적인 API는 개발자가 쉽게 이해하고 사용할 수 있어, 최종 사..
상속 조합을 사용하는 상황 구분상속(Inheritance)상속은 부모 클래스의 속성과 메서드를 자식 클래스가 물려받는 관계를 의미한다.상속은 확장을 고려하고 설계가 확실한 "is-a" 관계일 때와, API에 아무런 결함이 없는 경우, 결함이 있다면 하위 클래스까지 전파되어도 괜찮은 경우에 사용한다.예: Bird 클래스는 Animal 클래스를 상속받을 수 있다. 이는 "새는 동물이다"라는 관계를 표현한다.조합(Composition)조합은 새로운 클래스가 기존 클래스를 포함하는 관계를 의미한다. 새로운 클래스를 만들고 private 필드로 기존 클래스의 인스턴스를 참조한다.조합은 "has-a" 관계를 나타낼 때 사용한다.예: Car 클래스가 Engine 클래스를 포함할 수 있다. 이는 "자동차는 엔진을 가지..
가비지 컬렉션의 작동 원리가비지 컬렉션(Garbage Collection, GC)은 프로그램이 더 이상 사용하지 않는 메모리를 자동으로 해제하는 과정이다. 자바에서는 JVM이 가비지 컬렉터를 사용하여 이 작업을 수행한다. 기본적인 작동 원리는 다음과 같다.객체 생성: 프로그램이 새로운 객체를 생성하면 힙(heap) 메모리 영역에 할당된다.사용 중인 객체 추적: JVM은 프로그램이 참조하는 모든 객체를 추적한다.미사용 객체 식별: 더 이상 참조되지 않는 객체는 "가비지"로 간주된다.가비지 수집: 가비지 컬렉터가 주기적으로 실행되어 미사용 객체를 메모리에서 제거하고, 메모리를 재사용할 수 있게 한다.G1GC와 기존의 가비지 컬렉션 방식 비교G1GC(Garbage-First Garbage Collector)는..
Java 8과 Java 17 버전의 주요 기능 차이1. Java 8의 주요 기능 람다 표현식: 함수를 간단하고 짧게 작성할 수 있게 해주는 기능. 예를 들어, 리스트의 각 요소를 출력할 때 이렇게 사용 가능. list.forEach(element -> System.out.println(element)); 스트림 API: 데이터를 처리 방법을 더 쉽게 만들어주는 기능.예를 들어, 리스트에서 짝수만 골라내는 코드는 이렇게 작성 가능. list.stream() .filter(num -> num % 2 == 0) .forEach(System.out::println); 새로운 날짜와 시간 API: 날짜와 시간을 더 편리하게 처리할 수 있는 기능. ..
정리해 봅시다 1. Map 형태의 자료 구조는 무엇과 무엇으로 구성되어 있나요?키(Key), 값(Value)자료구조특징List- 목록 관리- Collection 인터페이스 확장- 순서 중요 (배열처럼 인덱스 위치 사용)Set- 목록 관리- Collection 인터페이스 확장- 순서 상관 X- 데이터 중복 XQueue- 목록 관리- Collection 인터페이스 확장- 순서 중요 (맨 처음과 맨 마지막 위치 접근)Map- 키(Key)-값(Value) 쌍 데이터 관리- Collection 인터페이스 확장 X. 별도의 인터페이스- 순서 상관 X- 키 중복 X, 값 중복 O 2. Map에서 데이터를 저장하는 메소드는 무엇인가요?put(K key, V value)*사용 예시Map map = new HashMap..
정리해 봅시다 1. 순서와 상관 없는 여러 데이터를 하나의 객체에 저장할 때 사용하는 Collection의 하위 인터페이스는 무엇인가요?Set 인터페이스 2. HashSet 클래스는 생성자를 통하여 저장 가능한 데이터의 초기 크기를 지정할 수 있나요?HashSet 클래스는 생성자를 통하여 저장 가능한 데이터의 초기 크기를 지정할 수 있다.*사용 예시HashSet set = new HashSet(100);* 생성자 종류생성자설명 HashSet() 데이터를 저장할 수 있는 16개의 공간과 0.75의 로드 팩터를 갖는 객체를 생성한다.HashSet(Collections c)매개 변수로 받은 컬렉션 객체의 데이터를 HashSet에 담는다. HashSet(int initialCapacity) 매개 변수로 받은 ..
난이도: Gold 4문제: https://www.acmicpc.net/problem/2636 겉에 있는 치즈부터 녹여서 치즈를 점점 안쪽으로 녹이면 되는 문제이다. 초기 배열은 이렇다.세로(N) * 가로(M) 크기의 2차원 배열을 선언해주어야 한다. 치즈는 이렇게 겉에 있는 것만 녹이면 된다고 한다.나는 이 문제를 0주변에 있는 1들을 없애면 되는게 아닌가 했는데, 가운데에도 0이 있다.겉에 있는 0 주변에 있는 1들만 없애야 한다. 가운데에 있는 0은 제외하고 겉에 있는 0 주변에 있는 1을 없애야 한다.이렇게 하려면 어떻게 해야할까? 일단 공기 칸을 체크할 2차원 배열을 만든다.겉에 있는 0들을 bfs를 사용해서 공기 칸을 체크할 배열을 true로 체크하면 된다.그리고, true로 체크된 칸 주변..
정리해 봅시다 1. Collection 인터페이스를 구현하는 대표적인 3개의 자료 구조에는 어떤 것들이 있나요?List(목록), Set(셋), Queue(큐) 2. 배열과 같이 순서가 있는 목록형을 나타내는 대표 인터페이스는 무엇인가요?List 인터페이스 3. ArrayList라는 클래스의 생성자 중 매개변수가 없는 기본 생성자를 사용하면 기본적으로 몇 개의 저장 공간을 가지나요?10개의 저장 공간*사용 예시ArrayList list = new ArrayList(); 4. 만약 ArrayList 클래스의 저장 공간 개수를 처음부터 지정하려면 어떤 생성자를 사용하면 되나요?ArrayList(int initialCapacity)이 생성자는 매개 변수로 넘어온 initialCapacity 개수만큼의 저장..