Java 19

[Java] 클래스

0. 목표 자바의 Class에 대해서 학습한다. 학습할 것(필수) (클래스란?) 클래스를 정의하는 방법 객체를 만드는 방법 (new 연산자 이해하기) 메소드를 정의하는 방법 생성자를 정의하는 방법 this란 무엇인가? this. 와 this() 학습할 것(추가) (이진트리란?) 이진트리 구현하기 이진탐색트리 구현하기 (추가)contains(int number) 구현 (추가)remove(int number) 구현 Plus Ultra 이진 트리의 활용 균형 이진 탐색트리 AVL 트리 Red - Black 트리 힙 1. 클래스란? 내가 원하는 작업을 수행 할 함수, 프로시져, (작업을 진행하는데 필요한) 변수들을 한군데에 모아서 인지하기 쉽도록 만든것 2. 클래스를 정의하는 방법 Place.java class..

Java/STUDY HALLE 2020.12.16

[책읽기] 오브젝트(1) - 객체, 설계

티켓 판매 애플리케이션 만들기 소극장은 관람객들을 모으기 위해 이벤트로 초대장을 배부하였고 관람객을 맞이한다. 관람객을 맞이할 때 초대장이 있는 사람과 없는 사람을 구분해야한다. 초대장이 있는 사람은 초대장을 티켓으로 교환한 후 입장을 할 수 있고 초대장이 없는 사람은 비용을 지불하여 티켓을 획득한 후 입장을 할 수 있다. 위의 내용을 감안하여 다음과 같은 구조의 클래스를 설계하여 1차적인 구성을 완료해보자. 1차 구현코드 Ticket.java public class Ticket { private Long fee; public Long getFee() { return fee; } } TicketOffice.java import java.util.ArrayList; import java.util.Array..

Java/책읽기 2020.12.10

[Java] 선형 자료구조

0.선형 자료구조 위의 그림과 같이 하나의 자료 뒤에 하나의 자료가 1:1관계로 존재하는 것을 선형 자료구조라고 한다. 선형자료구조에는 배열, 연결리스트, 스택, 큐, 덱 등이 있다. 이번 포스트에서는 연결리스트, 스택, 큐의 기본적인 로직을 직접 구현해보려고 한다. 1.연결리스트 1-1.연결리스트는 무엇일까? 위의 그림과 같이 연결리스트는 하나의 노드가 다음 노드의 주소를 저장하는 방식으로 값을 저장하는 선형 자료구조이다. 따라서 값의 삽입, 삭제의 수행시간이 배열 기반의 자료구조보다 빠르고, 읽기의 수행시간이 배열기반의 자료구조보다 오래걸린다. 1-2. 연결리스트 구현 public class ListNode { int number; ListNode node; ListNode top; public Li..

Java/STUDY HALLE 2020.12.07

[Java] GitHub Library 사용법

1. 자바에서 깃허브 의존성을 추가하는 방법 2. API를 사용하는 방법 https://github-api.kohsuke.org 위의 사이트에 접속해서 레퍼런스 문서를 읽어보면서 어떤 기능이 있는지 살펴보아야 한다. 많은 사람들이 사용하는 api가 아니기 때문에 구글링을 해도 결과물이 없다. 3. 요구사항 실현하기 Main.java import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.util.List; import java.util.stream.Collectors; public class Main { static final int NUM_OF_ISSUES = 18; s..

Java/STUDY HALLE 2020.12.06

[Java] JUnit5

1.JUnit은 무엇인가? JUnit은 자바 개발자가 가장 많이 사용하는 테스트 프레임워크이다. JUnit5는 4에서 5로 넘어오면서 여러개의 서브모듈로 나뉘었다 중요한 것들만 살펴보자면 다음과 같다. Junit Platform junit 테스트를 진행하기 위한 TestEngine API을 제공한다. Junit Jupiter JUnit5의 TestEngine API의 구현체 Junit Vintage JUnit3과 JUnit4의 TestEngine API 구현체 2.Junit은 어떻게 사용하는가? 다음과 같이 IntelliJ 에서 gradle 기반으로 프로젝트를 생성하면 자동으로 JUnit4가 의존성 추가가 된다. 우리가 사용할 JUnit은 5 버전이기 때문에 MVNRepository를 접속해서 최신 안정..

Java/STUDY HALLE 2020.12.05

[Java] 제어문

Java에서 코드의 흐름을 통제하는 방법에는 두가지가 있다. 바로 선택문과 반복문인데 이 두가지를 통해 프로그램의 실행 흐름을 조작하는 방법에 대해서 알아보도록 하자. 1. 선택문 if문 if if (inputNumber > 0) { System.out.println("양수입니다."); } if 우측의 괄호에 참, 거짓을 구분할 수 있는 판별식이 들어가고 해당 판별식이 참이라면 그 후에 이어지는 중괄호에 있는 문장을 읽어 실행한다. else if (inputNumber > 0) { System.out.println("양수입니다."); } else { System.out.println("양수가 아닙니다."); } else 의 의미는 위에 해당하는 조건식의 !연산을 한 결과가 참이면 실행한다는 의미이다. 위..

Java/STUDY HALLE 2020.12.05

[Java] 연산자

자바가 제공하는 다양한 연산자를 학습한다. 산술 연산자 비트 연산자 관계 연산자 논리 연산자 instanceof assignment(=) operator 화살표(->) 연산자 3항 연산자 연산자 우선 순위 (optional) Java 13. switch 연산자 1.산술 연산자 + , - , * , / , % 와 같은 우리가 흔히 사용하는 연산자이다. 피연산자와 피연산자를 연산하는 이항 연산을 수행한다. 일반 수학에서 사용하는 것과 같이 사용할 수 있다. ex) 1+1 , 2 * 3 , 4 / 2 , 4 % 3 그렇다면 우리가 일반적으로 사용하는 계산이 자바 컴파일러를 거치면 클래스 파일에서 어떻게 변환되어 계산되는지를 살펴보자. 당연하다고 생각되는 점들은 굳이 따로 집어 표현하지 않았고, 새롭게 알게 된..

Java/STUDY HALLE 2020.11.27

[Java]JVM 기술 스택의 구조 이해하기

1주차. 자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기. "WHY?" 왜 우리는 자바 소스파일이 JVM 위에서 실행되는 과정을 알아야 할까? "자바는 블루칼라 언어입니다. 박사 학위 논문 주제가 아니라 일을 하려고 만든 언어죠." -제임스 고슬링 자바는 지극히 실용적인 언어이다. 개발환경이 충분히 빠르다면 개발자의 생산성이 높아지는 대가로 어느정도의 성능 희생은 감수할 수 있다는 것이다. 애초에 처음부터 자바는 개발자가 플랫폼을 저수준에서 다 알 필요가 없도록 설계되었다. 그래서 제대로 된 Java 개발자라면 기본적인 JVM 기술스택의 구조를 이해해야 한다. 생산성을 위해 어느정도의 성능을 희생했는지, 필요로 하는 만큼의 성능을 향상 시키기 위해서 다른 언어를 선택하는 것이 더 좋을지 ..

Java/STUDY HALLE 2020.11.14