Programming Language/Java 썸네일형 리스트형 이것이 자바다 16 * 스트림(Stream) 자바 8부터 추가된 컬렉션(배열 포함)의 저장 요소를 하나씩 참조해서 람다식(함수적 스타일)으로 처리할 수 있도록 해주는 반복자 1) 람다식으로 요소 처리 코드를 제공 스트림이 제공하는 대부분의 요소 처리 메소드는 함수적 인터페이스 매개 타입을 가지기 때문에 람다식 또는 메소드 참조를 이용해서 요소 처리 내용을 매개값으로 전달 가능 2) 내부 반복자를 사용하므로 병렬 처리가 쉬움 외부 반복자 : 개발자가 코드로 직접 컬렉션의 요소를 반복해서 가져오는 코드 패턴 내부 반복자 : 컬렉션 내부에서 요소들을 반복시키고, 개발자는 요소당 처리해야 할 코드만 제공하는 코드 패턴 내부 반복자를 사용해서 얻는 이점은 컬렉션 내부에서 어떻게 요소를 반복시킬 것인가는 컬렉션에게 맡겨두고, 개발자는.. 이것이 자바다 15 * 컬렉션 프림워크(Collection Framework) 배열의 단점을 보안하기 위해 자료구조를 바탕으로 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 java.util 패키지에 컬렉션과 관련된 인터페이스와 클래스들을 포함시켜 놓은 것 (컬렉션 : 객체를 수집해서 저장하는 역할 / 프레임워크 : 사용 방법을 미리 정해 놓은 라이브러리) 인터페이스 분류 특징 구현 클래스 Collection List 순서를 유지하고 저장 중복 저장 가능 ArrayList, Vector, LinkedList Set 순서를 유지하지 않고 저장 중복 저장 안 됨 HashSet, TreeSet Map 키와 값의 쌍으로 저장 키는 중복 저장 안 됨 HashMap, Hashtable, TreeMap, Properties * L.. 이것이 자바다 14 * 람다식 : 익명 함수를 생성하기 위한 식(함수 지향 언어) 람다식 -> 매개 변수를 가진 코드 블록 -> 익명 구현 객체(런타임 시) // Runnable 인터페이스의 익명 구현 객체를 생성하는 전형적인 코드 Runnable runnable = new Runnable() { public void run() { ... } }; // 익명 구현 객체를 람다식으로 표현 Runnable runnable = () -> { ... }; 람다식은 "(매개변수) -> {실행코드}" 형태로 작성되는데, 마치 함수 정의 형태를 띠고 있지만 런타임 시에 인터페이스의 익명 구현 객체로 생성됨. 어떤 인터페이스를 구현할 것인가는 대입되는 인터페이스가 무엇이냐에 달려있음. * 타겟 타입(target type) 인터페이스 변수.. 이것이 자바다 13 * 제네릭(Generic) 타입 제네릭 타입을 이용함으로써 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거 가능 클래스, 인터페이스, 메소드를 정의할 때 타입을 파라미터로 사용할 수 있도록 함 타입 파라미터는 코드 작성 시 구체적인 타입으로 대체되어 다양한 코드를 생성하도록 해줌 장점 : 컴파일 시 강한 타입 체크를 할 수 있다, 타입 변환(casting)을 제거한다(성능 향상) * 제네릭 타입(class, interface) public class 클래스명 { ... } public interface 인퍼테이스명 { ... } 멀티 타입 파라미터 : class, interface * 제네릭 메소드( R method(T t)) public 리턴타입 메소드명(매개변수, ...) { ... } 리.. 이것이 자바다 12 * 프로세스(process) : 실행 중인 하나의 애플리케이션 * 멀티태스킹(multi tasking) : 두 가지 이상의 작업을 동시에 처리하는 것, 운영체제는 멀티태스킹을 할 수 있도록 cpu 및 메모리 자원을 프로세스마다 할당하고 병렬로 실행시킴 * 한 프로세스 내에서 멀티 태스킹 가능 ex) 미디어 플레이어, 메신저 -> 멀티 스레드(multi thread) : 하나의 스레드는 하나의 코드 실행 흐름 * 메인 스레드(main thread) 모든 자바 애플리케이션은 메인 스레드가 main() 메소드를 실행하면서 시작됨 메인 스레드는 멀티 스레드를 생성해서 멀티 태스킹을 수행 가능 싱글 스레드 앱은 메인 스레드가 종료되면 프로세스도 종료되지만, 멀티 스레드 앱은 실행 중인 스레드가 하나라도 있다면 프.. 이것이 자바다 10 * 예외(exception) : 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류 예외 처리를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있음 - 일반 예외 : 컴파일러 체크 예외(예외 처리 코드가 없다면 컴파일 오류 발생) - 실행 예외 : 컴파일하는 과정에서 예외 처리 코드를 검사하지 않는 예외 * 실행 예외(Runtime Exception) 1) NullPointerException 객체 참조가 없는 상태(null 값을 갖는 참조 변수로 객체 접근 연산자인 도트(.)를 사용했을 때 발생) 2) ArrayIndexOutOfBoundsException 배열에서 인덱스 범위를 초과하여 사용할 경우 발생 3) NumberFormatException 문자.. 이것이 자바다 09 * 중첩 클래스(Nested Class) : 클래스 내부에 선언한 클래스, 두 클래스의 멤버들을 서로 쉽게 접근, 복잡성 줄임 선언 위치에 따른 분류 선언 위치 설명 멤버 클래스 인스턴스 멤버 클래스 class A { class B { ... } } A 객체를 생성해야만 사용할 수 있는 B 중첩 클래스 정적 멤버 클래스 class A { static class B { ... } } A 클래스로 바로 접근 가능한 B 중첩 클래스 모든 종류의 필드와 메소드 선언 가능 로컬 클래스 class A { void method() { class B { ... } } } method()가 실행할 때만 사용할 수 있는 B 중첩 클래스 접근 제한자 및 static을 붙일 수 없음 인스턴스 필드와 메소드만 선언 가능 - 멤.. 이것이 자바다 08 * 인터페이스(interface) : 객체의 사용 방법을 정의한 타입 인터페이스를 사용하는 이유? 개발 코드를 수정하지 않고, 사용하는 객체를 변경할 수 있도록 하기 위해서 * 인터페이스 선언 [public] interface 인터페이스명 { 타입 상수명 = 값; // 상수 타입 메소드명(매개변수, ...); // 추상 메소드 default 타입 메소드명(매개변수, ...) { ... } // default 메소드(인터페이스의 모든 구현 객체가 갖고 있는 기본 메소드) static 타입 메소드명(매개변수) { ... } // 정적 메소드 } 인터페이스는 상수와 메소드만을 구성 멤버로 가짐(객체로 생성할 수 없어서 생성자를 가질 수 없음) * 인터페이스 구현 개발 코드가 인터페이스 메소드를 호출하면 인터페.. 이전 1 2 다음