본문 바로가기
반응형

Java47

이자바 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.
이자바 13장(제네릭) 확인문제 Preface 대부분 기본적인 제네릭의 사용법과 관련된 문제들이므로 책의 내용만 잘 읽어봤다면 딱히 어려울 만한 문제는 없다. - 2번 package ch13; class Container { private T t; public void set(T t) { this.t = t; } public T get() { return t; } } public class Exercise2 { public static void main(String[] args) { Container container1 = new Container(); container1.set("홍길동"); String str = container1.get(); System.out.println(str); Container container2 = n.. 2023. 4. 26.
제네릭 Preface 이번 장에선 제네릭에 대해 공부했다. 딱히 어려운 내용은 없었지만, 클래스나 메소드마다 타입 파라미터를 붙이는 일이 꽤나 번거로웠다. 제네릭 사용이 처음이라 코드를 작성하는 데 시간이 조금 오래 걸리긴 하지만, 익숙해지면 시간도 단축하고 코드의 효율성도 높일 수 있을 것 같다. 무엇보다 이제 웬만한 자바 코드는 대부분 이해할 수 있지 않을까 싶다. 1. 왜 제네릭을 사용해야 하는가? - 제네릭 타입을 이용함으로써 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거할 수 있다. - 제네릭: 클래스, 인터페이스, 메소드를 정의할 때 타입을 파라미터(parameter)로 사용할 수 있게 한다. - 타입 파라미터: 코드 작성 시 구체적인 타입으로 대체되어 다양한 코드를 생성하도록 한다. -.. 2023. 4. 25.
이자바 12장(멀티 스레드) 확인문제 Preface 이번 장의 내용 자체가 워낙 복잡했어서 그런지 확인 문제에는 어려운 문제가 없다. - 2번 package ch12; class MovieThread extends Thread { @Override public void run() { for (int i = 0; i < 3; i++) { System.out.println("동영상을 재생합니다."); try { Thread.sleep(1000); } catch (InterruptedException e) { } } } } class MusicRunnable implements Runnable { @Override public void run() { for (int i = 0; i < 3; i++) { System.out.println("음악을 .. 2023. 4. 25.
멀티 스레드 Preface 이번 장에선 스레드와 관련된 내용을 공부했다. 앞 부분도 생각보다 복잡하고 어려워서 당황했는데, 마지막 부분에 있는 스레드 그룹과 스레드풀 쪽은 솔직히 이해가 잘 되지 않아 한 번 훑어보는 식으로 넘어갔다. 아무래도 아직 공부하지 않은 제네릭과 다양한 타입의 객체가 코드에 포함되어 있어서 그런 것 같다. 모든 내용을 이해하려고 시간을 쓰기 보단 이런 내용이 있구나 정도로 이해한 뒤, 추후 해당 내용이 필요할 때 다시 공부하는 것이 훨씬 효율적일 것 같다. 스레드 객체를 생성하는 방법 중 굳이 코드의 길이가 길어지는 Runnable 인터페이스 구현 방법을 사용하는 이유가 궁금해 chat-gpt에게 물어봤다. Q: 두 방법 중 익명객체를 생성해 Thread 클래스를 상속받는 방법이 훨씬 코드도.. 2023. 4. 21.
이자바 11장(기본 API 클래스) 확인문제 Preface 메소드의 이름과 형식, 사용 방법만 알면 특별히 헷갈릴 만한 문제는 없다. - 3번 package ch11; import java.util.HashMap; class Student { private String studentNum; public Student(String studentNum) { this.studentNum = studentNum; } public String getStudentNum() { return studentNum; } @Override public boolean equals(Object obj) { if (obj instanceof Student) { Student student = (Student) obj; if (studentNum.equals(student... 2023. 4. 15.
기본 API 클래스 (3) Preface 이번 장을 끝으로 이자바 1권 개념 공부를 모두 마쳤다. 마지막 부분 역시 다양한 메소드와 관련된 내용이라 한 번 훑어보는 식으로 넘어갔다. java.time 패키지의 시간 조작 및 계산 관련 메소드들은 굳이 익힐 필요가 없을 것 같아 따로 정리 하지는 않았다. 워낙 내용이 많았던 파트라 확인 문제를 풀어본 후 업로드했던 글들을 다시 한 번 읽어봐야 할 것 같다. 12. Math, Random 클래스 - java.lang.Math 클래스: 수학 계산에 사용할 수 있는 메소드 제공 → 모두 정적 메소드이므로 Math 클래스로 바로 사용할 수 있다. - Math 클래스의 메소드 메소드 설명 예제 코드 리턴값 int abs(int a) 절댓값 int v1 = Math.abs(-5); v1 = 5.. 2023. 4. 15.