[Java] 패키지
·
Java&Spring/STUDY HALLE
0. 목표 package 키워드 import 키워드 클래스패스 클래스패스 환경변수 클래스패스 옵션 접근지시자 1. package 서로 다른 용도로 만들어진, 같은 이름의 클래스를 구분하기 위해서 만들어진 개념이다. 다음의 요구사항을 가진 프로그램을 각각의 회사에서 기능을 나누어맡아 구현한다고 가정해보자. 카카오는 계산기에서 곱셈을 구현한다. 네이버는 계산기에서 덧셈을 구현한다. 이제 두 회사의 결과물을 모아서 종합적인 계산기를 만들려고 한다. 그런데 모아놓고보니 문제가 생겼다. 두 회사 모두 계산기 클래스의 이름을 Calculator라고 정한것이다. 동일한 패키지 내부에는 같은 클래스의 이름이 존재할 수 없다. 그렇다고 한 회사의 클래스 명을 바꾸자니 그것만큼 클래스의 이름을 대표하기에 적절한 단어가 없..
[Java] 상속
·
Java&Spring/STUDY HALLE
0. 학습 목표 자바 상속의 특징 super 키워드 메소드 오버라이딩 다이나믹 디스패치 (더블 디스패치) 추상클래스 final 키워드 Object 클래스 1. 자바 상속의 특징 1-1. 상속이란? 상속이란 상위클래스에서 정의한 필드와 메서드를 하위클래스도 동일하게 사용할 수 있게 물려받는 것이다. 1-2. 상속을 사용하는 이유 코드를 재사용하기에 편하고 클래스 간 계층구조를 분류하고 관리하기 쉬워진다. 영웅이 빌런들을 물리치며 세계 평화를 지키는 게임을 만든다고 가정하자. 영웅은 hp, 공격력, 레벨을 가지며 상대방을 공격할 수 있고 레벨만큼 상대방의 공격력을 방어할 수 있다. 빌런은 hp, 공격력 방어력을 가지며 상대방을 공격할 수 있고 단단한 방어력으로 상대방의 공격을 방어력만큼 막을 수 있다. 위 ..
[Java] 클래스
·
Java&Spring/STUDY HALLE
0. 목표 자바의 Class에 대해서 학습한다. 학습할 것(필수) (클래스란?) 클래스를 정의하는 방법 객체를 만드는 방법 (new 연산자 이해하기) 메소드를 정의하는 방법 생성자를 정의하는 방법 this란 무엇인가? this. 와 this() 학습할 것(추가) (이진트리란?) 이진트리 구현하기 이진탐색트리 구현하기 (추가)contains(int number) 구현 (추가)remove(int number) 구현 Plus Ultra 이진 트리의 활용 균형 이진 탐색트리 AVL 트리 Red - Black 트리 힙 1. 클래스란? 내가 원하는 작업을 수행 할 함수, 프로시져, (작업을 진행하는데 필요한) 변수들을 한군데에 모아서 인지하기 쉽도록 만든것 2. 클래스를 정의하는 방법 Place.java class..
[Java] Comparator / Comparable
·
Java&Spring/Java
1.Comparableclass Data implements Comparable{ int time; int layer; public Data(int time, int layer) { this.time = time; this.layer = layer; } @Override public int compareTo(Data o) { if (this.time > o.time) { return 1; } else if (time == o.time) { if (layer 임의의 두 수를 설정하고 양수를 리턴하면 자리를 바꾼다.ex) this = 3, o = 1 -> 3이 1보다 크므로 1을 리턴하면..
[Java] 선형 자료구조
·
Java&Spring/STUDY HALLE
0.선형 자료구조 위의 그림과 같이 하나의 자료 뒤에 하나의 자료가 1:1관계로 존재하는 것을 선형 자료구조라고 한다. 선형자료구조에는 배열, 연결리스트, 스택, 큐, 덱 등이 있다. 이번 포스트에서는 연결리스트, 스택, 큐의 기본적인 로직을 직접 구현해보려고 한다. 1.연결리스트 1-1.연결리스트는 무엇일까? 위의 그림과 같이 연결리스트는 하나의 노드가 다음 노드의 주소를 저장하는 방식으로 값을 저장하는 선형 자료구조이다. 따라서 값의 삽입, 삭제의 수행시간이 배열 기반의 자료구조보다 빠르고, 읽기의 수행시간이 배열기반의 자료구조보다 오래걸린다. 1-2. 연결리스트 구현 public class ListNode { int number; ListNode node; ListNode top; public Li..
[Java] GitHub Library 사용법
·
Java&Spring/STUDY HALLE
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] JUnit5
·
Java&Spring/STUDY HALLE
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] 제어문
·
Java&Spring/STUDY HALLE
Java에서 코드의 흐름을 통제하는 방법에는 두가지가 있다. 바로 선택문과 반복문인데 이 두가지를 통해 프로그램의 실행 흐름을 조작하는 방법에 대해서 알아보도록 하자. 1. 선택문 if문 if if (inputNumber > 0) { System.out.println("양수입니다."); } if 우측의 괄호에 참, 거짓을 구분할 수 있는 판별식이 들어가고 해당 판별식이 참이라면 그 후에 이어지는 중괄호에 있는 문장을 읽어 실행한다. else if (inputNumber > 0) { System.out.println("양수입니다."); } else { System.out.println("양수가 아닙니다."); } else 의 의미는 위에 해당하는 조건식의 !연산을 한 결과가 참이면 실행한다는 의미이다. 위..