목록Java (41)
코딩 기록들
InputStream 바이트 단위 입력 스트림 최상위 추상 클래스 많은 추상 메서드가 선언되어 있고 이를 하위 스트림이 상속받아 구현함 주요 하위 클래스 FileInputStream : 파일에서 바이트 단위로 자료를 읽음 ByteArrayInputStream byte : 배열 메모리에서 바이트 단위로 자료를 읽음 FilterInputStream : 기반 스트림에서 자료를 읽을 때 추가 기능을 제공하는 보조 스트림의 상위 클래스 주요 메서드 int read() : 입력 스트림으로부터 한 바이트의 자료를 읽음. 읽은 자료의 바이트 수를 반환 int read(byte b[]) : 입력 스트림으로 부터 b[] 크기의 자료를 b[]에 읽음. 읽은 자료의 바이트 수를 반환\ int read(byte b[], int..
System 클래스의 표준 입출력 멤버 public class System{ public static PrintStream out; public static InputStream in; public static PrintStream err; } System.out 표준 출력(모니터) 스트림 System.out.println("출력 메세지"); System.in 표준 입력(키보드) 스트림 int d = System.in.read() // 한 바이트 읽기 System.err 표준 에러 출력(모니터) 스트림 System.err.println("에러 메세지") 빨간 줄로 에러메시지 출력됨 public class SystemInTest1 { public static void main(String[] args) {..
입출력 스트림 - 네트워크에서 자료의 흐름이 물의 흐름과 같다는 비유 - 자바는 다양한 입출력장치에 독립적으로 일관성있는 입출력을 : 입출력 스트림을 통해 제공 - 입출력이 구현되는곳 : 파일디스크, 키보드, 마우스, 네트워크, 메모리 등 모든 자료가 입력및 출력되는곳 - 스트림 = 추상적인 경로 - 다 exception 처리를 해줘야됨 -> 어렵다고 느낄수 있음 입력 스트림 FileInputStream, FileReader, BufferedInputStream, BufferedReader 등 출력 스트림 FileOutputStream, FileWriter, BufferedOutputStream, BufferedWriter 등 입출력 스트림의 구분 (하나의 스트림을 열어서 입력 & 출력용 2개를 한꺼번에..
예외 처리 미루기 예외 처리는 예외가 발생하는 문장에서 try-catch 블록으로 처리하는 방법과 이를 사용하는 부분에서 처리하는 방법 두 가지가 있음 throws를 이용하면 예외가 발생할 수 있는 부분을 사용하는 문장에서 예외를 처리할 수 있음 public class ThrowsException { // 일부러 exception 발생하기 위해 만든 메소드 // throws : 메소드를 쓰는 쪽에서 exception 핸들링 함 public Class loadClass(String fileName, String className) throws FileNotFoundException, ClassNotFoundException{ FileInputStream fis = new FileInputStream(fil..

여행사에 패키지 여행상품이 있다. - 여행비용 : 20세이상 100만원, 미만은 50만원 - 고객 3명이 패키지여행을 떠난다고했을때, 비용계산과 고객명단 검색등에 대한 연산을 스트림을 활용해 구현 - 고객에 대한 클래스 만들고 ArrayList로 고객 관리 - custer class 만들고 ArrayList로 관리 힌트 1. 고객의 명단을 출력 2. 여행의 총비용 계산 3. 고객중 20세이상인 사람의 이름을 '정렬'(sorted())하여 출력 고객정보 Customer CustomerLee CustomerKim CustomerHong 이름 이유신 김유신 홍유신 나이 40 20 13 비용 100 100 50 public class TravelCustomer { private String name; //이름 ..
연산 수행에 대한 구현을 하는 reduce() 연산! 정의된 연산이 아닌 프로그래머가 직접 구현한 연산을 적용 reduce()의 두번째 파라미터로(람다식으로) 구현할수있다(방법1) -> 만약 이 내용이 너무 많다면, BinaryOperator를 구현하고, Binary Operator를 구현한 클래스를 넣어주면 됨(아래 예시 중 방법2) T reduce(T identify, BinaryOperator accumulator) 최종 연산으로 스트림의 요소를 소모하며 연산을 수행 배열의 모든 요소의 합(sum을 쓸 수도 있지만,)을 구하는 reduce() 연산 구현 예 Arrays.stream(arr).reduce(0, (a,b)->a+b)); // reduce()에 들어가는 값 : 초기 - initial값, ..
스트림이란? - 자료, 컬렉션, 배열등이 모여있을때, 이 자료들의 연산을 한다고 했을때 연산들의 처리를 추상화(일관성있게) 한 것(동일한 방식으로 연산될 수 있도록) 자료의 대상과 관계없이 동일한 연산을 수행 일관성 있는 연산으로 자료의 처리를 쉽고 간단하게 함 자료 처리에 대한 추상화가 구현되었다고 함 배열, 컬렉션(스트림메소드 호출가능 : .stream하면 스트림객체 생성가능)을 대상으로 연산을 수행 함 한번 생성하고 사용한 스트림은 재사용 할 수 없음 다른 연산을 수행하기 위해서는 스트림을 다시 생성해야 함 자료에 대한 스트림을 생성하여 연산을 수행하면 스트림은 소모됨 import java.util.Arrays; public class IntArrayStreamTest { public static ..
함수형 프로그래밍과 람다식 자바 8부터 함수형 프로그래밍 방식을 지원하고 이를 람다식이라 함 함수의 구현과 호출만으로 프로그래밍이 수행되는 방식 함수형 프로그래밍 : 함수를 기반으로 하는 프로그래밍이고 입력받는 자료 이외에 외부 자료를 사용하지 않아 여려 자료가 동시에 수행되는 병렬처리가 가능 -> 함수형 프로그래밍은 함수의 기능이 자료에 독립적임을 보장. 이는 동일한 자료에 대해 동일한 결과를 보장하고, 다양한 자료에 대해 같은 기능을 수행할 수 있음 함수형 프로그래밍은 순수함수(pure function)를 구현하고 호출함으로써 외부 자료에 부수적인 영향(side effect)를 주지 않도록 구현하는 방식 -> 순수 함수란 매개변수만을 사용하여 만드는 함수. 즉, 함수 내부에서 함수 외부에 있는 변수를..