본문 바로가기
반응형

Java/이것이 자바다35

Java 기본 개념 Preface 자주 까먹고 헷갈리는 개념들만 보기 쉽게 따로 정리해둔다. - 자바는 클래스 다중 상속을 지원하지 않는다. → 인터페이스는 다중 상속이 가능하다. - 부모 클래스에 기본 생성자가 없고 매개 변수가 있는 생성자만 존재한다면 자식 생성자에서 반드시 부모 생성자 호출을 위해 super(매개값, ...)를 명시적으로 호출해야 한다. 1) super(매개값, ...)는 반드시 자식 생성자 첫 줄에 위치해야 한다. 2) 자식 클래스 내부에서 오버라이딩 된 부모 클래스의 메소드를 호출해야 한다면 명시적으로 super 키워드를 붙여 부모 메소드를 호출할 수 있다. - final 키워드 1) 클래스: 상속할 수 없는 클래스가 된다. 2) 필드: 상수가 된다. 3) 메서드: 오버라이딩할 수 없는 메서드가 된.. 2023. 9. 13.
(Fin) NIO 기반 입출력 및 네트워킹 Preface 이번 장을 끝으로 드디어 '이것이 자바다' 책 1회독을 마쳤다. 중간중간 완벽히 이해하지 못하고 넘어갔던 부분들은 필요할 때 다시 한 번 책과 인터넷을 찾아보며 공부할 생각이다. 물론 자바의 기본적인 사용 방법과 관련된 내용이었던 1권과 달리 2권은 다소 복잡한 내용들을 담고 있으므로 시간이 날 때마다 틈틈이 복습해야 할 것 같다. 1. NIO 소개 - NIO(New Input Output): java.nio 패키지에 포함되어 있는 비동기 채널 등의 네트워크 지원을 강화한 입출력 기능 - IO와 NIO의 차이점 구분 IO NIO 입출력 방식 스트림 방식 채널 방식 버퍼 방식 non-buffer buffer 비동기 방식 지원 안 함 지원 블로킹 / 넌블로킹 방식 블로킹 방식만 지원 두 방식 .. 2023. 5. 23.
네트워킹 Preface 이번 장은 네트워크와 관련된 내용들이다. 네트워크의 개념 자체는 생활코딩 강의를 통해 공부한 적이 있어 쉽게 이해할 수 있었지만, 이를 활용해 직접 코드를 작성하는 것은 쉽지 않은 것 같다. 다음 장을 공부하기 전에 직접 간단한 채팅 프로그램을 구현해볼까 한다. 5. 네트워크 기초 - 네트워크: 여러 대의 컴퓨터를 통신 회선으로 연결한 것 1) 지역 네트워크: 특정 영역에 존재하는 컴퓨터를 통신 회선으로 연결한 것 2) 인터넷: 지역 네트워크를 통신 회선으로 연결한 것 - 서버: 서비스를 제공하는 프로그램 → 클라이언트가 요청하는 내용을 처리해주고, 응답을 클라이언트로 보낸다. - 클라이언트: 서비스를 받는 프로그램 - 두 프로그램이 통신하기 위해선 연결을 요청하는 역할과 수락하는 역할이 .. 2023. 5. 12.
IO 기반 입출력 Preface 이번 장은 IO 기반의 입출력과 네트워킹에 대해 다루는데, 내용이 너무 많아 네트워크와 관련된 부분은 따로 업로드할 생각이다. 입출력에 관한 내용을 접하는 것이 이번이 처음이었다면 사용 방법을 익히는 데 시간이 꽤 걸렸을 듯하지만, 백준에서 문제를 풀어보며 이미 Scanner, BufferedReader 등 다양한 입출력 관련 메소드들을 사용해봐서 그런지 대부분의 내용을 큰 어려움 없이 이해하고 넘어갈 수 있었다. 1. 입력 스트림과 출력 스트림 - 스트림(Stream): 단일 방향으로 연속적으로 흘러가는 것 → 단방향이므로 하나의 스트림으로 IO를 모두 처리할 수 없다. 1) 입력 스트림: 프로그램이 데이터를 입력받을 때 사용하는 스트림 2) 출력 스트림: 프로그램이 데이터를 보낼 때 사.. 2023. 5. 12.
이자바 16장(스트림과 병렬 처리) 확인문제 Preface 이번 장을 제대로 이해하지 못한 것인지, 람다식과 메소드 참조 부분의 이해가 부족한 것인지, 문제를 풀다가 해결 방법을 모르겠어서 출판사에서 제공하는 확인문제 강의를 봤다. 아무래도 다음 장을 공부하기 전에 람다식 부분과 이번 장을 다시 한 번 천천히 살펴봐야 할 것 같다. - 5번 package ch16; import java.util.Arrays; import java.util.List; public class Exercise5 { public static void main(String[] args) { List list = Arrays.asList("This is a java book", "Lambda Expressions", "Java8 supports lambda expressti.. 2023. 5. 7.
스트림과 병렬 처리 Preface 이번 장의 제목에 병렬 처리도 포함되어 있지만, 간단한 개념만 소개할 뿐 대부분은 스트림에 관한 내용이었다. 스트림의 개념과 사용 방법 등 다양한 내용을 공부했는데, 람다식과 제네릭, 참조 등 앞 장 내용에 관한 지식이 요구되는 부분이 많았다. 어찌저찌 이해는 할 수 있었지만, 아무래도 해당 내용들을 직접 코드에 적용하기 위해선 많은 복습과 추가적인 공부가 필요할 듯하다. 1권은 자바의 기본적인 사용 방법에 관한 내용들이었다면, 2권에선 조금 더 딥하고 전문적인 내용을 소개하는 것 같다. 2권의 첫 장인 멀티 스레드에 관한 글을 업로드하며 말했듯 모든 내용을 완벽히 이해하려고 시간을 쓰며 스트레스를 받기보단 대충 이런 내용이 있구나 정도의 느낌만 얻은 뒤 필요할 때 직접 나만의 코드를 작성.. 2023. 5. 7.
이자바 15장(컬렉션 프레임워크) 확인문제 - 5번 List 변수 = new ArrayList(); - 6번 Map 변수 = new HashMap(); - 7번 package ch15; import java.util.ArrayList; import java.util.List; class Board { private String title; private String content; public Board(String title, String content) { this.title = title; this.content = content; } public String getTitle() { return title; } public String getContent() { return content; } } class BoardDao { public .. 2023. 5. 2.
컬렉션 프레임워크 Preface 이번 장에선 컬렉션 프레임워크에 포함된 다양한 자료구조를 공부했다. 백준에서 자바 문제를 풀어본 후 다른 사람들의 코드를 리뷰할 때 List와 Map 등의 자료구조를 사용한 코드를 자주 볼 수 있었는데, 나는 사용 방법을 모르다보니 지금껏 기본적인 배열만을 사용하여 직접 메소드를 만들어 문제를 해결했었다. 단순히 배열을 사용하는 것보다 컬렉션프레임워크의 클래스나 인터페이스에서 제공하는 다양한 메소드를 이용하면 원하는 결과를 보다 쉽게 얻을 수 있을 것 같다. 1. 컬렉션 프레임워크 소개 - 컬렉션 프레임워크(Collection Framework): 자료구조를 바탕으로 객체들을 효율적으로 관리할 수 있는 인터페이스와 클래스들을 모아둔 것 인터페이스 분류 특징 구현 클래스 Collection .. 2023. 5. 2.
이자바 14장(람다식) 확인문제 Preface 이번 확인문제는 본문에 있던 예제 코드가 그대로 나왔다. 람다식을 제대로 사용하려면 함수적 인터페이스에서 제공하는 메소드의 사용법을 정확히 익혀야 할 것 같다. - 4번: 람다식 안에서 선언된 변수는 final 특성을 지니므로 값을 변경할 수 없다. - 5번 package ch14; import java.util.function.IntBinaryOperator; public class Exercise5 { private static int[] scores = { 10, 50, 3 }; public static int maxOrMin(IntBinaryOperator operator) { int result = scores[0]; for (int score : scores) { result =.. 2023. 4. 28.
람다식 Preface 이번 장에선 람다식에 대해 공부했다. 지금껏 람다식이란 단어를 여러 번 들어만 봤을 뿐 어떤 개념인지 전혀 몰랐는데, 이제서야 사용 방법을 알게 되었다. 람다식을 사용하는 이유는 함수를 보다 짧게 작성하여 가독성을 높이기 위함이라고 하는데, 아무리 봐도 정말 간단한 몇몇 함수를 제외하면 람다식을 통해 작성한 코드가 훨씬 길고 복잡한 것 같다. 이에 추가적으로 함수적 인터페이스까지 사용해서 코드를 작성하게 되면 가독성도 급격히 떨어지는 느낌이다. 입사한 기업에서 람다식을 통한 코드 작성을 요구하지 않는 이상 나는 굳이 람다식 사용을 고집하진 않을 듯하다. 본문에서 함수적 인터페이스 메소드의 종류는 리턴 타입과 이름만 다를 뿐 대부분 동일한 맥락의 메소드이므로 생략했다. 1. 람다식이란? - .. 2023. 4. 27.