본문 바로가기

Back-End/Java20

파일 입출력(I/O) InputStream, OutputStream Stream: 단방향으로만 데이터 전송 가능 File을 다룰 때: FileInputStream / FileOutputStream 프로세스를 다룰 때: PipedInputStream / PipedOutputStream FileInputStream //문자열 code가 입력된 파일 생성 //src 폴더 상위에 있어야 한다 echo code >> codestates.txt FileInputStream fileInput = new FileInputStream("codestates.txt"); BufferedInputStream 보조 스트림: 성능 향상 버퍼: 바이트 배열, 여러 바이트를 저장하여 한 번에 많은 데이터를 입출력할 수 있도록 돕는 임시 저장 공간 Fil.. 2022. 7. 18.
스트림 다양한 데이터 소스(컬렉션, 배열)를 표준화(컬렉션 프레임웍: 서로 사용법 달랐음)된 방법으로 다룬다 선언형으로 데이터 소스를 처리한다 람다식으로 요소 처리 코드를 제공한다 Stream의 요소 처리 메서드들은 대부분 함수형 인터페이스 매개타입을 가진다 → 람다식 또는 메서드 참조를 이용해서 요소 처리 내용을 매개값으로 전달 가능하다 내부 반복자를 사용하므로 병렬 처리가 쉽다 개발자는 요소 처리 코드에만 집중하면 된다! 람다식으로 요소 처리 내용만 전달할 뿐, 반복은 컬렉션 내부에서 일어난다 외부 반복자: 개발자가 직접 컬렉션 요소를 반복해서 가져오는 코드 패턴 → index를 사용하는 for문, Iterator를 이용하는 while문 내부 반복자: 컬렉션 내부에서 요소들을 반복, 개발자가 요소당 처리할 .. 2022. 7. 17.
람다 람다식 함수(메서드)를 하나의 식으로 표현한 것으로, 람다식 도입으로 자바는 객체지향언어인 동시에 함수형 언어가 되었다. 반환 타입과 이름이 지워지면서 익명 함수(이름이 없는 함수)라고 말한다. 장점 1. 코드 간결 2. 컬렉션 요소 필터링과 매핑 → 원하는 결과 쉽게 집계 3. 클래스와 객체 생성 없이 메서드 호출 가능 4. 메서드를 변수처럼 다룰 수 있다 형태 1. 익명 객체: 메서드에서 이름과 반환타입을 제거 2. 매개변수 선언부와 몸통 사이에 -> 추가 (매개변수) -> {실행 코드} 3. 런타임에 익명 구현 객체 생성 int max(int a, int b) { return a > b ? a : b; } (a, b) -> a > b ? a : b //매개변수가 한 개이고 매개변수 타입이 없으면 (.. 2022. 7. 16.
배열 문제 풀이 보호되어 있는 글 입니다. 2022. 7. 6.
조건문과 반복문 문제 풀이 보호되어 있는 글 입니다. 2022. 7. 5.
지네릭스, 열거형, 애너테이션 이 글은 남궁성 님의 Java의 정석 책을 바탕으로 정리한 글입니다. 지네릭스 타입을 구체적으로 지정하는 것이 아니라, 추후에 지정할 수 있도록 일반화 해 둔다 1. 컴파일 시 타입 체크 2. 타입의 안정성을 제공하고, 형변환을 생략할 수 있으므로(무조건 명시한 타입일 테니까) 코드가 간결해짐 3. 클래스 변수(static)에는 타입 매개변수 사용 불가 : 공간을 공유하는 특성에 모순이 된다 ArrayList foodList = new ArrayList(); foodList.add(new Food()); //foodList.add(new Animal()); Error Arraylist list = new Arraylist(); list.add(10); //Integer list.add("20"); //S.. 2022. 2. 21.