Java 57

[김영한_자바중급][6. 날짜와 시간] 예제를 통한 이해 (p.45)

[p.45 / 예제2) 선생님 코드_좋은 코드] public class TestLoopPlus { public static void main(String[] args) { LocalDate startDate = LocalDate.of(2024,1,1); for (int i = 0 ; i < 5 ; i++) { LocalDate nextDate = startDate.plus(i*2, ChronoUnit.WEEKS); System.out.println("날짜 " + (i+1) + " : " + nextDate); } } } 2번 코드는 반복문 안에서 직접 날짜를 계산하므로 코드가 더 간단하고 직관적이다. 추가적인 요구사항이나 변경 사항이 발생해도 코드를 쉽게 수정할 수 있다. [p.45 / 예제2) 내가 작..

[Java의 정석_기초편] 날짜와 시간 & 형식화_연습문제 10-2 (p.383)

[p.383] 무슨 요일인지 출력하는 프로그램 작성 import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; class Exercise2 { public static void main(String[] args) { String pattern = "yyyy/MM/dd"; DateFormat df = new SimpleDateFormat(pattern); Scanner s = new Scanner(System.in); Date indate = null; System.out.println("날짜를 " + pattern + "의 형태로 입력해주세요 ex. 2017/05..

[Java의 정석_기초편] 날짜와 시간 & 형식화_연습문제 10-1 (p.383)

[p.383] Calendar클래스와 SimpleDataFormat 클래스를 이용해서 2020년의 매월 두 번째 일요일 날짜를 출력 import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; class Exercise1 { public static void main(String[] args) { Calendar cal = Calendar.getInstance(); DateFormat df = new SimpleDateFormat("yyyy-MM-dd은 F번째 E요일입니다."); for (int i=0; i < 12 ; i++) { cal.set(Calendar...

Java/[문제해결] 2024.03.26

[김영한_자바기본][12. 다형성과 설계] (보충) 예제를 통한 이해 (p.13-

▶ 다형성 사용 전, 후 : 예제를 통한 이해 https://zoooom-in.tistory.com/63 [김영한_자바기본][12. 다형성과 설계] 다형성 사용 전, 후 예제를 통한 이해 (p.1-20) OCP(Open-Closed principle) 원칙 = 전략 패턴 - Open for extension : interface(전략 정의)를 통한 구현 확장이 가능해야 한다. - closed for modification : 클라이언트 부분의 코드가 수정이 불가능해야한다. 단, 메인 zoooom-in.tistory.com [p.13 / Driver] `drive()` 메서드는 `k3Car` 변수가 가리키는 실제 객체(원본 `k3Car`의 참조값)의 메서드를 호출 public class Driver { K..

[김영한_자바기본][10. 다형성1] (보충) 다형성과 캐스팅 / 일시적 다운 캐스팅 (p.7-10)

▶ [다형성1] 상속과 메모리 구조 https://zoooom-in.tistory.com/61 [김영한_자바기본][10. 다형성1] 상속과 메모리 구조(p.1-23) 1. 자식 객체를 부모 참조 변수에 할당하면 부모 메서드에 접근이 가능하다. 2. 다운캐스팅은 '일시적으로' 부모 타입의 참조 변수를 자식 타입으로 형변환하는 것이다. 3. 다운 캐스팅 수행 전 ins zoooom-in.tistory.com 자식 타입의 기능을 사용하려면 다운 캐스팅 결과를 변수에 담아두고, 이후 사용하면 된다. `자식` 변수를 통해 `부모` 객체를 참조할 때에 `자식` 타입으로 형변환된 객체를 사용할 수 있다. 다만 참조하는 의미를 담은 코드를 실행해도 구현된다. 즉 다운캐스팅으로 변수 타입 자체를 변경하는 것이 아니라 변..

[김영한_자바기본][8.final] finl 변수와 참조 (p.7-8)

final을 참조형 변수에 사용하면 참조값을 변경할 수 없다. ex) final Data data = new Data(); [p.7 / FinalRefMain] public class FinalRefMain { public static void main(String[] args) { final Data data = new Data(); //data = new Data(); data.value = 10; System.out.println(data.value); data.value = 20; System.out.println(data.value); } } - `final` 키워드를 사용하여 선언된 변수는 한 번 할당된 참조값을 변경할 수 없다. - 따라서 `final Data data = new Data()..

[김영한_자바기본][6. 접근 제어자] (보충) 접근 제어자 - 클래스 / 클래스 내부 동일한 클래스 객체 생성(p.10-11)

▶ 배열 / 접근제어자 이해 https://zoooom-in.tistory.com/55 [김영한_자바기본][6. 접근 제어자] 배열 / 접근 제어자 함께 이해하기_문제풀이 쇼핑 카트(p.17) 패키지가 서로 다르다면 import를 선언하는 것이 중요하며, main 메서드가 없는 경우 매개변수로 대체하여 진행할 수 있다. 끝으로 return은 메서드 (전체) 실행 중간에서 빠져나가는 역할을 하고, bre zoooom-in.tistory.com 클래스 내부에서 클래스와 동일 객체 생성이 가능하다. 또한 Public Class는 1개만 사용 가능하며, Default Class는 여러개 사용이 가능하다. [p.10 / PublicClass_일부 발췌] 클래스 내부 동일한 클래스 객체 생성 가능 public cl..

[김영한_자바기본][3. 객체 지향 프로그래밍] (보충) 객체 지향 메서드 이해 (p.8-9, p.12)

▶ 클래스와 메서드 이해 : 객체 지향 / 절차 지향 차이 이해 https://zoooom-in.tistory.com/51 [김영한_자바기본][3. 객체 지향 프로그래밍] 클래스와 메서드 / (복습) 객체 이해(p.8-11) 두 코드 모두 원본 클래스 내의 데이터 값을 참조하는 특징이 있다. 따라서 클래스의 내부 상태가 메서드에 의해 변경되며, 이 변경은 메서드를 호출한 외부에서도 반영된다. 이런식으로 객체의 zoooom-in.tistory.com 절차 지향은 데이터/기능이 분리되며, 메서드는 객체를 전달받아 해당 객체의 필드를 증가시킨다. 객체 지향은 데이터/기능이 한 공간에 함께 있으며, 메서드를 통해 내부 상태를 '직접 참조하여' 조작한다. 1. 절차 지향 [p.8 / ValueData] publi..

[김영한_자바기본][2. 기본형과 참조형] (보충) 메서드에 객체 전달 / 메서드에서 객체 반환 / NullPointerException (p.16-20, p.26-29)

▶ 1. 클래스와 데이터 : 클래스 생성 + 클래스의 이해 https://zoooom-in.tistory.com/65 [김영한_자바기본][1.클래스와 데이터] (보충) 배열 / 클래스 생성 / 배열 + 클래스 이해 (p.14, p.17, ▶ 배열의 선언과 생성 이해 https://zoooom-in.tistory.com/44 [김영한_자바입문][9.배열] 배열의 선언과 생성 이해하기 (p.2-7) 배열 선언은 아파트 부지 확보, 생성은 몇 개의 아파트를 확보할 것인지 배열 zoooom-in.tistory.com [BigData / Data 코드] Java에서 클래스의 멤버 변수는 선언 시에만 초기화할 수 있다 public class BigData { Data data = new Data(); Data da..

[김영한_자바기본][1.클래스와 데이터] (보충) 배열 / 클래스 생성 / 배열 + 클래스 이해 (p.14, p.17, p24-27)

▶ 배열의 선언과 생성 이해 https://zoooom-in.tistory.com/44 [김영한_자바입문][9.배열] 배열의 선언과 생성 이해하기 (p.2-7) 배열 선언은 아파트 부지 확보, 생성은 몇 개의 아파트를 확보할 것인지 배열의 값 할당은 부지를 참조해 실제 준공일을 기입한다. 할당 전까지는 부지 주소만 참조되어 나타난다. [코드 읽기 전 zoooom-in.tistory.com 1. 배열 이해하기 [p.14 / ClassStart2_배열 발췌] public static void main(String[] args) { String[] studentsName = new String[2]; studentsName[0] = "학생1"; studentsName[1] = "학생2"; System.out...