Java/Java의 정석 16

Chapter 16 네트워킹(Networking)

1. 네트워킹(Networking) 네트워킹(Networking): 두 대 이상의 컴퓨터를 케이블로 연결해서 네트워크를 구성하는 것을 말한다. 초기의 네트워크는 몇 대의 컴퓨터로 구성됐으나 현재는 셀 수 없을 정도로 많은 컴퓨터가 인터넷이라는 하나의 거대한 네트워크를 구성하고 있으며 인터넷을 통해 다양하고 방대한 양의 데이터를 공유 가능하다. 자바의 java.net 패키지를 이용하면 네트워크 애플리케이션의 데이터 통신 부분을 쉽게 작성 가능 1.1 클라이언트(client)와 서버(server) 클라이언트와 서버는 컴퓨터간의 관계를 역할로 구분하는 개념이다. 서버(server): 서비스를 제공하는 컴퓨터 보통적으로 서버는 다수의 클라이언트에게 서비스를 제공하기 때문에 고사양의 하드웨어를 갖춘 컴퓨터이다. ..

Java/Java의 정석 2023.03.02

Chapter 13 스레드(Thread)

1. 프로세스(Process)와 스레드(Thread) Def) 프로세스(Process): 실행 중인 프로그램이다. 프로그램을 실행하면 OS로부터 필요한 자원(메모리)을 할당 받아서 프로세스가 된다. 프로세스는 프로그램을 수행하기 위해 필요한 데이터, 메모리 등의 자원 그리고 스레드로 구성된다. Def) 여기서 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것을 스레드라고 한다. 다시 말해 스레드는 프로세스의 실행 단위를 말한다. 스레드를 경량 프로세스(LWP, Light Weight Process)라고도 부른다. 프로세스는 하나 이상의 스레드를 포함한다. 프로세스는 공장, 스레드는 작업을 처리하는 일꾼이라고 이해할 수 있다. 멀티스레드 프로세스(multi threaded process): 둘 이상의 ..

Java/Java의 정석 2023.03.01

Chapter 15 입출력 I/O

1. 자바에서의 입출력 1.1 입출력이란? - Input & Ouput => 입출력 1.2 스트림(stream) 입출력을 수행하려면 (어느 한쪽에서 한 쪽으로 데이터를 전달하려면) 데이터를 전송할 수 있는 무언가가 필요하다. "스트림"이란 데이터를 운반하는데 사용되는 연결 통로이다. 스트림은 단방향 통신만 가능하기 때문에 입력, 출력을 동시에 처리할 수 없다. 스트림은 Queue와 같이 선입선출 구조로 되어있어서 먼저 입력된 데이터가 먼저 출력된다. 1.3 바이트기반 스트림 - InputStream, OutputStream 스트림은 바이트 단위로 데이터를 전송하며 입출력 대상에 따라 다음과 같은 스트림이 있다. InputStream: read() 오버라이드하고 OutputStream: write() 오버..

Java/Java의 정석 2022.03.07

Chapter 14 람다와 스트림

ㅇ1. 람다식(Lambda expression) 1.1 람다식이란? Def) 람다식: 함수(메서드)를 간단한 식(expression)으로 표현하는 방법 - 람다식은 사실 익명 클래스의 객체와 동등하다. -> 람다식을 다루기 위한 참조 변수가 필요하다. - 함수와 메서드의 차이 -> 근본적으로 동일, 함수는 일반적 용어, 메서드는 객체지향개념 용어 -> 함수는 클래스에 독립적, 메서드는 클래스에 종속적이다. 1.2 람다식 작성하기 1) 메서드의 이름과 반환 타입을 제거하고 '->'을 블록 앞에 추가한다. 2) 반환값이 있는 경우, 식이나 만 적고 return문을 생략가능하다. (세미콜론 안 붙인다.) 3) 매개변수 타입이 추론 가능하면 생략 가능하다. (대부분 생략 가능) - 작성 시 주의사항 1) 매개 ..

Java/Java의 정석 2022.03.04

Chapter 12 지네릭스, 열거형, 에너테이션

1. 지네릭스(Generics) 1.1 지네릭스란? Def) 지네릭스: 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능 - 자료형을 제한해주는 기능이다. - 타입 안정성이 높아지고 형변환의 번거로움이 줄어들어 간결해진다. - 의도하지 않은 타입의 객체가 저장되는 것을 막는다. 1.2 지네릭 클래스의 선언 - 클래스와 메서드에 선언할 수 있다. Ex) 지네릭 클래스 Box가 선언되어 있을 때 - Box: 지네릭 클래스, 'T의 Box' 또는 'T Box'라고 있는다. - T: 타입 변수 또는 타입 매개변수(T는 타입 문자) - Box: 원시 타입(raw type) Note) 지네릭스의 제한 - 지네릭 타입의 배열을 생성할 수 없다. - static 멤버에 타입 ..

