JAVA
-
[JAVA] Java String의 split 메소드JAVA 2021. 3. 7. 22:04
우테코에서 미션을 진행하다 보면 구분자(ex ",")를 통해 입력값을 잘라야하는 경우가 발생한다. 이전에 split 메소드를 정확히 알지 못했을 때는 도메인에서 유효성 검증을 해도 입력값이 "a,b,c,,," 와 같이 끝자리에 콤마가 있을 때를 처리하지 못해 따로 유효성 검증 메소드를 만들어주었다. 그러다 저번 로또 미션 때 페어 덕분에 이 문제를 해결하는 방법을 알게되었고 이번 블랙잭에서도 동일한 방식으로 해결하였기에 split에 대해 제대로 알아보고자 블로그에 정리하게 되었다. 물론 말은 정리라고 해도 split의 limit에 초점만 두고 글은 길지 않으며 별거 없을 것이다. 자바 문자열의 split 메소드는 구분자를 기준으로 문자열을 자르고 싶을 때 사용한다. 예를 들어 "a,b,c"와 같은 문자열..
-
[모던자바인액션] chap 04 스트림 소개JAVA 2021. 2. 27. 22:48
스트림 소개 스트림이란 무엇인가? 스트림은 자바 8 API에 새로 추가된 기능. 선언형으로 코드를 구현할 수 있다. 즉, 루프와 if 조건문 등의 제어 블록을 사용해서 어떻게 동작을 구현할지 지정할 필요 없이 'A한 B만 선택하라' 같은 동작의 수행을 지정할 수 있음. public static List getLowCaloricDishesNamesInJava8(List dishes) { return dishes.stream() .filter(d -> d.getCalories() < 400) .sorted(comparing(Dish::getCalories)) .map(Dish::getName) .collect(toList()); } filter, sorted, map, collect 같은 여러..
-
[모던자바인액션] chap 03 람다 표현식JAVA 2021. 2. 27. 22:47
람다 표현식 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것. 람다의 특징 익명 보통의 메서드와 달리 이름이 없으므로 익명이라 표현. 구현해야 할 코드에 대한 걱정거리가 줄어듬. 함수 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부름. 하지만 메서드처럼 파라미터 리스트, 바디, 반환 형식, 가능한 예외 리스트를 포함. 전달 람다 표현식을 메서드 인수로 전달하거나 변수로 저장할 수 있음. 간결성 익명 클래스처럼 많은 자질구레한 코드를 구현할 필요가 없음. 람다 표현식의 형태 (Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight()) 파라미터 리스트 Comparator의 compare 메서드 파라미터 (사과 두 개) 화살..
-
[모던자바인액션] chap 02 동작 파라미터화 코드 전달하기JAVA 2021. 2. 27. 22:46
동작 파라미터화 동작 파라미터화를 이용하면 자주 변하는 요구사항에 효과적으로 대응 가능. 동작 파라미터화란 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록을 의미한다. 이 코드 블록은 나중에 프로그램에서 호출한다. 동작 파라미터화로 다양한 기능을 수행할 수 있다. 변화하는 요구사항에 대응하기 기존의 농장 재고목록 애플리케이션에 리스트에서 녹색 사과만 필터링하는 기능을 추가한다고 가정하자. 첫 번째 시도: 녹색 사과 필터링 public static List filterGreenApples(List inventory) { List result = new ArrayList(); for (Apple apple : inventory) { if (GREEN.equals(apple.getColor()) { re..
-
[Study] 자바 9주차 과제JAVA 2021. 1. 27. 15:47
9주차 과제입니다. 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) try, catch, finally package exception; public class Ex_Exception { public static void main(String[] args) { try { System.out.println("A"); System.out.println(1 / 0); //예외 발생 System.out.println("B"); //예외 발생 후 바로 catch 문으로 가기 때문에 실행 안됨 }catch (ArithmeticException e) { System.out.println("C"); System.out.println(e.getMessage()); //해당 th..
-
[Study] 자바 8주차 과제JAVA 2021. 1. 24. 16:36
자바 8주차 과제입니다. 인터페이스 정의하는 방법 자식 클래스가 여러 부모 클래스를 상속받을 수 있다면, 다양한 동작을 수행할 수 있다는 장점을 가지게 될 것입니다. 하지만 클래스를 이용하여 다중 상속을 할 경우 메소드 출처의 모호성 등 여러 가지 문제가 발생할 수 있어 자바에서는 클래스를 통한 다중 상속은 지원하지 않습니다. 하지만 다중 상속의 이점을 버릴 수는 없기에 자바에서는 인터페이스라는 것을 통해 다중 상속을 지원하고 있습니다. 인터페이스(interface)란 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미합니다. 자바에서 추상 클래스는 추상 메소드뿐만 아니라 생성자, 필드, 일반 메소드도 포함할 수 있습니다. 하..
-
[Study] 자바 7주차 과제JAVA 2021. 1. 18. 21:55
7주차 과제입니다. package 키워드 자바에서 패키지란 클래스와 인터페이스의 집합을 의미함. 물리적으로 하나의 디렉터리를 의미함. 하나의 패키지에 속한 클래스나 인터페이스 파일은 모두 해당 패키지 이름의 디텍터리에 포함. 디럭테리의 계층 구조는 점(.)으로 구분됨. 자바의 모든 클래스는 반드시 하나 이상의 패키지에 포함. - 어떠한 패키지의 선언도 포함되지 않으면, 컴파일러가 기본적으로 이름 없는 패키지(unnamed package)에 포함해 컴파일함. 선언 package 패키지이름; 위와 같은 명령문을 클래스나 인터페이스의 소스 파일에 추가하기만 하면 됨. 패키지 이름에는 패키지의 경로까지 포함한 풀 네임을 명시. FQCN (Fully Qualified Class Name) 모든 클래스에는 정의된 ..
-
[Study] 자바 6주차 과제JAVA 2021. 1. 15. 16:11
자바 6주차 과제입니다. 자바 상속의 특징 상속이란? 상속이란 기존의 클래스를 재사용해 새로운 클래스를 만드는 것을 뜻합니다. 적은 양의 코드로 새로운 클래스를 만들 수 있으며 코드를 한 번에 관리할 수 있습니다. 상속을 해주는 클래스는 상위 클래스(Super class), 상속을 받는 클래스를 하위 클래스(Sub class)라고 합니다. 상위 클래스는 보통 부모 클래스(Parent class), 하위 클래스는 자식 클래스(Child class)라고 부릅니다. 상위 클래스(Super Class) - 부모 클래스(Parent Class), 기반 클래스(Base Class) 하위 클래스(Sub Class) - 자식 클래스(Child Class) 사용 방법 확장하다는 의미인 extends 키워드를 사용하여 구..