Java 19

[Java] 정규표현식 (기본)

0. 언제 쓰는가? 정규식에는 다양한 기능이 있다. 기본적인 기능부터 살펴보도록 하자. 이번에 살펴볼 기능은 각종 코딩 테스트나 알고리즘에 자주 나오는 유형이다. 해당 문자열이 내가 원하는 값들로만 이루어져 있는지 확인하고 싶을 때 사용한다. 혹은 절대로 있으면 안되는 값이 포함되어 있는지 확인하고 싶을 때 사용한다. 이것을 응용하면 내가 원하는 값이 포함 되어있는지 확인할 수도 있다. 1. 내가 원하는 값들만 들어있는지 확인한다. public class Main { private static boolean isOnlyNumber(String string) { return string.matches("^[0-9]*$"); } private static boolean isOnlyCapitalAlphabet..

Java 2021.03.21

[Java] 람다

0. 학습 목표 람다식 사용법 함수형 인터페이스 variable capture 메소드, 생성자 레퍼런스 0-1. 왜 람다인가? 사과는 무게, 색의 데이터를 가진다. 그리고 여기에 다양한 사과들의 리스트가 있다고 가정해보자. Apple.java public class Apple { private Color color; private int weight; public Apple(Color color, int weight) { this.color = color; this.weight = weight; } public Color getColor() { return color; } public void setColor(Color color) { this.color = color; } public int getWe..

Java/STUDY HALLE 2021.03.05

[Java] enum

0. 학습 목표 자바의 열거형에 대해서 학습한다. enum 정의하는 방법 enum이 제공하는 메소드 (values()와 valueOf()) java.lang.Enum EnumSet 1. enum 정의하는 방법 자바의 enum을 정의하는법은 일반적으로 클래스를 사용하는 방법과 다르지 않다. 1-1.기본형 package study.moon.test; public enum Word { HELLO, WORLD } 말 그대로 데이터를 열거하는 방식으로 이루어져 있다. 마치 값이 채워진 배열과 같은 느낌이다. 1-2.데이터 표현형 package study.moon.test; public enum Word { HELLO("HELLO"), WORLD("WORLD"); String word; Word(String wor..

Java/STUDY HALLE 2021.01.30

[Java] 쓰레드 Thread

0. 학습목표 자바의 멀티쓰레드 프로그래밍에 대해서 학습한다. 어려워지려고 하면 너무 끝도 없이 어려워지니 정말 기본적으로 쓰레드를 이해할 수 있을 정도의 수준과 예제만 담도록 한다. Thread 클래스 Runnable 인터페이스 메인쓰레드 쓰레드의 상태 쓰레드의 우선순위 동기화 데드락 싱글턴에서의 Thread-safe 1. Thread 인텔리제이의 기능을 이용하여 Thread클래스 명세를 읽어보며 공부를 해보자. 스레드는 하나의 프로그램에서의 실행 흐름이다. JVM은 병렬적으로 작동하는 여러개의 스레드 실행을 허용한다. 모든 스레드는 우선순위가 있다. 우선순위가 높은 스레드는 우선순위가 낮은 스레드보다 먼저 실행된다. 어떤 스레드는 데몬스레드가 되거나 되지 않을수 있다. 일부 스레드에서 실행중인 코드가..

Java/STUDY HALLE 2021.01.20

[Java] 예외처리

0. 학습 목표 자바에서 예외 처리 방법(try, catch, throw, throws, finally) 자바가 제공하는 예외 계층 구조 Exception과 Error의 차이 RuntimeException과 RuntimeException이 아닌것의 차이는? 커스텀한 예외 만드는 방법 1. 자바에서의 예외처리방법 Java에서 Exception이란 프로그램의 실행 도중에 발생하는 문제상황 을 의미한다. if문을 사용하여 예외 처리를 진행할 수도 있지만 if문은 프로그램의 로직을 작성하는 부분도 존재하기 때문에 if문으로 예외처리를 진행할 시, 예외사항이 발생하는곳을 찾아보기 어렵다는 단점이 있다. 따라서 예외처리 구문을 통해 예외를 처리하는것이 바람직하다. 1-1. try - catch - finally M..

Java/STUDY HALLE 2021.01.15

[Java] 인터페이스

0. 학습목표 인터페이스란 무엇인가? 인터페이스를 정의하는 방법 인터페이스를 구현하는 방법 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법 인터페이스 상속 인터페이스의 Default 메소드(Java8) 인터페이스의 static 메소드(Java8) 인터페이스의 private 메소드(Java9) 1. 인터페이스란? 자바에서 개체를 표현할 때, 해당 개체가 외부와 통신하는데 필요한 규칙들의 모임. 내가 어느 세상의 신이고 생물체들을 빚어서 만들려고 한다고 가정해보자. 그런데 만들어야 할 생물이 너무 많아서 천사들에게 일을 위임하기 위해 필요한 부분들을 틀로 만들어서 제공하였다. 천사들은 내가 만든 비행의 기능을 가진 틀을 활용해서 생물체들을 만드는 작업에 착수하기 시작했다. 다음의 예시를 보자. Flying..

Java/STUDY HALLE 2021.01.08

[Java] 패키지

0. 목표 package 키워드 import 키워드 클래스패스 클래스패스 환경변수 클래스패스 옵션 접근지시자 1. package 서로 다른 용도로 만들어진, 같은 이름의 클래스를 구분하기 위해서 만들어진 개념이다. 다음의 요구사항을 가진 프로그램을 각각의 회사에서 기능을 나누어맡아 구현한다고 가정해보자. 카카오는 계산기에서 곱셈을 구현한다. 네이버는 계산기에서 덧셈을 구현한다. 이제 두 회사의 결과물을 모아서 종합적인 계산기를 만들려고 한다. 그런데 모아놓고보니 문제가 생겼다. 두 회사 모두 계산기 클래스의 이름을 Calculator라고 정한것이다. 동일한 패키지 내부에는 같은 클래스의 이름이 존재할 수 없다. 그렇다고 한 회사의 클래스 명을 바꾸자니 그것만큼 클래스의 이름을 대표하기에 적절한 단어가 없..

Java/STUDY HALLE 2020.12.29

[Java] 상속

0. 학습 목표 자바 상속의 특징 super 키워드 메소드 오버라이딩 다이나믹 디스패치 (더블 디스패치) 추상클래스 final 키워드 Object 클래스 1. 자바 상속의 특징 1-1. 상속이란? 상속이란 상위클래스에서 정의한 필드와 메서드를 하위클래스도 동일하게 사용할 수 있게 물려받는 것이다. 1-2. 상속을 사용하는 이유 코드를 재사용하기에 편하고 클래스 간 계층구조를 분류하고 관리하기 쉬워진다. 영웅이 빌런들을 물리치며 세계 평화를 지키는 게임을 만든다고 가정하자. 영웅은 hp, 공격력, 레벨을 가지며 상대방을 공격할 수 있고 레벨만큼 상대방의 공격력을 방어할 수 있다. 빌런은 hp, 공격력 방어력을 가지며 상대방을 공격할 수 있고 단단한 방어력으로 상대방의 공격을 방어력만큼 막을 수 있다. 위 ..

Java/STUDY HALLE 2020.12.22

[책읽기] 오브젝트(2) - 객체지향 프로그래밍

이번 챕터에서는 어떻게 객체지향을 활용하여 프로그램을 구성할 수 있는지 학습한다. 책에 있는 영화 예매 시스템 예제를 그대로 따라할 것이다. 책을 따라하면서 객체 지향에 대한 감을 잡아보도록 하자. 0. 요구사항 살펴보기 사용자가 온라인 영화 예매 시스템을 활용해서 영화를 예매할 수 있다. 할인조건에 맞는 예매자는 요금을 할인받을 수 있다. 할인조건은 순서조건과, 기간조건 두가지가 있다. 기간조건은 요일 시작시간 종료시간 세부분으로 구성되며 영화 시작시간이 해당 기간안에 포함될 경우 요금을 할인한다. 할인 조건에 해당하는 예매자는 할인정책에 따라 요금을 할인받을 수 있다. 할인정책은 금액할인정책과 비율할인 정책이 있다. 영화별로 하나의 할인정책만 할당할 수 있다. 할인정책을 지정하지 않는것도 가능하다. ..

Java/책읽기 2020.12.17

[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