1)순서 인터페이스 --> 익명클래스 --> 람다(lambda) --> 표준 API 함수적 인터페이스 --> 자바스트림 API (컬렉션 기반) 2)람다(lambda) 표현식 자바는 최소단위가 클래스이다. 메서드능(기능) 하나만 필요해도 무조건 클래스를 만들어야 된다. 매우 비효율적이다. 기능에만 집중해서 충실하게 프로그래밍 하자 ==> 함수형 프로그래밍(functional programming ) 역할: 익명클래스의 추상 메서드를 표현하기 위한 식이다. 특징: 반드시 추상 메서드는 하나만 존재해야 된다. 두 개 이상인 경우에는 람다(lambda) 표현식 사용불가. @FunctionalInterface 어노테이션을 이용하여 두 개 이상의 추상 메서드가 선언되지 못하도록 강제한다. ( default 메서드 ..
16-1. 자바 입출력과 스트림 입출력 스트림 네트워크에서 자료의 흐름이 물의 흐름과 같다는 비유에서 유래됨 자바는 다양한 입출력 장치에 독립적으로 일관성 있는 입출력을 입출력 스트림을 통해 제공 입출력이 구현되는 곳 : 파일 디스크, 키보드, 마우스, 네트웍, 메모리 등 모든 자료가 입력되고 출력되는 곳 입출력 스트림의 구분 대상 기준 : 입력 스트림 /출력 스트림 자료의 종류 : 바이트 스트림 / 문자 스트림 기능 : 기반 스트림 / 보조 스트림 입력 스트림과 출력 스트림 입력 스트림 : 대상으로부터 자료를 읽어 들이는 스트림 출력 스트림 : 대상으로 자료를 출력하는 스트림 종류 예시 입력 스트림 FileInputStream, FileReader, BufferedInputStream, Buffered..
15-1. 예외 클래스 프로그램에서의 오류 컴파일 오류 (compile error) 프로그램 코드 작성 중 발생하는 문법적 오류 최근에는 개발 환경에서 대부분의 컴파일 오류는 detection 함 실행 오류 (runtime error) 실행 중인 프로그램이 의도 하지 않은 동작(bug)을 하거나 프로그램이 중지 되는 오류 실행 오류는 비정상 종료가 되는 경우 시스템의 심각한 장애를 발생할 수 있음 예외 처리의 중요성 프로그램의 비정상 종료를 피하여 시스템이 원활하게 실행되도록 함 실행 오류가 발생한 경우 오류의 과정을 재현하는 것은 현실적으로 힘들다 오류가 발생한 경우 log를 남겨서 추후 log 분석을 통해 그 원인을 파악하여 buf를 수정하는 것이 중요 오류와 예외 클래스 시스템 오류 (error) ..
14-1. 내부 클래스 inner class 클래스 내부에 선언한 클래스로 이 클래스를 감싸고 있는 외부 클래스와 밀접한 연관이 있는 경우가 많고, 다른 외부 클래스에서 사용할 일이 거의 없는 경우에 내부 클래스로 선언해서 사용함 중첩 클래스라고도 함 내부 클래스의 종류 : 인스턴스 내부 클래스, 정적(static) 내부 클래스, 지역(local) 내부 클래스, 익명(anonymous) 내부 클래스 인스턴스 내부 클래스 내부적으로 사용할 클래스를 선언 (private으로 선언하는 것을 권장) 외부 클래스가 생성된 후 생성됨 (정적 내부클래스와 다름) private이 아닌 내부 클래스는 다른 외부 클래스에서 생성할 수 있음 정적 내부 클래스 외부 클래스 생성과 무관하게 사용할 수 있음 정적 변수, 정적 메..
13-1. 제네릭 (Generic) 제네릭 자료형 정의 클래스에서 사용하는 변수의 자료형이 여러 개 일 수 있고, 그 기능(메서드)은 동일한 경우 클래스의 자료형을 특정하지 않고 추후 해당 클래스를 사용할 때 지정할 수 있도록 선언 실제 사용되는 자료형의 변환은 컴파일러에 의해 검증되므로 안정적인 프로그래밍 방식 컬레션 프레임워크에서 많이 사용되고 있음 package ch05; public class ThreeDPrinter { private Powder material; public void setMaterial(Powder material) { this.material = material; } public Powder getMaterial() { return material; } } package c..
자료구조란 무엇인가? (Data Structure) 프로그램에서 사용할 많은 데이터를 메모리 상에서 관리하는 여러 구현방법들 효율적인 자료구조가 성능 좋은 알고리즘의 기반이 됨 자료의 효율적인 관리는 프로그램의 수행속도와 밀접한 관련이 있음 여러 자료 구조 중에서 구현하려는 프로그램에 맞는 최적의 자료구조를 활용해야 하므로 자료구조에 대한 이해가 중요함 자료구조에는 어떤 것들이 있나? 한 줄로 자료를 관리하기 (선형 자료구조) - 배열 (Array) : 선형으로 자료를 관리, 정해진 크기의 메모리를 먼저 할당받아 사용하고, 자료의 물리적 위치와 논리적 위치가 같음. 인덱스 연산을 할 수 있어 편리하다. - 연결 리스트 (LinkedList) : 선형으로 자료를 관리, 자료가 추가될 때마다 메모리를 할당 ..
11-1. Object 클래스 모든 클래스의 최상위 클래스 java.lang 패키지 프로그래밍 시 import 하지 않아도 자동으로 import 됨 import.java.lang.*; 많이 사용하는 기본 클래스들이 속한 패키지 String, integer, System... 모든 클래스는 Object 클래스를 상속 받는다 java.lang.Object 클래스 모든 클래스의 최상위 클래스는 Object 클래스 모든 클래스는 Object에서 상속받고, Object 클래스의 메서드 중 일부는 재정의해서 사용할 수 있음 컴파일러가 extends Object를 추가함 class Student -> class Student extends Object ㉠ toString() 메서드 어떤 객체를 문자화 시켜주는 메소드..
단독적으로 공부 시 이해가 잘 되는 듯 하나, 추후 실제 코드를 작성하려다보니 상속, 추상클래스, 인터페이스의 개념이 머릿속에서 뒤죽박죽 섞이기 시작했다. 그리하여 정확한 쓰임새와 차이점을 하나하나 짚어 정리해보고자 한다. 공통점 객체 생성 객체를 생성(인스턴스화) 할 수 없다. 추상 메소드 추상 메소드를 포함한다. 기능적 목적 상속받는 하위클래스에서는 추상 메소드를 반드시 재정의하여 구현해야한다. 설계도에 비유? 인터페이스는 일종의 추상 클래스이다. 추상 클래스를 '미완성 설계도' 라고 한다면 (상속을 통해 자손 클래스에서 완성하도록 유도), 인터페이스는 '기본 설계도' 이다. 목적 추상 클래스는 자신의 기능을 하위클래스에서 확장시키는 것 (extends : 확장) 관련성이 높은 클래스 간에 코드를 공..
1. 컴퓨터는 코드를 바이트코드(바이너리코드)로 컴파일하여 알아듣는다. 2. JVM은 자바에서 0과 1을 각각 다른 운영체제가 알아들 수 있게 다시 번역한다. 3. C언어는 컴파일러가 여러 개 있고, 다 다르다. 4. 자바는 컴파일러가 하나 있고 이 컴파일 된 결과물이 동일하고, 이것들이 각각 다른 JVM 위로 올라가면서 JVM이 운영체제에게 재변억 해준다. 5. JVM (Java Virtual Machine) - 자바 가상 머신의 약자 - OS(운영체제)별로 존재 - 바이너리코드를 읽고 검증하고 실행 6. JRE (Java Runtime Environment) - 자바 실행 환경의 약자 - JRE = JVM + 자바 프로그램 실행에 필요한 라이브러리 파일 등 - JVM의 실행환경을 구현 7. JDK (..
인터페이스의 개념이 확실히 안잡혀서 이것도 생코 들으며 2차 공부 ㅠㅠ 1. 인터페이스란? 규제, 규격, 약속 규제지만, 그것의 목적은 자유다. 내가 원하는 형태를 확실하게 전달한다. 즉, class의 형태를 규정하여 강제로 같은 양식을 사용하도록 제약을 걸어주는 것 ! 2.인터페이스의 형식 하나의 clss는 여러 개의 interface를 갖을 수 있다. interface에는 메소드와 변수가 정의될 수 있는데 , 변수에는 값이 들어오고 메소드에는 실제 구현이 들어가지 않아서 → 저 메소드를 구현하는 클래스가 (저 형태를 만족하는) 메소드의 내용을 직접 구현해야한다 3.다형성 (Polymorphism) 하나의 class가 여러가지 얼굴을 갖게 하는 것 나에게 필요한 기능만을 골라서 class의 얼굴을 바꾸..