본문 바로가기

JAVA/이재환의 자바 프로그래밍 입문26

[Java] Ch.26 주소록 만들기 프로젝트 구상하기 전화번호를 저장하고 조회하는 기능을 가진 프로그램 데이터 기능 이름 전화번호 이메일 전화번호 입력 전화번호 조회 전화번호 삭제 전체 리스트 조회 프로그램 종료 데이터는 PhoneInfo 클래스를 생성하여 객체의 멤버 변수를 통해 저장하고 조회할 것 이 PhoneInfo 클래스를 이용하는 MyPhoneBook 클래스를 만들어 앞에서 말한 기능들을 구현할 것 PhoneInfo.java package step07; public class PhoneInfo implements java.io.Serializable { private static final long serialVersionUID = 1L; String name; String phoneNumber; String email; publ.. 2023. 10. 27.
[Java] Ch.25 스레드 스레드의 이해 운영체제에서 실행 중인 프로그램 = 프로세스 예전 DOS 운영체제 환경에서는 한 번에 한 프로그램만이 실행되었음 현대 운영체제인 윈도우, 맥OS, 리눅스 등에서는 동시에 여러 프로그램이 실행됨 두 가지 이상의 작업을 동시에 처리하는 것 = 멀티태스킹 프로세스는 자신만의 자원을 가짐 여러 프로세스가 동시에 실행도더라도 자신만의 메모리를 사용하기 때문에 서로 독립적임 실행 중인 애플리케이션, 즉 프로세스에서도 동시에 수행할 수 있는 다수의 코드 블록이 있을 수 있음 ex. 웹 브라우저는 다운로드가 진행 중일 때 계속해서 검색을 할 수 있음 이 작업들은 서로 독립적이어서 동시에 실행할 수 있음 자바 애플리케이션은 JVM 위에서 동작하며, 하나의 JVM은 하나의 애플리케이션을 실행할 수 있음 이 .. 2023. 10. 27.
[Java] Ch.24 입출력 스트림 자바의 입출력 스트림 자바에서 스트림이란 자료 흐름이 물의 흐름과 같다는 의미에서 사용됨 처음에는 자바 입출력 모델에서 발생하는 데이터 입출력을 스트림이라고 했는데, 컬렉션 객체를 다루기 위한 스트림이 자바 8에서 추가되면서, 기존의 입출력 모델에서 발생하는 스트림을 입출력 스트림이라고 구분하여 부르게 되었음 자바 입출력 모델 파일에서의 입출력 키보드와 모니터의 입출력 그래픽카드, 사운드카드의 입출력 프린터, 팩스와 같은 출력 장치의 입출력 인터넷으로 연결되어 있는 서버 또는 클라이언트의 입출력 입출력 장치는 매우 다양하기 때문에 장치에 따라 입출력 부분을 일일이 다르게 구현하면 프로그램 호환성과 생산성이 떨어질 수 밖에 없음 그래서 자바는 입출력 장치를 구분하지 않고 일관성 있게 프로그램을 구현할 수 .. 2023. 10. 26.
[Java] Ch.23 스트림 스트림 데이터의 흐름 데이터가 여러 개가 있어야 흐름을 만들 수 있기 때문에 스트림 데이터 소스로는 컬렉션, 배열 등이 주로 사용딤 스트림 데이터는 데이터 소스에서 추출한 연속적인 데이터 스트림은 이런 연속적인 데이터의 흐름을 반복적으로 처리하는 기능 스트림의 특징 스트림 연산은 기존 자료를 변경하지 않음 스트림 연산은 중간 연산과 최종 연산으로 구분됨 한 번 생성하고 사용한 스트림은 재사용 불가 스트림은 java.util.Stream 패키지의 멤버이며, BaseStream 인터페이스를 부모로 하여 4 종류의 스트림을 제공함 중간 연산, 최종 연산 중간 연산 filter() : 조건에 맞는 요소 추출 map() : 조건에 맞는 요소 변환 sorted() : 정렬 최종 연산 스트림의 자료를 소모하면서 연산.. 2023. 10. 26.
[Java] Ch.22 내부 클래스, 람다식 내부 클래스 자바에서는 클래스 안에 클래스를 선언할 수 있음 안쪽에 있는 클래스 : 중첩 클래스(nested class) 중첩 클래스를 가지고 있는 클래스 : 외부 클래스(outer class) 중첩 클래스 구분 static 중첩 클래스 : 중첩이지만 내부 클래스는 아님 non-static 중첩 클래스 : 내부 클래스(inner class)라고 부름 멤버 내부 클래스(member inner class) 지역 내부 클래스(local inner class) 익명 내부 클래스(anonymous inner class) // 변수 class MyClass { static int n1;// 스태틱 변수 int n2;// 멤버 변수 (인스턴스 변수) public void myFunc() { int n3;// 지역 변.. 2023. 10. 25.
[Java] Ch.21 컬렉션 프레임워크 자료구조 대량의 데이터를 효율적으로 관리하는 매커니즘 배열 배열은 크기가 고정되어 있어 데이터를 추가하거나 삭제할 수 없음 리스트 리스트는 원소가 원소를 가리켜서 관리하는 자료구조 데이터가 추가되거나 삭제될 때 연결하는 정보만 바꾸면 쉽게 추가, 삭제 가능 스택 스택은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(Last In First Out; LIFO)로 되어 있음 자료를 넣는 것을 '밀어넣는다'하여 푸시(push)라 하고, 반대로 넣어둔 자료를 꺼내는 것을 팝(pop)이라 하는데, 이 때 가장 최근에 푸시한 자료부터 나오게 됨 큐 큐는 먼저 집어넣은 데이터가 먼저 나오는 FIFO(First In First Out) 구조로 저장하는 자료구조 트리구조 부모 노드 밑에 여러 자식 노드가 연결되고.. 2023. 10. 25.