From 576a123b61578677980ce18540606577e27d642f Mon Sep 17 00:00:00 2001 From: DongLee99 Date: Wed, 20 Jan 2021 14:35:29 +0900 Subject: [PATCH 01/10] =?UTF-8?q?docs:=EC=B1=85=EC=9E=84=20=ED=98=91?= =?UTF-8?q?=EB=A0=A5=20=EC=97=AD=ED=95=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 4week/4week.md | 141 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 4week/4week.md diff --git a/4week/4week.md b/4week/4week.md new file mode 100644 index 00000000..f8fb1ac0 --- /dev/null +++ b/4week/4week.md @@ -0,0 +1,141 @@ +# 4주차 과제 : 자바 코드 작성해보기 + +## 1. 자바 코드 실습 +--- +* 정리할 것 + 1. 역할, 책임, 협력(객체지향의 사실과 오해) → 제일 중요한것은 메세지다 + 2. vo(불변객체) + +--- +목차 +* [자바 코드의 실습](#자바-코드의-실습) + + * 역할, 책임, 협력 + + * [객체 지향의 사실과 오해](#객체-지향의-사실과-오해) + + * [객체 지향의 Goal](#객체-지향의-Goal) + * [객체 지향이란?](#객체-지향이란?) + * [객체 지향의 중요한 3가지 개념](#객체-지향의-중요한-3가지-개념) + * [협력](#협력) + * [책임](#책임) + * [역할](#역할) + * [메시지](#메시지) + * [캡슐화](#캡슐화) + + +### 객체 지향의 사실과 오해 + +> 객체 지향의 사실과 오해에 대해 알아보려면 우선 객체 지향이 뭔지에 대해서 알아야 한다. 우리는 지금 자바 스터디를 하고있다. 자바가 객체 지향 언어라는 것은 알고있지만 객체 지향에대해 따로 생각해본적은 없었다. 그렇다면 객체 지향이란? + +--- + +#### 객치 지향의 Goal +* 객체지향의 목표는 실제 세계를 모방하는것이 아니다. 새로운 세계를 창조하는 것이다. + + * 이 말에 예를 들자면 실제 세계의 커피라는 객체를 생각 해보자 ![](https://images.velog.io/images/donglee99/post/92b4d646-afde-43ab-a6a2-00210380ef54/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7%202021-01-20%20%EC%98%A4%ED%9B%84%2012.25.30.png) + * 이커피는 실제 세계의 커피 이다. 그렇다면 객체 지향에서 커피는 객체가 될수있다. 현실세계와 객체지향언어에서의 커피의 차이점은 **현실 세계의 커피는 스스로 온도를 조절 할 수 없고 양도 조절할 수 없다.** 하지만 **객체 지향에서의 커피는 스스로 온도 조절이 가능하고 양 조절도 가능하다.** 이처럼 객체 지향은 실제를 모방하는 것이 아니라 새로운 세계를 창조한다는 말이 성립이 된다. + + +_ 그래서 객체 지향은?_ +자바를 생각하면서 객체 지향을 떠올리면 가장 먼저 떠오르는것은 클래스 이다. 비록 다른 사람의 글을 보면서 글을 적고 있지만 이 사람 처럼 수업 시간에 배웠던것 처럼 자바 => 클래스 가 공감이 된다. 우리 학교도 수업시간에 자바를 하면 클래스만 주구장창 배웠기 떄문이다. + +코딩의 관점에서 본다면 클래스가 객체를 만들기위한 틀, 도구이기에 객체지향을 클래스 라고 착각할수가 있다. 객체지향의 주인공은 클래스가 아니라 객체 이다. 이 객체를 분류 하기 위한 것이 클래스 이다. 따라서 코드를 담는 클래스의 관점이 아닌 메시지를 주고 받는 객체의 관점으로 애플리케이션을 바라 보아야 한다. + +--- + +#### 객체 지향 이란? +* 객체 지향은 시스텀을 상호작용하는 자율적인 객체들을 공동체로 바라보고 이 객체를 이용해 시스템을 분할 하는 방법이다. +* 자율적인 객체란 스스로 자기자신의 상태와 행위를 조절 할 수있는 객체이다. +* 객체는 시스템을 구현하기위해 다른 객체와 메세지(유일한 의사소통 수단)로 협력을 한다. 각 객체는 협력 내에서 정해진 역할을 수행하며 이 역할에 대한 책임을 가지게 된다. +* 메시지를 수신한 객체는 메시지를 처리하기 위해 적합한 메서드를 스스로 선택을 한다. +* 객체는 상태와 행동을 함께 지닌 실체라고 정의를 하며 이말은 객체가 협력에 참여하기위해서는 어떤 행동을 해야한다면 그 행동을 하기위해 필요한 상태도 지녀야 한다. (객체는 상태와 행위를 함께 지니고 있음) + +#### 객체 지향의 중요한 3가지 개념 + + 1. 협력 + 2. 역할 + 3. 책임 + +* 카페를 가는 것으로 위 3가지를 다뤄 보면 + + * 카페에서 주문을 한다 = 나 ( 요청 ) 판매자 ( 응답 ) = 협력 + * 나, 판매자의 위치 = 역할 + * 나 = 구매를 한다. ,판매자 = 손님의 요청을 받고 응답을 하는 행위를 한다 = 책임 +* 객체의 세계에서는 협력이라는 문맥이 객체의 행동 방식을 결정하게 된다. +* 객체지향 개발에서 가장 중요한 능력은 책임을 능숙하게 소프트웨어 객체에 할당하는것이다. + +--- + +#### 협력 + +* 특정한 책임을 수행하는 역할들 간의 연쇄적인 요청과 응답을 통해 목표를 달성한다. +(사용자가 최종적으로 인식하게 되는 시스템의 기능 = 객체들의 협력의 결과) +* 혼자만의 힘으로 해결하기 힘든 문제를 여러 사람이 함께 해결한다. 이과정에서 요청 -> 응답의 연쇄적인 흐름이 발생하게 된다. 이 요청과 응답은 협력하는 객체의 책임을 정의 하게 된다. + +--- + +#### 책임 +* 애플리케이션의 기능은 좀 더 작은 책임으로 분할되며 책임은 적절한 역할을 수행할수 있는 객체에 의해 수행된다. ( 객체 지향 설계 = > 적절한 객체에 적절한 책임을 할당함으로 부터 시작) +* 책임의 분류 + + * 하는 것 (doing) + + * 객체를 생성, 계산등의 스스로 하는 것 + * 다른 객체의 행동 시작 시키는 것 + * 다른 객체의 활동을 제어하고 조절 하는것 + * 아는 것 (knowing) + + * 개인적인 정보에 대해 아는 것 + * 관련된 객체에 대해 아는 것 + * 자신이 유도하거나 계산할 수 있는 것에 대해 아는 것 + +(그냥 내 생각인데 이는 자바에서 코드를 짤때 메서드를 호출해 직접 상태를 변형 시키거나 다른 객체의 상태를 변형 시키는 것, 이때 변환 시킬 객체를 아는 것 등을 의미하는것 같다) +* 책임과 메시지 + + * 위의 doing, knowing을 보면 자신의 상태를 변환 시키는것들도 있지만 다른 객체에 관여 하는것도 많다 이때 객체의 유일한 의사소통 수단인 메시지가 사용된다는 사실을 유추해 낼수 있다. + * 너무 추상적인 메시지는 의도가 변형될수있으므로 구체적이여한다. + +--- + +#### 역할 +* 역할은 관련성이 높은 책임의 집합으로 + + * 동시에 여려객체가 동일 역할을 수행 할수있다. + * 역할은 대체 가능성을 의미한다. + * 각 객체는 책임 수행 방법을 자율적으로 선택 가능하다. + +--- +#### 메시지 +* What/Who 사이클 + + * 책임-주도 설계의 핵심은 어떤 행위가 필요한지 검토후 이를 수행할 객체를 결정하는 것이다. + 이과정을 What/Who 사이클이라 한다. + * What/Who 사이클의 의미는 객체 사이의 협력 관계를 설계하기위해 어떤 행위 What를 수행할것이고 누가 수행Who 할것인가를 결정하는 것인데 이때 어떤 행위 = 메시지 이다. + * 객체가 어떤 메시지를 수신하고 처리할 수 있는냐에 따라 객체의 책임이 결정된다. +* 묻지 말고 시켜라 + + * 메시지 송신자는 수신자에대한 정보를 모르기 때문에 캐물을 수 없다. 단지 자신이 전송한 메시지를 잘 처리할 것이라고 믿고 전송한다. + * 객체는 다른 객체의 상태를 묻지 말아야 한다. 객체가 다른 객체의 상태를 묻는 다는 것은 메시지 전송 이전에 객체가 가져야 하는 상태에 관해 너무 많이 고민 하고 있다는 증거이다. +* 메시지를 믿어라 + + * 메시지는 전송 시점에 자신이 전송한 메시지를 수신할수 있다면 협력하는 객체의 종류가 무엇인지는 중요하지 않게 된다. (커피를 주문 하는 시점에 누가 주문을 받던지 상관이 없다 나는 커피만 받으면 된다) + * 중요한것은 수신한 객체가 메시지를 정확하게 이해하고 메시지를 전송한 객체가 의도한대로 요청을 처리할 수 있는지 여부다. (커피를 받는 그 자체) + * 메시지를 이해할 수 있다면 다양한 타입의 객체로 협력 대상을 자유롭게 교체 가능 -> 설계의 유연 (다형성) +--- +#### 캡슐화 +* 객체의 자율성을 보전하기 위해 구현을 외부로 부터 감추는 것 +* 객체는 상태와 행위가 함께 캡슐화 되어 충분히 협력적이고 자율적인 존재가 된다. + + * 상태와 행위의 캡슐화 + + * 객체는 상태와 행위의 조합으로 객체자체가 상태와 행위를 하나의 단위로 묶는 자율적인 실체가 된다 이를 데이터 캡슐화 라고 칭한다. + * 사적인 캡슐화 + + * 객체는 외부의 객체가 자신의 내부를 제어, 관찰이 불가능하게 막는다. + +--- +#### Reference +* [객체지향의 사실과 오해](https://jongmin92.github.io/2019/02/10/Programming/object_oriented_facts_and_misunderstandings/) +* [객체지향의 사실과 오해 정리](https://jheloper.github.io/2020/02/object-oriented-facts-and-misunderstandings-01/) +* [TIL/객체지향의 사실과 오해](https://github.com/cheese10yun/TIL/blob/master/OOP/객체지향의사실과오해.md#협력) \ No newline at end of file From ec23bfef6cd1d630584308eddbaaaed11912ba24 Mon Sep 17 00:00:00 2001 From: DongLee99 Date: Wed, 20 Jan 2021 15:40:17 +0900 Subject: [PATCH 02/10] add:vo --- 4week/4week.md | 145 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 144 insertions(+), 1 deletion(-) diff --git a/4week/4week.md b/4week/4week.md index f8fb1ac0..4c194c9b 100644 --- a/4week/4week.md +++ b/4week/4week.md @@ -138,4 +138,147 @@ _ 그래서 객체 지향은?_ #### Reference * [객체지향의 사실과 오해](https://jongmin92.github.io/2019/02/10/Programming/object_oriented_facts_and_misunderstandings/) * [객체지향의 사실과 오해 정리](https://jheloper.github.io/2020/02/object-oriented-facts-and-misunderstandings-01/) -* [TIL/객체지향의 사실과 오해](https://github.com/cheese10yun/TIL/blob/master/OOP/객체지향의사실과오해.md#협력) \ No newline at end of file +* [TIL/객체지향의 사실과 오해](https://github.com/cheese10yun/TIL/blob/master/OOP/객체지향의사실과오해.md#협력) +--- +### VO(불변 객체) + +> Immutable Object란? 객체 지향 프로그래밍에서 불변 객체는 생성후 그 상태를 바꿀수 없는 객체를 의미한다. 당연히 반대인 가변 객체도 있다. 가변 객체로 생성후 불변객체로의 변환도 가능하다. 객체의 전체가 불변인 경우도 있고, C++에서 Const 데이터 멤버 처럼 일부 속성만 불변인 경우도 있다. 또 경우에 따라서는 내부 속성이 변화 해도 외부에서 그 객체의 상태가 변하기 않는다고 보이면 불변 객체로 보기도 한다. 불변 객체를 사용시 복제나 비교를 위한 조작을 단순화 할수 있으며, 성능 개선에 도움을 준다. 하지만 객체가 변경이 가능한 데이터를 많이 가지고 있다면 오히려 부적적할 경우가 있다. + +#### 자바에서의 Immutable Class +* 자바에서의 Immutable Class 는 String, Boolean, Integer, Float, Long 등등이 있다. 이 클래스들은 Heap 영역에서 변경이 불가능 한거지 재할당을 못하는 것은 아니다. +``` java +String str = "abc"; +str = "cba"; +``` +위 코드 처럼 재할당이 가능하다. = str 이 처음에 "abc" 를 참조했는데 이 값이 "cba" 로 바뀌는 것이아니라 "cba"라는 새로운 객체가 생기고 그 객체를 str 이 재참조 하는것이다. 이때 "abc" 는 아무도 참조를 하고있지 않게 된다. + +_그렇다면 계속 str에 재할당을 한다면 객체가 생성된채로 낭비가 된다는 것인데 이는 어떻게 처리하는게 옳은 방법일까?_ + +* String vs String Builder + + * String Builder 는 String 과 다르게 mutable 하기 때문에 변경을 하더라고 새로운 객체를 만들지 않고 기존 할당된 값을 수정 한다. 즉 문자열 변경과 연산을 하는 경우 기존의 버퍼 크기를 늘리거나 줄이면서 유연한 동작이 가능하게 된다. + + +* 불변 클래스의 예 +``` java +class ImmutableClass { + private final int age; + private final String name; + + public ImmutableClass(int age, String name) { + this.age = age; + this.name = name; + } +} + +``` +위의 코드는 외부에서 수정이 불가능한 불변 객체가 된다. +불변 객체가 된 가장 큰이유는 멤버 변수를 private final로 선언하고 setter를 구현하지 않았기 때문이다. + + +``` java +class MutableClass { + public int age; + public String name; + + public MutableClass(int age, String name) { + this.age = age; + this.name = name; + } +} + +``` +위 코드는 외부에서 수정이 가능하므로 불변 객체가 X + +#### Immutable Object 만들기 + +* Immutable Object 를 만들때 기본적으로는 필드에 final을 사용하고 Setter를 구현 하지않는다. +이는 불변객체의 필드가 모두 원시 타입일 경우에만 가능하고, 참조 타입일 경우엔 추가적인 작업이 필요하다. + +** 원시타입만 있는 경우 ** +``` java +public class BaseObject { + private int value; + + public BaseObject(final int value) { + this.value = value; + } + + public void setValue(int new Value) { + this.value = newValue; + } +} + +``` +* 위의 객체는 불변 객체가 아니다 setter 도 존재하고 필드도 final로 선언되어있지 않다. +필드에 원시 타입만 있으므로 이는 final 키워드로 불변 객체로 만들수 있다. + +``` java +public class BaseObject { + private final int value; + + public BaseObject(final int value) { + this.value = value; + } + +} + +``` + +* 위의 코드는 final과 setter 의 삭제로 불변 객체로 만들어 주었다. 따라서 위 객체의 value 를 변경하기 위해서는 재할당 하는 방법 밖에 없다. +** 참조 타입이 있는 경우 ** +* 참조 타입이 있는 경우는 final을 사용하고 setter를 작성하지 않는 것으로 불변 객체를 만들수 없다. + +``` java +public class Animal { + private final Age age; + + public Animal(final Age age) { + this.age = age; + } + + public Age getAge() { + return age; + } +} +class Age { + + private int value; + + public Age(final int value) { + this.value = value; + } + + public void setValue(final int value) { + this.value = value; + } + + public int getValue() { + return value; + } +} + +``` +* 위 Animal 클래스는 final 을 사용하고 Setter 를 구현하지 않았지만 불변 객체가 아니다 그이유는 클래스 필드인 Age 값이 변경이 가능하기 때문이다. 따라서 Animal 클래스가 불변 객체가 될려면 Age 클래스도 불변 객체가 되어야 한다. 즉 참조 변수도 불변 객체 여야 한다. +** Array 경우 ** +```java +public class ArrayObject { + + private final int[] array; + + public ArrayObject(final int[] array) { + this.array = Arrays.copyOf(array,array.length); + } + + + public int[] getArray() { + return (array == null) ? null : array.clone(); + } +} +``` +* 배열의 경우 생성자에서 배열을 받아 copy해서 저장 했고 getter를 clone 으로 반환하게 하면 불변객체로 만들수있다. (배열을 그대로 참조 or 그대로 반환시 내부 값이 변경될수도있다.) +--- +#### Reference +* [java Immutable Object(불변객체)](https://velog.io/@conatuseus/Java-Immutable-Object불변객체) +--- + From 8d9893651095e9b9a501c6f4825c4e9bd273bb5c Mon Sep 17 00:00:00 2001 From: DongLee99 Date: Wed, 20 Jan 2021 22:55:19 +0900 Subject: [PATCH 03/10] =?UTF-8?q?add:=EC=97=B0=EC=82=B0=EC=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 4week/4week.md | 573 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 573 insertions(+) diff --git a/4week/4week.md b/4week/4week.md index 4c194c9b..8768197c 100644 --- a/4week/4week.md +++ b/4week/4week.md @@ -22,6 +22,20 @@ * [역할](#역할) * [메시지](#메시지) * [캡슐화](#캡슐화) + * [VO(불변 객체)](#VO(불변-객체)) + +* 자바 기초 + + * [산술 연산자](#산술-연산자) + * [비트 연산자](#비트-연산자) + * [관계 연산자](#관계-연산자) + * [논리 연산자](#논리-연산자) + * [instanceof](#instanceof) + * [assignment(=) operator](#assignment(=)-operator) + * [화살표(->) 연산자](#화살표(->)-연산자) + * [3항 연산자](#3항-연산자) + * [연산자 우선 순위](#연산자-우선-순위) + * [(optional) java13, switch 연산자](#(optional)-java13.-switch-연산자) ### 객체 지향의 사실과 오해 @@ -226,6 +240,7 @@ public class BaseObject { ``` * 위의 코드는 final과 setter 의 삭제로 불변 객체로 만들어 주었다. 따라서 위 객체의 value 를 변경하기 위해서는 재할당 하는 방법 밖에 없다. + ** 참조 타입이 있는 경우 ** * 참조 타입이 있는 경우는 final을 사용하고 setter를 작성하지 않는 것으로 불변 객체를 만들수 없다. @@ -280,5 +295,563 @@ public class ArrayObject { --- #### Reference * [java Immutable Object(불변객체)](https://velog.io/@conatuseus/Java-Immutable-Object불변객체) + + +
+
+ +## 자바 기초 +--- + +### Goal +> 자바가 제공하는 다양한 연산자를 학습하자. + +* 연산자 : 어떠한 기능을 수행하는 기호 +* 피연산자 : 연산자의 작업 대상( 변수, 상수, 리터럴, 수식) + +_ 주의_ : 우선순위가 같은 연산자들은 연산의 진행 방향에 따라 연산순서가 정해짐 +![](https://images.velog.io/images/donglee99/post/68fa0df1-c74b-414f-bcf7-69f4eb341b23/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7%202021-01-20%20%EC%98%A4%ED%9B%84%208.29.59.png) + +--- + +### 산술 연산자 + +* 산술 연산자는 가장 많이 사용하는 연산자로 수식 계산에 사용되는 연산자 이다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
구분연산자의미
+ + + + + 더하기 +
+ + - + + 빼기 +
+ 산술 연산자 + + * + + 곱하기 +
+ + / + + 나누기 +
+ + % + + 나머지 값 구하기 +
+ +🏳️ int 보다 크기가 작은 타입은 int로 변환 +* byte, char, short -> int + +🏳️ 피연산자 중 표현범위가 큰 타입으로 형변환 + * byte + short -> int + int = int + * char + int -> int + int = int + + +1. 사칙연산자 (+, -, /, *) + + ```java + int a = 1000000; + int b = 1000000; + long c = a * b; + System.out.println(c); + // -727379968 + ``` + * 이는 int 의 연산이 진행된후 long으로 자동형변환이 되면서 쓰레기 값이 대입되어서 그렇다. 바른 결과를 얻을려면 long형에서 연산을 진행 했어야 한다. + ```java + + char c = 'a' + 1; + System.out.println(c); + // b + ``` + * 위 코드는 a가 아스키 코드 값으로 변환되어 +1 연산을 수행후 다시 char 로 변환이(컴파일러에 의한 자동변환) 진행되어 값이 b 가 나오게 된다. 하지만 만약 + ```java + char c = 'a' + char c1 = c + 1; + System.out.println(c); + // 오류 + ``` + * 이처럼 대입후 연산을 하게 되면 컴파일러가 미리 계산을 할수 없게 되어 오류가 발생하게 된다. +2. 나머지 연산자 (%) + + * 나머지 연산자는 왼쪽의 피연산자들을 오른쪽 피연산자로 나눈후 나머지 값을 리턴하는 연산자 이다. (주로 홀수, 짝수, 배수검사에 사용) + ```java + int a = 5; + int b = 3; + int c = a % b; + System.out.println(c); + // 2 + ``` + +3. 쉬프트 연산자 ( <<. >>, >>>) + + * 쉬프트 연산자는 정수형 변수에만 사용 가능하다. 피연산자의 각 자리를 오른쪽 또는 왼쪽으로 이동한다 해서 쉬프트 연산자로 이름이 붙여졌다. + * ```<<``` 연산자 : 피연산자의 부호에 상관없이 자리를 왼쪽으로 이동시키면서 빈칸을 0 으로 채움 + * ```>>``` 연산자 : 오른쪽으로 이동 시키기 때문에 음수인 경우 부호를 유지 시켜주기 위해서 음수인 경우 빈자리 1로 채움 + * ``` >>> ``` 연산자 : 부호에 상관없이 항상 0 으로 빈자리를 채움 + _ 모두 두개의 피연산자를 가짐 ( 이항연산자 )_ + + + +--- + +### 비트 연산자 +* 비트 연산자 (&, |, ^) + + * 비트 연산자는 말 그대로 이진 비트 연산을 수행한다. + * 실수형 float, double 을 제외한 모든 기본형에 사용이 가능하다. +* OR(|)연산자 + + * 피연산자 중 어느 한쪽이 1 이면 결과는 1이다. +* AND(&)연산자 + + * 피연산자 둘 모두 1이여야 결과가 1이다. +* XOR(^)연산자 + + * 피연산자가 서로 다를 경우에 결과 1이다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ x + + y + + x|y + + x&y + + x^y +
+ 1 + + 1 + + 1 + + 1 + + 0 +
+ 1 + + 0 + + 1 + + 0 + + 1 +
+ 0 + + 1 + + 1 + + 0 + + 1 +
+ 0 + + 0 + + 0 + + 0 + + 0 +
+ +* 이 표를 보면 좀더 이해가 편하다. +![](https://images.velog.io/images/donglee99/post/7fb466eb-67a2-4311-8768-05d7dd1d0e73/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7%202021-01-20%20%EC%98%A4%ED%9B%84%209.10.50.png) + +--- + +### 관계 연산자 +* 관계 연산자 ( >, <, >=, <=, ==, != ) + + * 비교 연산자라고도 부르며 부등호라 생각하면 쉽다. + * 관계 연산자의 결과는 boolean 값으로 반환되며 나는 산술연산자보다 관계 연산자를 더 자주 사용하는것 같다. (주로 조건문과 함께 많이 사용한다) + * + ![](https://images.velog.io/images/donglee99/post/dcd6a3c2-5452-4cd3-ad9c-c68c7710567a/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7%202021-01-20%20%EC%98%A4%ED%9B%84%209.17.36.png) + * ex) + ```java + int a = 3; + int b = 4; + if ( a < b ) { + System.out.println(true); + } else { + System.out.println(false); + } + // true + `` + +--- + +### 논리 연산자 + +* 논리 연산자 (&&, ||) + + * 논리연산자는 피연산자로 boolean 형 또는 boolean 형 값을 결과로 하는 조건식만을 허용한다. +* OR(||)연산자 + + * 피연산자중 한쪽이 true 면 true 이다 +* AND(&&)연산자 + + * 피연산자 두 쪽 모두 true 여야 true + _1학년때부터 정말 많이 봐온 연산자지만 아직도 가끔 헷갈린다_ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ x + + y + + x||y + + x&&y +
+ true + + true + + true + + true +
+ true + + false + + true + + false +
+ false + + true + + false + + true +
+ false + + false + + false + + false +
+* ex) +```java + char x = 'j'; + if ( (x >= 'a' && x<= 'z') { + System.out.println("유효"); + } else { + System.out.println("유효X"); + } + // 유효 + +``` + +--- + +### instanceof + +* instanceof( 참조 연산자 ) + + * 참조변수가 참조하고 있는 인스턴스의 타입을 알아보기 위해(간단하게 객체의 타입을 알아보기 위한) 주로 사용하며 조건문과 함께 사용된다. (주로 부모 객체인지 자식 객체인지 확인할때 쓴다) + * instanceof 의 왼쪽 피연산자로는 참조변수, 오른쪽 피연산자에는 타입(클래스명)이 피연산자로 위치한다. 이때 결과 값은 boolean값으로 반환된다. (true = 참조변수(왼쪽)가 검사한 타입(오른쪽)으로 형변환이 가능하다는 뜻) + * Ex) + ```java + class A{} + class B extends A{} + class instanceofEx01 { + + public static void main(String[] args) { + A a = new A(); + B b = new B(); + + System.out.println("a instanceof A : " + (a instanceof A)); + System.out.println("b instanceof A : " + (b instanceof A)); + System.out.println("a instanceof B : " + (a instanceof B)); + System.out.println("b instanceof B : " + (b instanceof B)); + } + } + // a : 부모 + // b : 자식 + // true + // true + // false + // true + + ``` + + +--- + + +### assignment(=) operator +* 대입 연산자 (assignment operator) + + * 대입 연산자는 변수에 값을 할당할때 사용되는 이항 연산자 이다. 피연산자들의 결합 방향은 오른쪽에서 원쪽이다. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 대입 연산자 + + 설명 +
+ = + + 왼쪽의 피연산자에 오른쪽 피연산자 대입 +
+ += + + 왼쪽의 피연산자에 오른쪽의 피연산자를 더한후, 그 결과 값을 왼쪽의 피연산자를 대입 +
+ -= + + 왼쪽의 피연산자에 오른쪽의 피연산자를 뺀후, 그 결과 값을 왼쪽의 피연산자를 대입 +
+ *= + + 왼쪽의 피연산자에 오른쪽의 피연산자를 곱한후, 그 결과 값을 왼쪽의 피연산자를 대입 +
+ /= + + 왼쪽의 피연산자에 오른쪽의 피연산자를 나눈후, 그 결과 값을 왼쪽의 피연산자를 대입 +
+ %= + + 왼쪽의 피연산자에 오른쪽의 피연산자를 나눈후, 그 나머지 값을 왼쪽의 피연산자를 대입 +
+ &= + + 왼쪽의 피연산자에 오른쪽의 피연산자와 비트 & 연산후, 그 결과 값을 왼쪽의 피연산자를 대입 +
+ |= + + 왼쪽의 피연산자에 오른쪽의 피연산자와 |연산후, 그 결과 값을 왼쪽의 피연산자를 대입 +
+ ^= + + 왼쪽의 피연산자에 오른쪽의 피연산자와 ^연산후, 그 결과 값을 왼쪽의 피연산자를 대입 +
+ <<= + + 왼쪽의 피연산자에 오른쪽의 피연산자만큼 왼쪽 시프트 후, 그 결과 값을 왼쪽의 피연산자를 대입 +
+ >>= + + 왼쪽의 피연산자에 오른쪽의 피연산자만큼 부호 유지 오른쪽 시프트후, 그 결과 값을 왼쪽의 피연산자를 대입 +
+ >>>= + + 왼쪽의 피연산자에 오른쪽의 피연산자만큼 부호에 상관없이 오른쪽 시프트 후, 그 결과 값을 왼쪽의 피연산자를 대입 +
+ +--- + + +### 화살표(->) 연산자 +> 람다함수란? 프로그래밍 언어에서 사용되는 개념으로 익명함수를 지칭한다. 람다 대수는 이름이 필요가 없다. + +** 익명 클래스란? ** +* 익명 클래스는 클래스의 instantiation과 동시에 클래스를 정의하는 클래스를 의미하며 특정 클래스가 여러번 호출 되지 않거나, 클래스 내부에 필드나 여러개의 메소드를 정의할 필요가 있을때 익명 클래스로 정의해 사용한다. +* 익명 클래스의 특징으로는 new 를 사용하고 instantiation시 파라미터가 없다. + +* 화살표 연산자는, 익명함수라고 불리는 람다식의 등장으로 사용되는 연산자다.(자바 8 버전부터 사용한다 한다) +* 기본 형태 +```(매개변수목록) -> { 함수몸체 }``` +* ex) +```java + // Thread - traditional + new Thread(new Runnable() { + @Override + public void run() { + System.out.println("Hello World."); + } + }).start(); + +``` + 를 람다식으로 변형 하면 +```java +// Thread - Lambda Expression +new Thread(()->{ + System.out.println("Hello World."); +}).start(); +``` + 처럼 변형시킬수 있다. 이 처럼 람다식을 사용하게 되면 코드의 간결성이 높아지고 가독성이 높아지게 된다. + +--- + + +### 3항 연산자 + +--- + + + +### (optional) java 13. switch 연산자 + --- +### Reference +* [세바의 코딩 교실](https://programmer-seva.tistory.com/9?category=615256) +* [문돌이의 it](https://improver.tistory.com/140) + + + From a22ef0d26a7d5dae20c4e172ffc3b294948e76df Mon Sep 17 00:00:00 2001 From: DongLee99 Date: Thu, 21 Jan 2021 14:02:26 +0900 Subject: [PATCH 04/10] add:option --- 4week/4week.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/4week/4week.md b/4week/4week.md index 8768197c..e2487d0c 100644 --- a/4week/4week.md +++ b/4week/4week.md @@ -841,11 +841,60 @@ new Thread(()->{ ### 3항 연산자 +* 삼항 연산자 = 조건 연산자 + ```java +if () { + + } else if { + + } + + ``` + * 위 코드 처럼 if 문을 사용하게 되면 코드가 길어지는 경우가 많다. 코드가 길어지게 되면 가독성이 떨어지게 되고 결국 이해하기 힘들어지는 단점이 생기게 된다. 이를 해결하기 위해 삼항연산자를 사용해 보자. ( _개인적으로 삼항연산자를 별로 접해보지 못해서 차라리 코드가 길면 길지 삼항연산자로 보면 더 이해가 안간다_ ) + * 기본 형태 ```(boolean) ? c(true일경우) : d(false일경우)``` + * ex) + ```java + int a = 1; + int b= (a == 1) ? 1 : 0; + // a가 1일 경우 1반환 false 일 경우 0 을 b 에 대입; + ``` + == + ```java + int a = 1; + int b = 0; + if ( a == 1) { + b = 1; + } else { + b = 0; + } + ``` + --- ### (optional) java 13. switch 연산자 +* switch 연산자 + + * 스위치 연산자라 하면 기존의 자바 문법의 switch 를 생각 할것이다. + * 기존의 스위치문은 break 를 걸지 않으면 자신이 속한 case 를 진행후 스위치 문을 탈출 하지 않고 다음 case 를 거치게 된다. + ```java + switch (day) { + case Monday: + break; + case Friday: + case Sunday: + } + ``` + 이를 막기위해서 java13 에서 부터는 화살표 연산자가 추가 되면서 + ```java + switch (day) { + case Monday -> numDay = 1: + case Friday -> numDay =2: + case Sunday -> numDay =3: + } + ``` + case 의 label 이 매칭이 되면 -> 이후 코드를 실행하고 switch문을 탈출하게 된다. --- From 987310a17765393896c595be1354309bb825c196 Mon Sep 17 00:00:00 2001 From: DongLee99 Date: Fri, 22 Jan 2021 12:53:02 +0900 Subject: [PATCH 05/10] =?UTF-8?q?feat:=EA=B3=84=EC=82=B0=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../6.3/executionHistory/executionHistory.bin | Bin 0 -> 20812 bytes .../executionHistory/executionHistory.lock | Bin 0 -> 17 bytes .../.gradle/6.3/fileChanges/last-build.bin | Bin 0 -> 1 bytes .../.gradle/6.3/fileContent/fileContent.lock | Bin 0 -> 17 bytes .../.gradle/6.3/fileHashes/fileHashes.bin | Bin 0 -> 18597 bytes .../.gradle/6.3/fileHashes/fileHashes.lock | Bin 0 -> 17 bytes 4week/bringjava/.gradle/6.3/gc.properties | 0 .../.gradle/6.3/javaCompile/classAnalysis.bin | Bin 0 -> 18569 bytes .../.gradle/6.3/javaCompile/javaCompile.lock | Bin 0 -> 17 bytes .../.gradle/6.3/javaCompile/taskHistory.bin | Bin 0 -> 18614 bytes .../6.5/executionHistory/executionHistory.bin | Bin 0 -> 20179 bytes .../executionHistory/executionHistory.lock | Bin 0 -> 17 bytes .../.gradle/6.5/fileChanges/last-build.bin | Bin 0 -> 1 bytes .../.gradle/6.5/fileHashes/fileHashes.bin | Bin 0 -> 18697 bytes .../.gradle/6.5/fileHashes/fileHashes.lock | Bin 0 -> 17 bytes 4week/bringjava/.gradle/6.5/gc.properties | 0 .../buildOutputCleanup.lock | Bin 0 -> 17 bytes .../buildOutputCleanup/cache.properties | 2 + .../buildOutputCleanup/outputFiles.bin | Bin 0 -> 18821 bytes .../.gradle/checksums/checksums.lock | Bin 0 -> 17 bytes 4week/bringjava/.gradle/vcs-1/gc.properties | 0 4week/bringjava/.idea/.gitignore | 8 + 4week/bringjava/.idea/compiler.xml | 6 + 4week/bringjava/.idea/gradle.xml | 19 ++ 4week/bringjava/.idea/jarRepositories.xml | 20 ++ 4week/bringjava/.idea/misc.xml | 10 + 4week/bringjava/build.gradle | 14 ++ .../build/classes/java/main/Hello.class | Bin 0 -> 502 bytes .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 58910 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + 4week/bringjava/gradlew | 185 ++++++++++++++++++ 4week/bringjava/gradlew.bat | 104 ++++++++++ .../out/production/classes/Calculator.class | Bin 0 -> 2882 bytes .../out/production/classes/Hello.class | Bin 0 -> 502 bytes 4week/bringjava/settings.gradle | 2 + 4week/bringjava/src/main/java/Calculator.java | 81 ++++++++ 4week/bringjava/src/main/java/Hello.java | 10 + 37 files changed, 466 insertions(+) create mode 100644 4week/bringjava/.gradle/6.3/executionHistory/executionHistory.bin create mode 100644 4week/bringjava/.gradle/6.3/executionHistory/executionHistory.lock create mode 100644 4week/bringjava/.gradle/6.3/fileChanges/last-build.bin create mode 100644 4week/bringjava/.gradle/6.3/fileContent/fileContent.lock create mode 100644 4week/bringjava/.gradle/6.3/fileHashes/fileHashes.bin create mode 100644 4week/bringjava/.gradle/6.3/fileHashes/fileHashes.lock create mode 100644 4week/bringjava/.gradle/6.3/gc.properties create mode 100644 4week/bringjava/.gradle/6.3/javaCompile/classAnalysis.bin create mode 100644 4week/bringjava/.gradle/6.3/javaCompile/javaCompile.lock create mode 100644 4week/bringjava/.gradle/6.3/javaCompile/taskHistory.bin create mode 100644 4week/bringjava/.gradle/6.5/executionHistory/executionHistory.bin create mode 100644 4week/bringjava/.gradle/6.5/executionHistory/executionHistory.lock create mode 100644 4week/bringjava/.gradle/6.5/fileChanges/last-build.bin create mode 100644 4week/bringjava/.gradle/6.5/fileHashes/fileHashes.bin create mode 100644 4week/bringjava/.gradle/6.5/fileHashes/fileHashes.lock create mode 100644 4week/bringjava/.gradle/6.5/gc.properties create mode 100644 4week/bringjava/.gradle/buildOutputCleanup/buildOutputCleanup.lock create mode 100644 4week/bringjava/.gradle/buildOutputCleanup/cache.properties create mode 100644 4week/bringjava/.gradle/buildOutputCleanup/outputFiles.bin create mode 100644 4week/bringjava/.gradle/checksums/checksums.lock create mode 100644 4week/bringjava/.gradle/vcs-1/gc.properties create mode 100644 4week/bringjava/.idea/.gitignore create mode 100644 4week/bringjava/.idea/compiler.xml create mode 100644 4week/bringjava/.idea/gradle.xml create mode 100644 4week/bringjava/.idea/jarRepositories.xml create mode 100644 4week/bringjava/.idea/misc.xml create mode 100644 4week/bringjava/build.gradle create mode 100644 4week/bringjava/build/classes/java/main/Hello.class create mode 100644 4week/bringjava/gradle/wrapper/gradle-wrapper.jar create mode 100644 4week/bringjava/gradle/wrapper/gradle-wrapper.properties create mode 100755 4week/bringjava/gradlew create mode 100644 4week/bringjava/gradlew.bat create mode 100644 4week/bringjava/out/production/classes/Calculator.class create mode 100644 4week/bringjava/out/production/classes/Hello.class create mode 100644 4week/bringjava/settings.gradle create mode 100644 4week/bringjava/src/main/java/Calculator.java create mode 100644 4week/bringjava/src/main/java/Hello.java diff --git a/4week/bringjava/.gradle/6.3/executionHistory/executionHistory.bin b/4week/bringjava/.gradle/6.3/executionHistory/executionHistory.bin new file mode 100644 index 0000000000000000000000000000000000000000..5622235ab3403408d32745993e116b98a8fc1142 GIT binary patch literal 20812 zcmeI(Pl!`T90%}uiPBYzO$v&L7okus@}9D$F5WazWRYfJU1)o;lb6ZMb6;lS%)FRA z3F7}{1L|5Rmg+$f?Wu~T&_kh~TF{g2sT84?7JBN@!nW^!RwD~)7DT>*B=hFaZ+`Qc zc_a{0A!I}0zvMysk9GYbN)Uhm1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009WRDFRc$ zLRQC%*|04a7T!5V$o98`f|2{|kAJ>6vtni3d|*%d`$761)NhU3@CpG4KmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z!0R9|O313+AFeQ4NUB-A(A#on#qaC?{+T@Z)cp7E>;q#cQQkc(+S(Od z70I_tCY2;qje9SV*X1N&x*WMjI%-WXt*x_~?-*I9=rRdfB)6ALp%M;F`VMehduoED zml=gW$U4j;7t#)l+oJArhkTyZbT#8DP^h?4k@>W`L0zxP_em+FF_%>eIi2fw39hOs z;H@RI-{0>#ko?uf(UW*4>oVKdwB|AL<@4H)bXpPZxwc1jL&#Q<+*_1E&}^nHrpq;x zoO))3HK_0D@Q6($!v?bHWy3gavHa;HLFch~C46bK@EB0-)?ClkGx?J{%&~b*rNi`K z!+9-)S8h_551y?opZMgLeJL5& zfO0N$kf`7jQrJu>At%BPS5nEE5L#(T+vRNVrL-+xY80@iq8*rw7O!&OSyL*Q*mCQF zJIxs;xK&|lT8p+dd1$KgiB*%q$qKn>yCRf;79w!U>_Vj(lbH_Ke7V?+tOlg-#e!)G#Y%SzW?#CBc zLd|!*x)p5S z`|I!rKYc{3ox3Mjt-ZPJW_ns3##!_c5g*d3uiL)PcFlPF!dh8CE4~qw^_;tD@t!XK z6w5wCq58`YzkWP=sd#E+^qbPY3v*wkyiG>yOg^jnXb7rt2*6 literal 0 HcmV?d00001 diff --git a/4week/bringjava/.gradle/6.3/executionHistory/executionHistory.lock b/4week/bringjava/.gradle/6.3/executionHistory/executionHistory.lock new file mode 100644 index 0000000000000000000000000000000000000000..c36c846c707c1cab11cca3f686a6a5be22461eb6 GIT binary patch literal 17 UcmZRs_4L1V`gwQ^0|W>F05y69U;qFB literal 0 HcmV?d00001 diff --git a/4week/bringjava/.gradle/6.3/fileChanges/last-build.bin b/4week/bringjava/.gradle/6.3/fileChanges/last-build.bin new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/4week/bringjava/.gradle/6.3/fileContent/fileContent.lock b/4week/bringjava/.gradle/6.3/fileContent/fileContent.lock new file mode 100644 index 0000000000000000000000000000000000000000..9eab005dd42dbc4497bf843597ce8b5201bf25ab GIT binary patch literal 17 ScmZSnR`e&gSKNh<0SW*#Vgt(n literal 0 HcmV?d00001 diff --git a/4week/bringjava/.gradle/6.3/fileHashes/fileHashes.bin b/4week/bringjava/.gradle/6.3/fileHashes/fileHashes.bin new file mode 100644 index 0000000000000000000000000000000000000000..60e42e061938a0cbf7918eb92ae9236cb7545546 GIT binary patch literal 18597 zcmeI%u}VWR6adis+C@b02?`xt3WXvREr^p-!J%|_a&rg+@ z<$5`$#m?`RjsO7y1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&U_)~$+blO^K^`hlV2ko1eIQ_bdZ2#hFcovb3o_qb<$(7PP)@Lgo2dlle UxzFp@^JaZxYuK2r$li;JA2}^Q{Qv*} literal 0 HcmV?d00001 diff --git a/4week/bringjava/.gradle/6.3/fileHashes/fileHashes.lock b/4week/bringjava/.gradle/6.3/fileHashes/fileHashes.lock new file mode 100644 index 0000000000000000000000000000000000000000..1992db398aec46b8c59e6b6fda36830923b5337d GIT binary patch literal 17 UcmZR+f9vwB30_A|FhGD907nW1rT_o{ literal 0 HcmV?d00001 diff --git a/4week/bringjava/.gradle/6.3/gc.properties b/4week/bringjava/.gradle/6.3/gc.properties new file mode 100644 index 00000000..e69de29b diff --git a/4week/bringjava/.gradle/6.3/javaCompile/classAnalysis.bin b/4week/bringjava/.gradle/6.3/javaCompile/classAnalysis.bin new file mode 100644 index 0000000000000000000000000000000000000000..532e9d5c21875add2226156e454087585bdcbe0c GIT binary patch literal 18569 zcmeI%F$%&k6adiBQ3M4Q1s7MrL2z^u9C`t7V8KCj6x>|Ahllb83ho|2Q`%B+a&nLt z_{rxd@cD1eGK4|A3Ss%M)J*(=~8S9JU&Q5>;0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72>eoD7Ml%Ybn-Z- N*>=1CY(M(u%^O-EF@OL7 literal 0 HcmV?d00001 diff --git a/4week/bringjava/.gradle/6.3/javaCompile/javaCompile.lock b/4week/bringjava/.gradle/6.3/javaCompile/javaCompile.lock new file mode 100644 index 0000000000000000000000000000000000000000..b86b0af720d0186e6fdf6336c87e50bf23c2e9dd GIT binary patch literal 17 UcmZP;R-boLPS1Eh0|W>G03yEv^#A|> literal 0 HcmV?d00001 diff --git a/4week/bringjava/.gradle/6.3/javaCompile/taskHistory.bin b/4week/bringjava/.gradle/6.3/javaCompile/taskHistory.bin new file mode 100644 index 0000000000000000000000000000000000000000..1e601956adf7afb5cec869ad97e814b42e76fa8f GIT binary patch literal 18614 zcmeI%O-jQ+6ae6~=thLP5qbqd7{L<=S-96M+?kqCqiLcYe{ko{Gk6`Z;tjljrp8h? z?u&d6-pu2@&Ae|rX_Ab0K7S%v#qO$95glWGSml^L57sco?Ne;HVVlX^^|9E}b*zCv0N6Y_%<=yr7`k9je0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oP8Yfy3?*b(h5=-v%Lz z GaQg)~;yG9V literal 0 HcmV?d00001 diff --git a/4week/bringjava/.gradle/6.5/executionHistory/executionHistory.bin b/4week/bringjava/.gradle/6.5/executionHistory/executionHistory.bin new file mode 100644 index 0000000000000000000000000000000000000000..c69bf3119dd9c52160f8416f9801656a37512e35 GIT binary patch literal 20179 zcmeI%PiWIn90%}p9dr1H#e*>P=x_>K)BoK>kd02K?2oRi(^Gg&-`Z?l6JFBRPIM?k zCf4at$3z%_FrjNb*SXzQ6ZAeN7Jy za$GI{tGIDX+m59sS`dH$1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009X6F9Km>BAd<0 z)HYP)8#Nh@b8a;nHm9`fWW~07)8_5=7VG~5>ug-#XWqjR0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOL}XLBPXt zRhNwYe15;J3=gH5ewvVen$-urzJ9Mh?AGIfK-L_qZ8!H=VKGOHk!XTCh$=gDq77<} z3?r&anWN7Jv^)^8L3)3}^Uc8_BRPomd+=5MPP05L9NMf?8i*+JP zB}FNrXemZrbymwQ`lw%WdYw*J)JZAzQ2W zO}@VWvN}hY6qnPqm1wkjW;HXdJ4W<){_%;!JuShGHZdG(>k-?#JKLy?ADJ9U>9Ue6N39ise<(P)ykIC!+&+IOHN>sx)|*vn_1voF99%a1e7DioBVE^) zmk6_j{aIYsRc*f@Xq2U8iE7rWF-jB|EC5X~ms6wP;c1M>Nyo6Pj+>WGP^K9~_EF;& zSDA|tU5cBZx@}Gf8^M|&N0nqOo~24s2vTiOS5zU?8xEclB1}%k21uF|<1-GUyPeRQhscJutRc!+Fse#Iw8SYQ$;@OJ7^@@dG|-Lvtguu z=1k?D`djA~ua`H!ylEway{a=6X0|YPw04RV1DgXcg literal 0 HcmV?d00001 diff --git a/4week/bringjava/.gradle/6.5/fileChanges/last-build.bin b/4week/bringjava/.gradle/6.5/fileChanges/last-build.bin new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/4week/bringjava/.gradle/6.5/fileHashes/fileHashes.bin b/4week/bringjava/.gradle/6.5/fileHashes/fileHashes.bin new file mode 100644 index 0000000000000000000000000000000000000000..9739afccfbb27655bf148f8037a2b5a2ccca3e65 GIT binary patch literal 18697 zcmeI(PbdUY0LSrXo7zGd2bz=C#ZuE+qtr?(nX>sCB}c7;D23E++E9+-MB(7zum>qc zIc@FP!9@-(j*@IH_OKE0#(UGIJ-X@p>dkxoUcaXIxlZE>VVPfgi1KJCZ`mP$00Iag zfB*srAbX2?q}U@D_zj}ou9YAm5TYi?dW{P&j*IGsld|bv(B@A?yoXmR%bjBKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0;4cE5 zvfL(Tvp3E9o8+)L+H>)K{19E+8H))~mAa0{Uep_EUgaA3-Ef|!N9>L8S;lAyAFkiZ ze+qsY5!HBXs%$LI&2%KDx(-e+3#})cc1|~J)eu*ejfvdg$9B;O_U?_l=L^ofZmg23S0BxBvhE literal 0 HcmV?d00001 diff --git a/4week/bringjava/.gradle/6.5/fileHashes/fileHashes.lock b/4week/bringjava/.gradle/6.5/fileHashes/fileHashes.lock new file mode 100644 index 0000000000000000000000000000000000000000..bfee958b974a7441d37e1a388898ea7aa02aa1dc GIT binary patch literal 17 UcmZR+`Sj*2uQz?c3=qHu07VD|QUCw| literal 0 HcmV?d00001 diff --git a/4week/bringjava/.gradle/6.5/gc.properties b/4week/bringjava/.gradle/6.5/gc.properties new file mode 100644 index 00000000..e69de29b diff --git a/4week/bringjava/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/4week/bringjava/.gradle/buildOutputCleanup/buildOutputCleanup.lock new file mode 100644 index 0000000000000000000000000000000000000000..bda39bd15c800159128d468c327675bd4ddcd9d4 GIT binary patch literal 17 UcmZRceL?JV%fwUb7$CqH06tFzH~;_u literal 0 HcmV?d00001 diff --git a/4week/bringjava/.gradle/buildOutputCleanup/cache.properties b/4week/bringjava/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 00000000..a3d5e78d --- /dev/null +++ b/4week/bringjava/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Mon Jan 04 16:18:13 KST 2021 +gradle.version=6.3 diff --git a/4week/bringjava/.gradle/buildOutputCleanup/outputFiles.bin b/4week/bringjava/.gradle/buildOutputCleanup/outputFiles.bin new file mode 100644 index 0000000000000000000000000000000000000000..86033aa0ad389f758d8278e81339ad2a0304f46f GIT binary patch literal 18821 zcmeI%ODIH99DwmV5{>7i6j^x-3!0VJ!eh!v6p^ANq`W1uAen_Ikp&wiQP_-{vhb+! zh$Jhdklolwb|^~YPWSwq>}-_yZk>Bi-#wk~`E75Bro~vi>eBpIw13JB0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009L4ia?EikPzcAF_{6rN#vlWWrgXJD92KFa*KH_-*|2B zm;VRjUFFj^XX`sgFCCP=RQR59Qncz(>kFi>A2nG`Tfx1mXGlMGP`OMnDf}2>Q(#fNiS>33k`HXSX8f;UhA6bsAxOAQvFK^Gs4qMtt;z+pah0=#@bNlrJ^Ovf(N*}$hI$M6f3NpGqR=PYj&2(VA7V)L%;g^@6`{r-&{0Y2y{(S%d literal 0 HcmV?d00001 diff --git a/4week/bringjava/.gradle/checksums/checksums.lock b/4week/bringjava/.gradle/checksums/checksums.lock new file mode 100644 index 0000000000000000000000000000000000000000..d47ea76db05397dd50ec3c36dffa476088c21b10 GIT binary patch literal 17 TcmZR6ec_Dt|2r~s7@z + + + + + \ No newline at end of file diff --git a/4week/bringjava/.idea/gradle.xml b/4week/bringjava/.idea/gradle.xml new file mode 100644 index 00000000..02b3e5bf --- /dev/null +++ b/4week/bringjava/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/4week/bringjava/.idea/jarRepositories.xml b/4week/bringjava/.idea/jarRepositories.xml new file mode 100644 index 00000000..fdc392fe --- /dev/null +++ b/4week/bringjava/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/4week/bringjava/.idea/misc.xml b/4week/bringjava/.idea/misc.xml new file mode 100644 index 00000000..2266f6bc --- /dev/null +++ b/4week/bringjava/.idea/misc.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/4week/bringjava/build.gradle b/4week/bringjava/build.gradle new file mode 100644 index 00000000..7bcbbfe3 --- /dev/null +++ b/4week/bringjava/build.gradle @@ -0,0 +1,14 @@ +plugins { + id 'java' +} + +group 'org.study' +version '1.0-SNAPSHOT' + +repositories { + mavenCentral() +} + +dependencies { + testCompile group: 'junit', name: 'junit', version: '4.12' +} diff --git a/4week/bringjava/build/classes/java/main/Hello.class b/4week/bringjava/build/classes/java/main/Hello.class new file mode 100644 index 0000000000000000000000000000000000000000..dfc38036bafbe5e20376af8cb2701bb222ceb123 GIT binary patch literal 502 zcmZuuO;5r=5Pb`U(pm*Uz;EP+9_+=$1ICMq@zAIVhKr{KH@Ku9rW6x@mL4?m;1BRe z8DEPDlCX!Fo%d$m%dg*B9kq{XM17_m3xs`+;qa{-$akY^v` QpNNGD)`|0rXmhCj0*`cK3jhEB literal 0 HcmV?d00001 diff --git a/4week/bringjava/gradle/wrapper/gradle-wrapper.jar b/4week/bringjava/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..62d4c053550b91381bbd28b1afc82d634bf73a8a GIT binary patch literal 58910 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 literal 0 HcmV?d00001 diff --git a/4week/bringjava/gradle/wrapper/gradle-wrapper.properties b/4week/bringjava/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..a4b44297 --- /dev/null +++ b/4week/bringjava/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/4week/bringjava/gradlew b/4week/bringjava/gradlew new file mode 100755 index 00000000..fbd7c515 --- /dev/null +++ b/4week/bringjava/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/4week/bringjava/gradlew.bat b/4week/bringjava/gradlew.bat new file mode 100644 index 00000000..a9f778a7 --- /dev/null +++ b/4week/bringjava/gradlew.bat @@ -0,0 +1,104 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/4week/bringjava/out/production/classes/Calculator.class b/4week/bringjava/out/production/classes/Calculator.class new file mode 100644 index 0000000000000000000000000000000000000000..add341940934ee9d4721ca656fe7248a39205f35 GIT binary patch literal 2882 zcmbVO+jA3T6#som+D*guLVDxY8wj*bFHjJXQtSoLN>Y$OwW77#WZN!mE^ammD&hqc z#S8l6I1a-&GS2u^c}QpM48Hqc=xg~497gImdlKNOSF|Au?v}u!^U^o@i%yG>!grlKn;&*W-M!J zcFO9fB`qEo7;F!p*Dh+k3C*7C9X4i<>MH7qqb!vXZt%!Ulb^tF|3R& z(6HWx@{Ar!CFv~qxK+kMsifIy(nQuIjT;wf)<~waG+W=^ajuk}XL?3pQ(j`EdWW+! zGrFb6PwQG-ck;{F7Hw%3X>Cahf(5HDGJWh)Oi$ZJD#_|pMr|#2A)=+78nU?pffad1 z!F$Y?m3GRhN7JTZ>+yV{1VZg4+^t(aVF-v(w%F1$S<@y82?PZLjGYbyhW>YlM%MM= zPo;HB_MNUq2%m&zB$+_TI3>I^YnFfsL{nKSrXM#XvZ@Q<>5+(0u?xEe>Pn$U%HCJe zjVmfXkmRZ)AL0sqI`<#zm%!#_!KiFIOQ~y#d@mJzq~c?IBCTGN zrJFzZsJMwQRfG{y@fE(N&%Fx1QE@AuUk@35DmRFH*r(!v^RQpVv+^NOD4B}qa8Sij z9Fw}=3e*%LJ2`z`j}hqk6j++klSR?hyX{{!itJI(ImvZ0v-txcR*xVg~o6|Ho5-S2;_FEEr{G{lw3bM8kY-;plNrbEKX{5 z2+q#o63EEW64+g;3MHnD3B~3#Ylteo_R$Vv-J5cj$jY8L#bxHgi&?DHyofEJq~#@3 zW?$?#->CkMakOze@8qWg{1yl~2&C*XnUmUS*b{Kf|lI!MbMrXQVrR`VASLKoiz zhopy8DxZTFKAzQ!@Jw_qz&jS|&cQcNR^E*K5&@O;S>>4O%wKm+QIY=lIOeOd7k#{4 zLD&1p^O8%DKG9LxT1T~1uX_qd#QqZr*)5?6R1$ zM|V-?6g{*E|HL9HChj4yfDH@$xQ245jC2L7a;P5bo)0f#<3upHfZ9J8BhW&}HSB|g z!xnZ0#7~gOX(V=nL!-J0IjqkfFpRpu^e*y zKS)giZA!rqhWYHHbc8?d98wwl1Ii`9A`)OBZyzBR3EeMC|A5LuwB934OLw)3$*YnGxzq;mWVpV$5<#Kwv7_c0L4Fq10K-@+M?qX7hcn)$! z4s#cdu%gSUHe)-E<3*;mfs&V~<)J*Epagtm1>g}DVt~mElG_5`Lu^wp`Vd0=gSJQH zdlbB^-~@!Mfsk9<&HQf~mzhsC)r9UKcn=N1#vC?vhPratJl|B)?J~D4Gq;l2>oT`3 zGn>flbeYY|%$E70Qo!x-0Zu8{pK^v;#aQZ@&{lS02Yb=URQE8=gBazF6XeJ^BRGST zPD%1pJ-L$fLdg*B9kq{XM17_m3xs`+;qa{-$akY^v` QpNNGD)`|0rXmhCj0*`cK3jhEB literal 0 HcmV?d00001 diff --git a/4week/bringjava/settings.gradle b/4week/bringjava/settings.gradle new file mode 100644 index 00000000..9c1e8271 --- /dev/null +++ b/4week/bringjava/settings.gradle @@ -0,0 +1,2 @@ +rootProject.name = 'bringjava' + diff --git a/4week/bringjava/src/main/java/Calculator.java b/4week/bringjava/src/main/java/Calculator.java new file mode 100644 index 00000000..5e1e28c5 --- /dev/null +++ b/4week/bringjava/src/main/java/Calculator.java @@ -0,0 +1,81 @@ +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +import java.math.BigDecimal; +import java.util.ArrayList; + +public class Calculator { + + + public BigDecimal add(BigDecimal first, String second) { + + BigDecimal sec = new BigDecimal(second); + return first.add(sec); + } + + public BigDecimal sub(BigDecimal first, String second) { + + BigDecimal sec = new BigDecimal(second); + return first.subtract(sec); + } + + public BigDecimal mul(BigDecimal first, String second) { + + BigDecimal sec = new BigDecimal(second); + return first.multiply(sec); + } + + public BigDecimal div(BigDecimal first, String second) { + + BigDecimal sec = new BigDecimal(second); + return first.divide(sec); + } + + public String[] input() throws IOException { + try { + BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); + String str = bf.readLine(); + String arr[] = str.split(" "); + return arr; + } catch (Exception e) { + throw new IllegalArgumentException("잘못된 입력 입니다."); + } + } + public BigDecimal calculateSplitedString(String[] str) { + try { + BigDecimal result = new BigDecimal(str[0]); + if (str.length % 2 == 0) { + throw new IllegalArgumentException("잘못된 입력 입니다."); + } + for (int i = 0; i < str.length - 2; i += 2) { + result = cal(result, str[i + 2], str[i + 1].charAt(0)); + } + return result; + } catch (Exception e) { + throw new IllegalArgumentException("잘못된 입력 입니다."); + } + + + } + + public BigDecimal cal(BigDecimal first, String second, char operator) { + if (operator == '+') { + return add(first, second); + } + if (operator == '-') { + return sub(first, second); + } + if (operator == '/') { + return div(first, second); + } + if (operator == '*') { + return mul(first, second); + } + throw new IllegalArgumentException("잘못된 입력 입니다."); + } + public static void main(String[] args) throws IOException { + Calculator cal = new Calculator(); + System.out.println(cal.calculateSplitedString(cal.input())); + } +} diff --git a/4week/bringjava/src/main/java/Hello.java b/4week/bringjava/src/main/java/Hello.java new file mode 100644 index 00000000..3a3f84b3 --- /dev/null +++ b/4week/bringjava/src/main/java/Hello.java @@ -0,0 +1,10 @@ +public class Hello { + public static void main(String [] args){ + System.out.print("Hello"); + } +} +//psvm +//sout +//soutv +//soutm +// javac = 자바 컴파일러 From 61af49ff9e234a91478958e7785671647f3b9ce2 Mon Sep 17 00:00:00 2001 From: DongLee99 Date: Mon, 25 Jan 2021 12:24:04 +0900 Subject: [PATCH 06/10] =?UTF-8?q?fix:=ED=81=B4=EB=9E=98=EC=8A=A4=20?= =?UTF-8?q?=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../out/production/classes/Cal.class | Bin 0 -> 2600 bytes .../out/production/classes/Calculator.class | Bin 2882 -> 2805 bytes 4week/bringjava/src/main/java/Calculator.java | 12 +++++++----- 3 files changed, 7 insertions(+), 5 deletions(-) create mode 100644 4week/bringjava/out/production/classes/Cal.class diff --git a/4week/bringjava/out/production/classes/Cal.class b/4week/bringjava/out/production/classes/Cal.class new file mode 100644 index 0000000000000000000000000000000000000000..2b8780b78898de8a74c5e393c930a505312f0fc7 GIT binary patch literal 2600 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 Date: Tue, 26 Jan 2021 13:38:36 +0900 Subject: [PATCH 07/10] =?UTF-8?q?docs:=EB=A6=AC=EB=B7=B0=20=EB=B0=98?= =?UTF-8?q?=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 4week/4week.md | 51 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/4week/4week.md b/4week/4week.md index e2487d0c..1cb0d57f 100644 --- a/4week/4week.md +++ b/4week/4week.md @@ -91,6 +91,7 @@ _ 그래서 객체 지향은?_ #### 책임 * 애플리케이션의 기능은 좀 더 작은 책임으로 분할되며 책임은 적절한 역할을 수행할수 있는 객체에 의해 수행된다. ( 객체 지향 설계 = > 적절한 객체에 적절한 책임을 할당함으로 부터 시작) +**?**(그렇다면) ![](https://images.velog.io/images/donglee99/post/6034c6cf-ed9d-41a4-b817-50262ed6da49/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7%202021-01-26%20%EC%98%A4%ED%9B%84%2012.33.50.png) 이 질문에 나는 이렇게 생각한다 _책임이 아래 처럼 하는것을 본다면 다른 객체의 행동 시작 시키거나, 객체의 활동을 제어하고 조절 하는 것이라고 명시해 두었는데 생각해보면 이 책임을 행하는 것은 결국은 객체이다 객체가 책임을 다해 다른 객체에 메세지를 통해 요청을 하는 것이고 결국 관점에 따라 객체가 먼저 일수도있고 책임이 먼저일수도 있다 생각한다._ * 책임의 분류 * 하는 것 (doing) @@ -109,6 +110,7 @@ _ 그래서 객체 지향은?_ * 위의 doing, knowing을 보면 자신의 상태를 변환 시키는것들도 있지만 다른 객체에 관여 하는것도 많다 이때 객체의 유일한 의사소통 수단인 메시지가 사용된다는 사실을 유추해 낼수 있다. * 너무 추상적인 메시지는 의도가 변형될수있으므로 구체적이여한다. + * 추상적인 메시지에 예를 들면 "만약에 디저트를 만들어라" 라는 메세지가 있다고 하면 이에 대한 책임을 가지는 객체는 무슨 디저트를 만들어야 할지 모르게 되므로 메세지를 보낸 의도와 다른 결과가 도출될수 있다. --- @@ -117,6 +119,8 @@ _ 그래서 객체 지향은?_ * 동시에 여려객체가 동일 역할을 수행 할수있다. * 역할은 대체 가능성을 의미한다. + (객체의 자율성 보장이라는 성질때문이다. + 또 객체는 서로 협력을 하고 각자의 역할에 책임을 가지기 때문이다.) * 각 객체는 책임 수행 방법을 자율적으로 선택 가능하다. --- @@ -139,7 +143,7 @@ _ 그래서 객체 지향은?_ --- #### 캡슐화 * 객체의 자율성을 보전하기 위해 구현을 외부로 부터 감추는 것 -* 객체는 상태와 행위가 함께 캡슐화 되어 충분히 협력적이고 자율적인 존재가 된다. +* 객체는 상태와 행위가 함께 캡슐화 되어 충분히 협력적이고 자율적인 존재가 된다.( _간단하게 어렸을때 문방구에서 뽑기를 하면 캡슐안에 장난감이 들어있다. 이 캡슐은 안에 장난감을 보호하기위한 케이스 같은 역할이였다. 이처럼 객체 지향 언어에서도 객체를 보호, 보전을 위해 캡슐과 같은 케이스로 객체를 감쌌다고 생각하면 쉽다_ ) * 상태와 행위의 캡슐화 @@ -292,6 +296,26 @@ public class ArrayObject { } ``` * 배열의 경우 생성자에서 배열을 받아 copy해서 저장 했고 getter를 clone 으로 반환하게 하면 불변객체로 만들수있다. (배열을 그대로 참조 or 그대로 반환시 내부 값이 변경될수도있다.) +* **List 경우** +List의 경우에도 Array와 동일하게 생성시에 생성자 인자를 그대로 참조 하지않고 새로운 List를 만들어 값을 복사해야한다. (Getter를 이용한 수정을 막기 위해 ```collection.unmodifiableList```를 사용 +```java + import java.util.Collections; + import java.util.List; + + public class ListObject { + + private final List animals; + + public ListObject(final List animals) { + this.animals = new ArrayList<>(animals); + } // this.animals에 새롭게 리스트를 만들어 대입 + + public List getAnimals() { + return Collections.unmodifiableList(animals); //getter방지 + } + } + +``` --- #### Reference * [java Immutable Object(불변객체)](https://velog.io/@conatuseus/Java-Immutable-Object불변객체) @@ -886,7 +910,8 @@ if () { case Sunday: } ``` - 이를 막기위해서 java13 에서 부터는 화살표 연산자가 추가 되면서 + 위 코드의 문제점은 break 문으로 인해 오류가 나는 경우가 많다는 점이다. 실제 학교 과제를 할때에 break 문을 잘못 걸어두어 오류가 발생하는 경우도 많았고 디버깅을 하는 과정에 코드 가독성이 떨어서 쉽게 찾지 못해 수정하는데 시간이 많이 소요되는 경우가 많았다. + * 이를 해결하기 위해 자바 12에서는 switch문에 ->연산자를 사용할수 있게 되었다. ```java switch (day) { case Monday -> numDay = 1: @@ -895,6 +920,28 @@ if () { } ``` case 의 label 이 매칭이 되면 -> 이후 코드를 실행하고 switch문을 탈출하게 된다. + * 그렇다면 자바 13에서는 무엇이 추가가 된것인가? + 자바 13에서는 12에서 break를 사용해 반환을 하던 방식에서 + yield 를 사용해 반환 하는 방식으로 바꼈다. + **자바 12** + ```java + switch (day) { + case Monday: + break 1; + case Friday -> numDay =2: + case Sunday -> numDay =3: + } + ``` + **자바 13** + ```java + switch (day) { + case Monday: + yield 1; + case Friday -> numDay =2: + case Sunday -> numDay =3: + } + ``` + --- From e06b512747595e532b5648f023c7a00ebd9fb1fb Mon Sep 17 00:00:00 2001 From: DongLee99 Date: Thu, 28 Jan 2021 20:53:22 +0900 Subject: [PATCH 08/10] =?UTF-8?q?fix:=EB=A9=94=EC=84=9C=EB=93=9C=20?= =?UTF-8?q?=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 4week/bringjava/.idea/dbnavigator.xml | 468 ++++++++++++++++++ .../out/production/classes/Cal.class | Bin 2600 -> 2858 bytes .../out/production/classes/Calculator.class | Bin 2805 -> 553 bytes 4week/bringjava/src/main/java/Calculator.java | 12 +- 4 files changed, 479 insertions(+), 1 deletion(-) create mode 100644 4week/bringjava/.idea/dbnavigator.xml diff --git a/4week/bringjava/.idea/dbnavigator.xml b/4week/bringjava/.idea/dbnavigator.xml new file mode 100644 index 00000000..c2280278 --- /dev/null +++ b/4week/bringjava/.idea/dbnavigator.xml @@ -0,0 +1,468 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/4week/bringjava/out/production/classes/Cal.class b/4week/bringjava/out/production/classes/Cal.class index 2b8780b78898de8a74c5e393c930a505312f0fc7..0f25065c1a8c9d2248d50408c7ecf3e2efc1a387 100644 GIT binary patch literal 2858 zcmbVOS#J|(6g^`*8E2R*br!Zbgf8INAucK12n`7#6t^~^aY&m|C=+{<40!8!OrfPa zNR@c$Lm#TDLa1tm)Th8hA~h0y@4x7C_yrXzJ$LNbCOABh$am)3?mhS1^IiMz|NguW z;1F(T*n`t5-qYa0w3wur88K(X%&K@_#Rn~z!-pDLa8`pKABj1qp%3R(e5~SvABKhw zO#3mfA%*i|(z0%fS&-9<8kS(m@S>PYVlrZ~Dsn3F3Yw2tIm;PU;0+DTD)3F@)24#< zxRoYxS6uDTrbaNjND>0>DX3oab%$JMmk)u?4qNfXR8g(MKhJpF<9V9uf)Msv88$1 zY$-#Vwl34Hl`E9!wmUR%w$VAy{DOiVidW?{Uu)K!Nu$>Lp+E|oS zDPuS$Bilk*sKGv|tYYyKW5I2+Sjsq5pDTf*L{wlkcy#9$g_F}>#!)c7#f~~QDy5y+ zvbO$w!L$u0FHBC5o@Bmcr_2+Uh^(DDalArg=u?m^1R1`0lC0(NqQ1WWgF|!IhR<3$m1XhiA-j*Ge_?s3) zZ=JQJ%Jq|3KMR(Y)CPR3sCBq&kWM3#YK*f3UZV#wl^V6dKvKEM` z%3$5J0@b}D8Of!d%QEdF1G5xNAA7p|Y5Y*Npg#B(*Wo23Hvx=V?c;j4xfb=K0e#m;F%j-h4)nCzzTfJoGQDK?+T!m-wUC$7RH{_{-)XjnR zFi`(91UiUek|{O%5lti$2(7_Cw}zIvd(c*~Z54VvvVzt`cyI-6%kedI%mtoXMc^+2 z1bPu~($+K_?FyDP#9pQ%^tb+9#BMR28NT72CU5UZv#3o#R^09#{;EHJoDn;DF=A+?Y z6_ZMjqc}>dRgj1fyQ;$La&aoCV2W+VG=^~^6aF3&vuJ!qG#>E|Q{{=s{iedtXsu!M zjs`iG{uROSU?kXdVK@@>T^RPRpnC;9iR)g^ok#x&(cAB!tuCdzE*C>_at$Q&nQG=U z%={?hO6L7&dWc>XlMkUN|6=bWa_LcVLdDxqNQuUMZ1}Xo#29^wFaJI4pmcWDx<&b# zPxAB$7g0}nUp1!RMI?=e-ys!m_lQ+^9SwFwZbJ)4NYAe2V8?-t!EO$s8-rdB!W)C& za*cUA_o3 Qh_6-Gr4OEB3=gLM2VYt$g8%>k literal 2600 zcmbVMTT@e46#jNDoNzo`45EStgKaesAPU&pVp9Qc(STNzmf8!4>1s7C!kd$UZnn`IcN^?oU`wA{MVhUGOG~%j?0H&q+Ab<~5%-|yh*A#pl zz$Yqp${aKJRKx$%$#9g(dR6Bg2`M;x2AR5l#kPp1V=Mv_bVbv>5RoyFLg zxp2xznHlbvyq2C_h)p@RnOzv^sUOIM^QK*J1a@y1&`>Z^xh%ngFJ>hV?n+ynqs7HY0A-4%M*IuZ5~w{PC3r;IbE9ETPv?lR5U15#}b zT{s}HtDf?5Z%M-&Sk_=klaVHiW!C4$ztC%ej?ImPl#KIY=$VoZ3UV6q_*`bSr737| zP$b8&g6kT-zzwS79(QN0(qe&wRd2$wj0N2qwHJyRBkR-z?R$LZ=Z!zsH-7px{P@lf z8+Y%yf46_!xc&QphMV|O!zrBB@D;vR@QsFVaZA>ANJF1A1Jd;45QSii1X`<@7w49Y z6h$qOW6_C=HMs3%#h$w$RC-_=CAXK2bMM%?L<(^D9W!s;5 zq0Sv(L8(RE9_0~VB+N7b-f}ZX%laSZ$p(m71#jaWe*3sP z!ruwJOB<%=Dfi`oP0Im`dIvdT6VXTh{4Z##vh~J8^re48sJAZ~^3M)NL%!KT?<#h! zqJ83fujl@=e;#6Y-zxUpNApDW-~*Sxe_`Bx@>nwgFfSJobe{|WXh7<~dE{zdmQ z_RXVUOu;w=o1!v~FEnkK(GQtj_97l?joyXY8)ZRzS3<4*n~M%EVw;OjE_yc?`&Oz& zGeb$!Lqr2PH;``=#?VI8PNIczh6S7@XbgHfBw0YfWs`YNLpioCI$@inn?a#lK4^MGCPkZ3^DhN07XLSC3vQ zDEI)rgm2)@t2l{!nD3kK+nHJR$9q;gpTBP(0QRwEV54qh#XzE-!DPf zbrbam0)8uf&{b#mR6s@J>q+`0Y7Nzm;ynS~If&x6fH}PF_C`s6IGEVjNWW#!oP#4^ zaqXgsz{MuYyhq-h#!)gHr)?D)-5-pmiGbHi@3p^OqHDhH9VgK^L4X1unH>oMIucD< zF8FuzoE6A`Gq^-I?=^}jkvUjEnHt0Xh*h#y-XYIlVRgcA1~r3z;ZPzoD#0RNFyNB1 dtK8847ombh?y~4AmKfrZDHQoFB+DccwLhtZG8+H@ literal 2805 zcmbVOS#J|(6g}f5V}{9sLm(^;32niNvy_x>gt~;VG&BwrLs~;yGPWnqz8hEh8gFVt=Bb4Pjv{VX`uE66$suDI*t@;PiKn zNpKCN}&QDC}mL5N> zYjNGqFPpRIOS5R3YkH7au$C&pka`zkwy~r_0ZdK_r}I`!-)9KPG;*z^ie4cF6))gL39D<#LhMbc=)!3gXM~v+ z<}6M#dHeiRL`Yb-xG^mFq?mLqStLourz+0jyzqKKn2Rbt!{s6n zti|xbs&HCLEI-jyR7dYJ>@QC>dnIRS0?EUM$r%}Qn&M*D7~)l^3Mf3C&FM)A4xxpT z)J0eoCa8wi68@46A>8K5R;jPVs)rQD#nVHT_)Ae%C-r0q_Ul3IWizJ1h_}|NLXEy* zLa|BB8srt1f4Gy9cBbv;pxp6?_$-z5#4O4+uUeKMXT%{>WM7S2Bx;~@3>|!QH}mZW zA9G14pY|or`Z!7)-Cc8#?(&BNTWIU-#ZheKZ?$*;espps3FXj=%g5n_i(}(F9Fguh zI7b6L1-NFpRCFUgB|w;%M{HMJ#p5Mcyohe}*zOzA%UB#dS%;Uo=Hx2X`Ai`9QlJR0 zAA1fUivO8FbxVOx5NP~4fY@r!1d^8m=>(d14j{HIizzs|4YytNz&t#Wd8~-sgEEJe zbNoyO3aAftdm9R99PODMna8S#*E@&izZfI13GHYi4?+&>$qH}^UYJ;mBtO?F?xv}# zj2+x|f_Tw@*YG;;u4T|~*le~jh&Qo=UOJ#)06T5ZffE03(I(X{VUaY4*%C^FPZBrWx5e?8il(K96^C z0Y`DEoO>I4YY2Oo=St?dm-=<^Ofh580b^ywkFhd4h%0h$hx;Km%Gmc1lJqY+9 Date: Mon, 1 Feb 2021 15:37:24 +0900 Subject: [PATCH 09/10] =?UTF-8?q?fix:=EA=B3=84=EC=82=B0=EA=B8=B0=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../6.3/executionHistory/executionHistory.bin | Bin 20812 -> 0 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 0 bytes .../.gradle/6.3/fileChanges/last-build.bin | Bin 1 -> 0 bytes .../.gradle/6.3/fileContent/fileContent.lock | Bin 17 -> 0 bytes .../.gradle/6.3/fileHashes/fileHashes.bin | Bin 18597 -> 0 bytes .../.gradle/6.3/fileHashes/fileHashes.lock | Bin 17 -> 0 bytes 4week/bringjava/.gradle/6.3/gc.properties | 0 .../.gradle/6.3/javaCompile/classAnalysis.bin | Bin 18569 -> 0 bytes .../.gradle/6.3/javaCompile/javaCompile.lock | Bin 17 -> 0 bytes .../.gradle/6.3/javaCompile/taskHistory.bin | Bin 18614 -> 0 bytes .../6.5/executionHistory/executionHistory.bin | Bin 20179 -> 0 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 0 bytes .../.gradle/6.5/fileChanges/last-build.bin | Bin 1 -> 0 bytes .../.gradle/6.5/fileHashes/fileHashes.bin | Bin 18697 -> 0 bytes .../.gradle/6.5/fileHashes/fileHashes.lock | Bin 17 -> 0 bytes 4week/bringjava/.gradle/6.5/gc.properties | 0 .../buildOutputCleanup.lock | Bin 17 -> 0 bytes .../buildOutputCleanup/cache.properties | 2 - .../buildOutputCleanup/outputFiles.bin | Bin 18821 -> 0 bytes .../.gradle/checksums/checksums.lock | Bin 17 -> 0 bytes 4week/bringjava/.gradle/vcs-1/gc.properties | 0 4week/bringjava/.idea/.gitignore | 8 - 4week/bringjava/.idea/compiler.xml | 6 - 4week/bringjava/.idea/dbnavigator.xml | 468 ------------------ 4week/bringjava/.idea/gradle.xml | 19 - 4week/bringjava/.idea/jarRepositories.xml | 20 - 4week/bringjava/.idea/misc.xml | 10 - 4week/bringjava/build.gradle | 14 - .../build/classes/java/main/Hello.class | Bin 502 -> 0 bytes .../gradle/wrapper/gradle-wrapper.jar | Bin 58910 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 - 4week/bringjava/gradlew | 185 ------- 4week/bringjava/gradlew.bat | 104 ---- .../out/production/classes/Cal.class | Bin 2858 -> 0 bytes .../out/production/classes/Calculator.class | Bin 553 -> 0 bytes .../out/production/classes/Hello.class | Bin 502 -> 0 bytes 4week/bringjava/settings.gradle | 2 - 4week/bringjava/src/main/java/Cal.java | 61 +++ 4week/bringjava/src/main/java/Calculator.java | 93 ---- 4week/bringjava/src/main/java/Hello.java | 10 - 4week/bringjava/src/main/java/IntInput.java | 23 + 4week/bringjava/src/main/java/Main.java | 11 + 4week/bringjava/src/main/java/View.java | 7 + 43 files changed, 102 insertions(+), 946 deletions(-) delete mode 100644 4week/bringjava/.gradle/6.3/executionHistory/executionHistory.bin delete mode 100644 4week/bringjava/.gradle/6.3/executionHistory/executionHistory.lock delete mode 100644 4week/bringjava/.gradle/6.3/fileChanges/last-build.bin delete mode 100644 4week/bringjava/.gradle/6.3/fileContent/fileContent.lock delete mode 100644 4week/bringjava/.gradle/6.3/fileHashes/fileHashes.bin delete mode 100644 4week/bringjava/.gradle/6.3/fileHashes/fileHashes.lock delete mode 100644 4week/bringjava/.gradle/6.3/gc.properties delete mode 100644 4week/bringjava/.gradle/6.3/javaCompile/classAnalysis.bin delete mode 100644 4week/bringjava/.gradle/6.3/javaCompile/javaCompile.lock delete mode 100644 4week/bringjava/.gradle/6.3/javaCompile/taskHistory.bin delete mode 100644 4week/bringjava/.gradle/6.5/executionHistory/executionHistory.bin delete mode 100644 4week/bringjava/.gradle/6.5/executionHistory/executionHistory.lock delete mode 100644 4week/bringjava/.gradle/6.5/fileChanges/last-build.bin delete mode 100644 4week/bringjava/.gradle/6.5/fileHashes/fileHashes.bin delete mode 100644 4week/bringjava/.gradle/6.5/fileHashes/fileHashes.lock delete mode 100644 4week/bringjava/.gradle/6.5/gc.properties delete mode 100644 4week/bringjava/.gradle/buildOutputCleanup/buildOutputCleanup.lock delete mode 100644 4week/bringjava/.gradle/buildOutputCleanup/cache.properties delete mode 100644 4week/bringjava/.gradle/buildOutputCleanup/outputFiles.bin delete mode 100644 4week/bringjava/.gradle/checksums/checksums.lock delete mode 100644 4week/bringjava/.gradle/vcs-1/gc.properties delete mode 100644 4week/bringjava/.idea/.gitignore delete mode 100644 4week/bringjava/.idea/compiler.xml delete mode 100644 4week/bringjava/.idea/dbnavigator.xml delete mode 100644 4week/bringjava/.idea/gradle.xml delete mode 100644 4week/bringjava/.idea/jarRepositories.xml delete mode 100644 4week/bringjava/.idea/misc.xml delete mode 100644 4week/bringjava/build.gradle delete mode 100644 4week/bringjava/build/classes/java/main/Hello.class delete mode 100644 4week/bringjava/gradle/wrapper/gradle-wrapper.jar delete mode 100644 4week/bringjava/gradle/wrapper/gradle-wrapper.properties delete mode 100755 4week/bringjava/gradlew delete mode 100644 4week/bringjava/gradlew.bat delete mode 100644 4week/bringjava/out/production/classes/Cal.class delete mode 100644 4week/bringjava/out/production/classes/Calculator.class delete mode 100644 4week/bringjava/out/production/classes/Hello.class delete mode 100644 4week/bringjava/settings.gradle create mode 100644 4week/bringjava/src/main/java/Cal.java delete mode 100644 4week/bringjava/src/main/java/Calculator.java delete mode 100644 4week/bringjava/src/main/java/Hello.java create mode 100644 4week/bringjava/src/main/java/IntInput.java create mode 100644 4week/bringjava/src/main/java/Main.java create mode 100644 4week/bringjava/src/main/java/View.java diff --git a/4week/bringjava/.gradle/6.3/executionHistory/executionHistory.bin b/4week/bringjava/.gradle/6.3/executionHistory/executionHistory.bin deleted file mode 100644 index 5622235ab3403408d32745993e116b98a8fc1142..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20812 zcmeI(Pl!`T90%}uiPBYzO$v&L7okus@}9D$F5WazWRYfJU1)o;lb6ZMb6;lS%)FRA z3F7}{1L|5Rmg+$f?Wu~T&_kh~TF{g2sT84?7JBN@!nW^!RwD~)7DT>*B=hFaZ+`Qc zc_a{0A!I}0zvMysk9GYbN)Uhm1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009WRDFRc$ zLRQC%*|04a7T!5V$o98`f|2{|kAJ>6vtni3d|*%d`$761)NhU3@CpG4KmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z!0R9|O313+AFeQ4NUB-A(A#on#qaC?{+T@Z)cp7E>;q#cQQkc(+S(Od z70I_tCY2;qje9SV*X1N&x*WMjI%-WXt*x_~?-*I9=rRdfB)6ALp%M;F`VMehduoED zml=gW$U4j;7t#)l+oJArhkTyZbT#8DP^h?4k@>W`L0zxP_em+FF_%>eIi2fw39hOs z;H@RI-{0>#ko?uf(UW*4>oVKdwB|AL<@4H)bXpPZxwc1jL&#Q<+*_1E&}^nHrpq;x zoO))3HK_0D@Q6($!v?bHWy3gavHa;HLFch~C46bK@EB0-)?ClkGx?J{%&~b*rNi`K z!+9-)S8h_551y?opZMgLeJL5& zfO0N$kf`7jQrJu>At%BPS5nEE5L#(T+vRNVrL-+xY80@iq8*rw7O!&OSyL*Q*mCQF zJIxs;xK&|lT8p+dd1$KgiB*%q$qKn>yCRf;79w!U>_Vj(lbH_Ke7V?+tOlg-#e!)G#Y%SzW?#CBc zLd|!*x)p5S z`|I!rKYc{3ox3Mjt-ZPJW_ns3##!_c5g*d3uiL)PcFlPF!dh8CE4~qw^_;tD@t!XK z6w5wCq58`YzkWP=sd#E+^qbPY3v*wkyiG>yOg^jnXb7rt2*6 diff --git a/4week/bringjava/.gradle/6.3/executionHistory/executionHistory.lock b/4week/bringjava/.gradle/6.3/executionHistory/executionHistory.lock deleted file mode 100644 index c36c846c707c1cab11cca3f686a6a5be22461eb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 UcmZRs_4L1V`gwQ^0|W>F05y69U;qFB diff --git a/4week/bringjava/.gradle/6.3/fileChanges/last-build.bin b/4week/bringjava/.gradle/6.3/fileChanges/last-build.bin deleted file mode 100644 index f76dd238ade08917e6712764a16a22005a50573d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1 IcmZPo000310RR91 diff --git a/4week/bringjava/.gradle/6.3/fileContent/fileContent.lock b/4week/bringjava/.gradle/6.3/fileContent/fileContent.lock deleted file mode 100644 index 9eab005dd42dbc4497bf843597ce8b5201bf25ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 ScmZSnR`e&gSKNh<0SW*#Vgt(n diff --git a/4week/bringjava/.gradle/6.3/fileHashes/fileHashes.bin b/4week/bringjava/.gradle/6.3/fileHashes/fileHashes.bin deleted file mode 100644 index 60e42e061938a0cbf7918eb92ae9236cb7545546..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18597 zcmeI%u}VWR6adis+C@b02?`xt3WXvREr^p-!J%|_a&rg+@ z<$5`$#m?`RjsO7y1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&U_)~$+blO^K^`hlV2ko1eIQ_bdZ2#hFcovb3o_qb<$(7PP)@Lgo2dlle UxzFp@^JaZxYuK2r$li;JA2}^Q{Qv*} diff --git a/4week/bringjava/.gradle/6.3/fileHashes/fileHashes.lock b/4week/bringjava/.gradle/6.3/fileHashes/fileHashes.lock deleted file mode 100644 index 1992db398aec46b8c59e6b6fda36830923b5337d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 UcmZR+f9vwB30_A|FhGD907nW1rT_o{ diff --git a/4week/bringjava/.gradle/6.3/gc.properties b/4week/bringjava/.gradle/6.3/gc.properties deleted file mode 100644 index e69de29b..00000000 diff --git a/4week/bringjava/.gradle/6.3/javaCompile/classAnalysis.bin b/4week/bringjava/.gradle/6.3/javaCompile/classAnalysis.bin deleted file mode 100644 index 532e9d5c21875add2226156e454087585bdcbe0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18569 zcmeI%F$%&k6adiBQ3M4Q1s7MrL2z^u9C`t7V8KCj6x>|Ahllb83ho|2Q`%B+a&nLt z_{rxd@cD1eGK4|A3Ss%M)J*(=~8S9JU&Q5>;0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72>eoD7Ml%Ybn-Z- N*>=1CY(M(u%^O-EF@OL7 diff --git a/4week/bringjava/.gradle/6.3/javaCompile/javaCompile.lock b/4week/bringjava/.gradle/6.3/javaCompile/javaCompile.lock deleted file mode 100644 index b86b0af720d0186e6fdf6336c87e50bf23c2e9dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 UcmZP;R-boLPS1Eh0|W>G03yEv^#A|> diff --git a/4week/bringjava/.gradle/6.3/javaCompile/taskHistory.bin b/4week/bringjava/.gradle/6.3/javaCompile/taskHistory.bin deleted file mode 100644 index 1e601956adf7afb5cec869ad97e814b42e76fa8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18614 zcmeI%O-jQ+6ae6~=thLP5qbqd7{L<=S-96M+?kqCqiLcYe{ko{Gk6`Z;tjljrp8h? z?u&d6-pu2@&Ae|rX_Ab0K7S%v#qO$95glWGSml^L57sco?Ne;HVVlX^^|9E}b*zCv0N6Y_%<=yr7`k9je0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oP8Yfy3?*b(h5=-v%Lz z GaQg)~;yG9V diff --git a/4week/bringjava/.gradle/6.5/executionHistory/executionHistory.bin b/4week/bringjava/.gradle/6.5/executionHistory/executionHistory.bin deleted file mode 100644 index c69bf3119dd9c52160f8416f9801656a37512e35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20179 zcmeI%PiWIn90%}p9dr1H#e*>P=x_>K)BoK>kd02K?2oRi(^Gg&-`Z?l6JFBRPIM?k zCf4at$3z%_FrjNb*SXzQ6ZAeN7Jy za$GI{tGIDX+m59sS`dH$1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009X6F9Km>BAd<0 z)HYP)8#Nh@b8a;nHm9`fWW~07)8_5=7VG~5>ug-#XWqjR0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOL}XLBPXt zRhNwYe15;J3=gH5ewvVen$-urzJ9Mh?AGIfK-L_qZ8!H=VKGOHk!XTCh$=gDq77<} z3?r&anWN7Jv^)^8L3)3}^Uc8_BRPomd+=5MPP05L9NMf?8i*+JP zB}FNrXemZrbymwQ`lw%WdYw*J)JZAzQ2W zO}@VWvN}hY6qnPqm1wkjW;HXdJ4W<){_%;!JuShGHZdG(>k-?#JKLy?ADJ9U>9Ue6N39ise<(P)ykIC!+&+IOHN>sx)|*vn_1voF99%a1e7DioBVE^) zmk6_j{aIYsRc*f@Xq2U8iE7rWF-jB|EC5X~ms6wP;c1M>Nyo6Pj+>WGP^K9~_EF;& zSDA|tU5cBZx@}Gf8^M|&N0nqOo~24s2vTiOS5zU?8xEclB1}%k21uF|<1-GUyPeRQhscJutRc!+Fse#Iw8SYQ$;@OJ7^@@dG|-Lvtguu z=1k?D`djA~ua`H!ylEway{a=6X0|YPw04RV1DgXcg diff --git a/4week/bringjava/.gradle/6.5/fileChanges/last-build.bin b/4week/bringjava/.gradle/6.5/fileChanges/last-build.bin deleted file mode 100644 index f76dd238ade08917e6712764a16a22005a50573d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1 IcmZPo000310RR91 diff --git a/4week/bringjava/.gradle/6.5/fileHashes/fileHashes.bin b/4week/bringjava/.gradle/6.5/fileHashes/fileHashes.bin deleted file mode 100644 index 9739afccfbb27655bf148f8037a2b5a2ccca3e65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18697 zcmeI(PbdUY0LSrXo7zGd2bz=C#ZuE+qtr?(nX>sCB}c7;D23E++E9+-MB(7zum>qc zIc@FP!9@-(j*@IH_OKE0#(UGIJ-X@p>dkxoUcaXIxlZE>VVPfgi1KJCZ`mP$00Iag zfB*srAbX2?q}U@D_zj}ou9YAm5TYi?dW{P&j*IGsld|bv(B@A?yoXmR%bjBKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0;4cE5 zvfL(Tvp3E9o8+)L+H>)K{19E+8H))~mAa0{Uep_EUgaA3-Ef|!N9>L8S;lAyAFkiZ ze+qsY5!HBXs%$LI&2%KDx(-e+3#})cc1|~J)eu*ejfvdg$9B;O_U?_l=L^ofZmg23S0BxBvhE diff --git a/4week/bringjava/.gradle/6.5/fileHashes/fileHashes.lock b/4week/bringjava/.gradle/6.5/fileHashes/fileHashes.lock deleted file mode 100644 index bfee958b974a7441d37e1a388898ea7aa02aa1dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 UcmZR+`Sj*2uQz?c3=qHu07VD|QUCw| diff --git a/4week/bringjava/.gradle/6.5/gc.properties b/4week/bringjava/.gradle/6.5/gc.properties deleted file mode 100644 index e69de29b..00000000 diff --git a/4week/bringjava/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/4week/bringjava/.gradle/buildOutputCleanup/buildOutputCleanup.lock deleted file mode 100644 index bda39bd15c800159128d468c327675bd4ddcd9d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 UcmZRceL?JV%fwUb7$CqH06tFzH~;_u diff --git a/4week/bringjava/.gradle/buildOutputCleanup/cache.properties b/4week/bringjava/.gradle/buildOutputCleanup/cache.properties deleted file mode 100644 index a3d5e78d..00000000 --- a/4week/bringjava/.gradle/buildOutputCleanup/cache.properties +++ /dev/null @@ -1,2 +0,0 @@ -#Mon Jan 04 16:18:13 KST 2021 -gradle.version=6.3 diff --git a/4week/bringjava/.gradle/buildOutputCleanup/outputFiles.bin b/4week/bringjava/.gradle/buildOutputCleanup/outputFiles.bin deleted file mode 100644 index 86033aa0ad389f758d8278e81339ad2a0304f46f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18821 zcmeI%ODIH99DwmV5{>7i6j^x-3!0VJ!eh!v6p^ANq`W1uAen_Ikp&wiQP_-{vhb+! zh$Jhdklolwb|^~YPWSwq>}-_yZk>Bi-#wk~`E75Bro~vi>eBpIw13JB0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009L4ia?EikPzcAF_{6rN#vlWWrgXJD92KFa*KH_-*|2B zm;VRjUFFj^XX`sgFCCP=RQR59Qncz(>kFi>A2nG`Tfx1mXGlMGP`OMnDf}2>Q(#fNiS>33k`HXSX8f;UhA6bsAxOAQvFK^Gs4qMtt;z+pah0=#@bNlrJ^Ovf(N*}$hI$M6f3NpGqR=PYj&2(VA7V)L%;g^@6`{r-&{0Y2y{(S%d diff --git a/4week/bringjava/.gradle/checksums/checksums.lock b/4week/bringjava/.gradle/checksums/checksums.lock deleted file mode 100644 index d47ea76db05397dd50ec3c36dffa476088c21b10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 TcmZR6ec_Dt|2r~s7@z - - - - - \ No newline at end of file diff --git a/4week/bringjava/.idea/dbnavigator.xml b/4week/bringjava/.idea/dbnavigator.xml deleted file mode 100644 index c2280278..00000000 --- a/4week/bringjava/.idea/dbnavigator.xml +++ /dev/null @@ -1,468 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/4week/bringjava/.idea/gradle.xml b/4week/bringjava/.idea/gradle.xml deleted file mode 100644 index 02b3e5bf..00000000 --- a/4week/bringjava/.idea/gradle.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/4week/bringjava/.idea/jarRepositories.xml b/4week/bringjava/.idea/jarRepositories.xml deleted file mode 100644 index fdc392fe..00000000 --- a/4week/bringjava/.idea/jarRepositories.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/4week/bringjava/.idea/misc.xml b/4week/bringjava/.idea/misc.xml deleted file mode 100644 index 2266f6bc..00000000 --- a/4week/bringjava/.idea/misc.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/4week/bringjava/build.gradle b/4week/bringjava/build.gradle deleted file mode 100644 index 7bcbbfe3..00000000 --- a/4week/bringjava/build.gradle +++ /dev/null @@ -1,14 +0,0 @@ -plugins { - id 'java' -} - -group 'org.study' -version '1.0-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - testCompile group: 'junit', name: 'junit', version: '4.12' -} diff --git a/4week/bringjava/build/classes/java/main/Hello.class b/4week/bringjava/build/classes/java/main/Hello.class deleted file mode 100644 index dfc38036bafbe5e20376af8cb2701bb222ceb123..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 502 zcmZuuO;5r=5Pb`U(pm*Uz;EP+9_+=$1ICMq@zAIVhKr{KH@Ku9rW6x@mL4?m;1BRe z8DEPDlCX!Fo%d$m%dg*B9kq{XM17_m3xs`+;qa{-$akY^v` QpNNGD)`|0rXmhCj0*`cK3jhEB diff --git a/4week/bringjava/gradle/wrapper/gradle-wrapper.jar b/4week/bringjava/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 62d4c053550b91381bbd28b1afc82d634bf73a8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58910 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 diff --git a/4week/bringjava/gradle/wrapper/gradle-wrapper.properties b/4week/bringjava/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index a4b44297..00000000 --- a/4week/bringjava/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/4week/bringjava/gradlew b/4week/bringjava/gradlew deleted file mode 100755 index fbd7c515..00000000 --- a/4week/bringjava/gradlew +++ /dev/null @@ -1,185 +0,0 @@ -#!/usr/bin/env sh - -# -# Copyright 2015 the original author or authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn () { - echo "$*" -} - -die () { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=`expr $i + 1` - done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -exec "$JAVACMD" "$@" diff --git a/4week/bringjava/gradlew.bat b/4week/bringjava/gradlew.bat deleted file mode 100644 index a9f778a7..00000000 --- a/4week/bringjava/gradlew.bat +++ /dev/null @@ -1,104 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/4week/bringjava/out/production/classes/Cal.class b/4week/bringjava/out/production/classes/Cal.class deleted file mode 100644 index 0f25065c1a8c9d2248d50408c7ecf3e2efc1a387..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2858 zcmbVOS#J|(6g^`*8E2R*br!Zbgf8INAucK12n`7#6t^~^aY&m|C=+{<40!8!OrfPa zNR@c$Lm#TDLa1tm)Th8hA~h0y@4x7C_yrXzJ$LNbCOABh$am)3?mhS1^IiMz|NguW z;1F(T*n`t5-qYa0w3wur88K(X%&K@_#Rn~z!-pDLa8`pKABj1qp%3R(e5~SvABKhw zO#3mfA%*i|(z0%fS&-9<8kS(m@S>PYVlrZ~Dsn3F3Yw2tIm;PU;0+DTD)3F@)24#< zxRoYxS6uDTrbaNjND>0>DX3oab%$JMmk)u?4qNfXR8g(MKhJpF<9V9uf)Msv88$1 zY$-#Vwl34Hl`E9!wmUR%w$VAy{DOiVidW?{Uu)K!Nu$>Lp+E|oS zDPuS$Bilk*sKGv|tYYyKW5I2+Sjsq5pDTf*L{wlkcy#9$g_F}>#!)c7#f~~QDy5y+ zvbO$w!L$u0FHBC5o@Bmcr_2+Uh^(DDalArg=u?m^1R1`0lC0(NqQ1WWgF|!IhR<3$m1XhiA-j*Ge_?s3) zZ=JQJ%Jq|3KMR(Y)CPR3sCBq&kWM3#YK*f3UZV#wl^V6dKvKEM` z%3$5J0@b}D8Of!d%QEdF1G5xNAA7p|Y5Y*Npg#B(*Wo23Hvx=V?c;j4xfb=K0e#m;F%j-h4)nCzzTfJoGQDK?+T!m-wUC$7RH{_{-)XjnR zFi`(91UiUek|{O%5lti$2(7_Cw}zIvd(c*~Z54VvvVzt`cyI-6%kedI%mtoXMc^+2 z1bPu~($+K_?FyDP#9pQ%^tb+9#BMR28NT72CU5UZv#3o#R^09#{;EHJoDn;DF=A+?Y z6_ZMjqc}>dRgj1fyQ;$La&aoCV2W+VG=^~^6aF3&vuJ!qG#>E|Q{{=s{iedtXsu!M zjs`iG{uROSU?kXdVK@@>T^RPRpnC;9iR)g^ok#x&(cAB!tuCdzE*C>_at$Q&nQG=U z%={?hO6L7&dWc>XlMkUN|6=bWa_LcVLdDxqNQuUMZ1}Xo#29^wFaJI4pmcWDx<&b# zPxAB$7g0}nUp1!RMI?=e-ys!m_lQ+^9SwFwZbJ)4NYAe2V8?-t!EO$s8-rdB!W)C& za*cUA_o3 Qh_6-Gr4OEB3=gLM2VYt$g8%>k diff --git a/4week/bringjava/out/production/classes/Calculator.class b/4week/bringjava/out/production/classes/Calculator.class deleted file mode 100644 index a4e7bbeb749d4b132efad4def202e0c413603ca9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 553 zcmZut%SyvQ6g`tZqBZuZ_5G-BS_>Azo#I9mglHEPQR`+JL!FW)B~8WOa-*Q&2l!Fq znY7rAfw_0?<2)wcKObKJ4zZhoi4_y885mg6VNHj16B{Nr1=7dLSJ8<;qFTEVNS+3d zu0YOKzI!$5ciiw=c06{9cHl_wMutk)lV&n{QbPgDK9!y`@?;c*N95>B;dkv&bP&5)Hm&Hkb>a yFz()wudg*B9kq{XM17_m3xs`+;qa{-$akY^v` QpNNGD)`|0rXmhCj0*`cK3jhEB diff --git a/4week/bringjava/settings.gradle b/4week/bringjava/settings.gradle deleted file mode 100644 index 9c1e8271..00000000 --- a/4week/bringjava/settings.gradle +++ /dev/null @@ -1,2 +0,0 @@ -rootProject.name = 'bringjava' - diff --git a/4week/bringjava/src/main/java/Cal.java b/4week/bringjava/src/main/java/Cal.java new file mode 100644 index 00000000..3d06dd36 --- /dev/null +++ b/4week/bringjava/src/main/java/Cal.java @@ -0,0 +1,61 @@ +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +import java.math.BigDecimal; + +public class Cal { + private BigDecimal add(BigDecimal first, String second) { + BigDecimal sec = new BigDecimal(second); + return first.add(sec); + } + + private BigDecimal sub(BigDecimal first, String second) { + BigDecimal sec = new BigDecimal(second); + return first.subtract(sec); + } + + private BigDecimal mul(BigDecimal first, String second) { + BigDecimal sec = new BigDecimal(second); + return first.multiply(sec); + } + + private BigDecimal div(BigDecimal first, String second) { + BigDecimal sec = new BigDecimal(second); + return first.divide(sec); + } + + + public BigDecimal calculateStart(String[] str) { + try { + BigDecimal result = new BigDecimal(str[0]); + if (str.length % 2 == 0) { + throw new IllegalArgumentException("잘못된 입력 입니다."); + } + for (int i = 0; i < str.length - 2; i += 2) { + result = cal(result, str[i + 2], str[i + 1].charAt(0)); + } + return result; + } catch (RuntimeException e) { + throw new RuntimeException("잘못된 연산 입니다."); + } + } + + public BigDecimal cal(BigDecimal first, String second, char operator) { + if (operator == '+') { + return add(first, second); + } + if (operator == '-') { + return sub(first, second); + } + if (operator == '/') { + return div(first, second); + } + if (operator == '*') { + return mul(first, second); + } + throw new RuntimeException("런타임 에러"); + } +} + + diff --git a/4week/bringjava/src/main/java/Calculator.java b/4week/bringjava/src/main/java/Calculator.java deleted file mode 100644 index 9094bf80..00000000 --- a/4week/bringjava/src/main/java/Calculator.java +++ /dev/null @@ -1,93 +0,0 @@ -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; - -import java.math.BigDecimal; -import java.util.ArrayList; - -class Cal { - - - public BigDecimal add(BigDecimal first, String second) { - - BigDecimal sec = new BigDecimal(second); - return first.add(sec); - } - - public BigDecimal sub(BigDecimal first, String second) { - - BigDecimal sec = new BigDecimal(second); - return first.subtract(sec); - } - - public BigDecimal mul(BigDecimal first, String second) { - - BigDecimal sec = new BigDecimal(second); - return first.multiply(sec); - } - - public BigDecimal div(BigDecimal first, String second) { - - BigDecimal sec = new BigDecimal(second); - return first.divide(sec); - } - - public String[] input() throws IOException { - try { - BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); - String str = bf.readLine(); - return split(str); - } catch (Exception e) { - throw new IllegalArgumentException("잘못된 입력 입니다."); - } - } - public String [] split(String str) throws IOException { - try { - String arr[] = str.split(" "); - return arr; - } catch (Exception e) { - throw new IllegalArgumentException("잘못된 입력 입니다."); - } - } - public void calculateStart(String[] str) { - try { - BigDecimal result = new BigDecimal(str[0]); - if (str.length % 2 == 0) { - throw new IllegalArgumentException("잘못된 입력 입니다."); - } - for (int i = 0; i < str.length - 2; i += 2) { - result = cal(result, str[i + 2], str[i + 1].charAt(0)); - } - print(result); - } catch (Exception e) { - throw new IllegalArgumentException("잘못된 입력 입니다."); - } - - - } - public void print(BigDecimal result) { - System.out.println(result); - } - - public BigDecimal cal(BigDecimal first, String second, char operator) { - if (operator == '+') { - return add(first, second); - } - if (operator == '-') { - return sub(first, second); - } - if (operator == '/') { - return div(first, second); - } - if (operator == '*') { - return mul(first, second); - } - throw new IllegalArgumentException("잘못된 입력 입니다."); - } -} -public class Calculator { - public static void main(String[] args) throws IOException { - Cal cal1 = new Cal(); - cal1.calculateStart(cal1.input()); - } -} diff --git a/4week/bringjava/src/main/java/Hello.java b/4week/bringjava/src/main/java/Hello.java deleted file mode 100644 index 3a3f84b3..00000000 --- a/4week/bringjava/src/main/java/Hello.java +++ /dev/null @@ -1,10 +0,0 @@ -public class Hello { - public static void main(String [] args){ - System.out.print("Hello"); - } -} -//psvm -//sout -//soutv -//soutm -// javac = 자바 컴파일러 diff --git a/4week/bringjava/src/main/java/IntInput.java b/4week/bringjava/src/main/java/IntInput.java new file mode 100644 index 00000000..5f1a6f95 --- /dev/null +++ b/4week/bringjava/src/main/java/IntInput.java @@ -0,0 +1,23 @@ +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class IntInput { + public String[] input() throws IOException { + try { + BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); + String str = bf.readLine(); + return split(str); + } catch (IllegalArgumentException e) { + throw new IllegalArgumentException("잘못된 입력 입니다."); + } + } + private String [] split(String str) throws IOException { + try { + String arr[] = str.split(" "); + return arr; + } catch (ArrayIndexOutOfBoundsException e) { + throw new ArrayIndexOutOfBoundsException("split 범위 오류"); + } + } +} diff --git a/4week/bringjava/src/main/java/Main.java b/4week/bringjava/src/main/java/Main.java new file mode 100644 index 00000000..d06835a0 --- /dev/null +++ b/4week/bringjava/src/main/java/Main.java @@ -0,0 +1,11 @@ +import java.io.IOException; + +public class Main { + public static void main(String[] args) throws IOException { + IntInput input = new IntInput(); + Cal cal1 = new Cal(); + View view = new View(); + view.print(cal1.calculateStart(input.input())); + + } +} diff --git a/4week/bringjava/src/main/java/View.java b/4week/bringjava/src/main/java/View.java new file mode 100644 index 00000000..919d245f --- /dev/null +++ b/4week/bringjava/src/main/java/View.java @@ -0,0 +1,7 @@ +import java.math.BigDecimal; + +public class View { + public void print(BigDecimal result){ + System.out.println(result); + } +} From 5e545beba31e7ed4759fa139835b0f45dc134719 Mon Sep 17 00:00:00 2001 From: DongLee99 Date: Mon, 1 Feb 2021 16:04:03 +0900 Subject: [PATCH 10/10] =?UTF-8?q?fix:input=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bringjava/src/main/java/{IntInput.java => Input.java} | 8 ++++---- 4week/bringjava/src/main/java/Main.java | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) rename 4week/bringjava/src/main/java/{IntInput.java => Input.java} (77%) diff --git a/4week/bringjava/src/main/java/IntInput.java b/4week/bringjava/src/main/java/Input.java similarity index 77% rename from 4week/bringjava/src/main/java/IntInput.java rename to 4week/bringjava/src/main/java/Input.java index 5f1a6f95..d19fa307 100644 --- a/4week/bringjava/src/main/java/IntInput.java +++ b/4week/bringjava/src/main/java/Input.java @@ -2,17 +2,17 @@ import java.io.IOException; import java.io.InputStreamReader; -public class IntInput { - public String[] input() throws IOException { +public class Input { + public String[] stringInput() throws IOException { try { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); String str = bf.readLine(); - return split(str); + return stringSplit(str); } catch (IllegalArgumentException e) { throw new IllegalArgumentException("잘못된 입력 입니다."); } } - private String [] split(String str) throws IOException { + private String [] stringSplit(String str) throws IOException { try { String arr[] = str.split(" "); return arr; diff --git a/4week/bringjava/src/main/java/Main.java b/4week/bringjava/src/main/java/Main.java index d06835a0..b4eab164 100644 --- a/4week/bringjava/src/main/java/Main.java +++ b/4week/bringjava/src/main/java/Main.java @@ -2,10 +2,10 @@ public class Main { public static void main(String[] args) throws IOException { - IntInput input = new IntInput(); + Input input = new Input(); Cal cal1 = new Cal(); View view = new View(); - view.print(cal1.calculateStart(input.input())); + view.print(cal1.calculateStart(input.stringInput())); } }