Java/Java의 정석 2022.03.02

Chapter 11 컬렉션 프레임웍(Collection Framework)

1. 컬렉션 프레임웍 (Collection Framework) 컬렉션: 여러 객체(데이터)를 모아 놓은 것 프레임워 = 라이브러리(기능) + 프로그래밍 방식 프레임워크: 표준화, 정형화된 체계적인 프로그래밍 방식 컬렉션 프레임워크: 데이터 군을 저장하는 클래스들을 표준화한 설계 컬렉션(다수의 객체)을 다루기 위해 표준화된 프로그래밍 방식 컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스 제공 1.1 컬렉션 프레임웍의 핵심 인터페이스 List: 순서가 있는 데이터의 집합, 데이터 중복을 허용 Set: 순서를 유지하지 않는 데이터의 집합, 중복 허용하지 않는다. ex) HashSet, TreeSet Map: 키 - key(중복 허용하지 않는다.)와 값-value(중복 허용)이 쌍으로 이루어진 데이터의집합 ..

Java/Java의 정석 2022.03.02

Chapter 10 날짜와 시간 & 형식화 date, time and formatting

1.날짜와 시간 1.1 Calendar 와 Date - Date -> Calendar(오래 쓰다가 바뀜) -> time - 실무에서는 아직 Calendar을 쓰기도 한다. - Calendar 클래스 -> 추상 클래스(인스턴스 생성 불가)이므로 getInstance() - (static)를 통해 구현된 객체를 얻어야 한다. - Calendar 클래스 - Date와 Calendar 간의 변환 -> Date의 메서드는 대부분 'deprecated-더 이상 사용을 권장하지 않음.'되었지만 여전히 사용한다. "하위 호환성" - 컴퓨터는 항상 시간을 정수로 저장한다. - clear(int field)는 Calendar 객체의 모든(특정) 필드를 초기화한다. -> 1970년 1월 1일 00:00:00 (EPOCH T..

Java/Java의 정석 2022.02.28

Chapter 09 java.lang 패키지와 유용한 클래스

1. java.lang 패키지 (Java language) - 가장 기본이 되는 클래스들 포함 (import문이 필요없이 사용 가능) Ex) String, System, ... (를 import없이 사용) 1.1 Object 클래스 - 모든 클래스의 최고 조상, 오직 11개의 메서드만을 가진다. -> Object클래스의 멤버(멤버변수는 없고 메서드만있음)들은 모든 클래스에서 바로 사용가능하다. - notify(), wait() 등은 쓰레드와 관련된 메서드이다. - protected => public으로 바꿔야 오버라이딩 할 수 있다. (안 하면 같은 패키지에서만 쓸 수 있다.) - 리플렉션 API 1) equals(Object obj) - 객체 자신(this)과 주어진 객체(obj)를 비교한다. 같으면 ..

Java/Java의 정석 2022.02.24

Chapter 08 예외처리 Exception Handling

1. 예외처리(Exception Handling) Def) 예외: 컴파일도 되고 실행도 되지만 의도와 다른게 동작하는 것 1.1 프로그램 오류 - 컴파일 에러: 컴파일 시에 발생하는 에러 ex) system.out.println(); => 오류 - 런타임에러: 실행 시에 발생하는 에러 - 논리적 에러: 실행되지만, 의도와 다르게 동작하는 것 - 에러와 예외 차이 -> 에러: 코드에 의해 수습될 수 없는 심각한 오류 -> 예외: 코드로 수습할 정도의 미약한 오류(실행 잘 되지만 의도와 다르게 동작) - 예외처리의 정의, 목적 Def) 프로그램 실행 시 발생할 수 있는 예외의 발생에 대비한 코드를 작성하는 것 - 목적: 비정상 종료를 막고, 정상적 실행상태를 유지한다. 1.2 예외 클래스의 계층구도 - 모든..

Java/Java의 정석 2022.02.23

Chapter 07 객체지향 프로그래밍 II

1. 상속(Inheritance) 1.1 상속의 정의와 장점 Def) 상속: 기존의 클래스를 재사용해서 새로운 클래스를 작성하는 것 - 코드의 중복 제거, 생산성 향상, 유지 보수에 기여한다. - 'extends' 키워드 사용 - 두 클래스는 조상 - 자손 클래스 관계를 맺는다. - 자손은 조상의 "모든 멤버"를 상속 받는다. (멤버 - 멤버 변수나 메서드만 상속) - 생성자와 초기화 블럭은 상속되지 않는다. - 자손의 멤버 개수는 조상보다 적을 수 없다. (클래스는 멤버들의 집합) -> 조상 클래스: 부모(parent)클래스, 상위(super) 클래스, 기반(base) 클래스 -> 자손 클래스: 자식(child)클래스, 하위(sub) 클래스, 파생된(derived) 클래스, 유도 클래스 Ex) clas..

Java/Java의 정석 2022.02.22