본문 바로가기
728x90

Programming/Java49

[자바/Java] Optional 개념 및 사용법 Opional 이란 자바의 가장 큰 고질적인 문제라고 하면 null을 체크해줘야 하는 문제를 꼽을 수 있다. NPE(NullPointerException)을 피하기 위해서는 꼭 null 여부를 체크해줘야 하기 때문에 코드가 길어지고 복잡해진다는 문제점이 발생하는 것이다. 이러한 문제를 보완하고자 Java8에서는 Optional 클래스를 통해 NPE를 방지할 수 있도록 도와준다. Optional는 null이 올 수 있는 값을 감싸는 Wrapper 클래스로, 참조하더라도 NPE가 발생하지 않도록 도와준다. Optional 클래스는 아래와 같은 value에 값을 저장하기 때문에 값이 null이더라도 바로 NPE가 발생하지 않으며, 클래스이기 때문에 각종 메소드를 제공해준다. class Optional { T .. 2023. 10. 15.
[자바/Java] 메소드 레퍼런스(Method Reference) 메소드 레퍼런스(Method Reference)란 메소드 레퍼런스란, 람다식에서의 클래스의 메소드 호출을 간단하게 표현을 하는 방법이다. 람다 표현식이 메소드 호출 1회로 끝나는 경우, 메소드 레퍼런스를 이용하여 코드를 더욱 간결하게 작성할 수 있는 것이다. 예시로 아래의 코드를 보면, @FunctionalInterface public interface class Test { void print(T t); } public class Main { public static void main(String[] args) { //메소드 레퍼런스 X Test t1 = (str) -> System.out.println(str); t1.print("hello"); //메소드 레퍼런스 O Test t2 = System:.. 2023. 10. 14.
[자바/Java] 함수형 인터페이스 함수형 인터페이스 이전 글인 lambda에서 함수형 인터페이스에 대해서 알아보았다. 하지만 매번 함수형 인터페이스를 직접 만들어서 사용하는 것을 번거로운 일이다. 그래서 Java에서는 기본적으로 많이 사용되는 함수형 인터페이스를 제공하고 있다. 기본적으로 제공되는 것만 사용하여도 대부분의 람다식을 사용할 수 있다. 함수형 인터페이스의 종류는 아래와 같다. Runnable : () -> void Supplier : () -> T Consumer : T -> void Function : T -> R Predicate : T -> boolean UnaryOperator : T -> T BinaryOperator : (T, T) -> T BiPredicate : (T, U) -> boolean BiConsume.. 2023. 10. 14.
[자바/Java] lambda 개념 및 사용법 람다(lambda)란 람다 함수는 프로그래밍 언어에서 사용되는 개념으로 익명 함수(Anonymous functions)를 뜻하는 말이다. 여기서 람다는 수학과기초 컴퓨터 과학 분야에서의 람다 대수에서 나온 용어로, 함수를 보다 단순하게 표현하는 방법을 뜻한다. Lambda = 프로그래밍적 동작을 보다 간단하게 표현한 이름 없는 함수 자바에서 람다 표현식(lambda-expression)은 Java8부터 도입된 개념이다. 람다 표현식은 추상 메소드가 하나뿐인 인터페이스를 구현하는 것이다. 그렇기 때문에 또 다른 말로, 함수형 인터페이스(functional interface)라고도 한다. 익명 함수라는 말에서 알 수 있듯이 익명 클래스를 더 간략화한 표현식(메소드 한개를 표현하기 위한 식)이라고 이해하면 더.. 2023. 10. 14.
[자바/Java] Inner 클래스 Inner Class 란? Inner Class란, 클래스나 인터페이스 내부에서 선언되는 클래스를 이너 클래스라고 한다. 이너 클래스를 사용할 시 다음과 같은 이점을 가지고 있다. 이너 클래스는 외부 클래스의 모든 멤버(변수, 메소드 등)에 접급할 수 있다는 관련성의 특별한 타입을 나타냄 이너 클래스는 논리 그룹 클래스와 인터페이스 내부에 있기 때문에 더 읽기 쉽고, 유지 가능한 코드 개발에 사용 적시 적소에 쓰면 불필요한 클래스의 낭비가 줄어든다. (1번 사용되는 클래스를 위해, 클래스 파일을 생성할 필요X) 이너 클래스는, 클래스 내부에서 어디에, 어떻게 선언되냐에 따라 여러 종류로 나뉜다. Member Inner Class : 다른 클래스 내부에서 선언된 클래스 Static Ineer Class :.. 2023. 10. 14.
[자바/Java] Collection2 - 사용예제 저번 글에서는 자바 Collection 의 개념에 대해서 다루었다. 이번 글에서는 자바 Collection에 속해있는 해당 클래스들의 사용 예제를 다루면서 Collection의 사용법에 대해서 다루겠다. https://codingralro.tistory.com/entry/%EC%9E%90%EB%B0%94Java-Collection1-%EA%B0%9C%EB%85%90 [자바/Java] Collection1 - 개념 컬렉션(collection)은 많은 데이터 요소를 효율적으로 관리하기 위한 자료구조를 말하며, ArrayList, LinkedList, HashMap 등이 여기에 포함된다. 그리고 이 컬렉션들은 제네릭(generics) 형식으로 구현되어 있 codingralro.tistory.com List I.. 2023. 10. 13.
[자바/Java] Collection1 - 개념 컬렉션(collection)은 많은 데이터 요소를 효율적으로 관리하기 위한 자료구조를 말하며, ArrayList, LinkedList, HashMap 등이 여기에 포함된다. 그리고 이 컬렉션들은 제네릭(generics) 형식으로 구현되어 있기 때문에 generic에 대해서 잘 모른다면 아래 블로그를 참고하기 바란다. https://codingralro.tistory.com/entry/%EC%9E%90%EB%B0%94Java-%EC%A0%9C%EB%84%A4%EB%A6%ADGeneric [자바/Java] 제네릭(Generic) 제네릭(Generic)이란 자바를 조금씩 알아가고 있는 사람에겐 제네릭이라는 키워드는 생소할 수 있다. 하지만, 이미 수없이 우리는 제네릭을 마주해왔음을 이번 글을 통해 알 수 있을.. 2023. 10. 13.
[자바/Java] 제네릭(Generic) 제네릭(Generic)이란 자바를 조금씩 알아가고 있는 사람에겐 제네릭이라는 키워드는 생소할 수 있다. 하지만, 이미 수없이 우리는 제네릭을 마주해왔음을 이번 글을 통해 알 수 있을 것이다. 제네릭이란 데이터의 타입을 클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것을 의미한다. 즉, 사용자에 의해 어떤 타입으로 지정이 되는 해당 클래스의 메소드는 동일한 기능을 하는 것이다. 이러한 제네릭이 적용된 클래스는 익히 알고 있는 ArrayList, LinkedList 등이 있다. 예를 들어, ArrayList를 통해 특정 타입의 배열을 생성하고 싶을 때 다음과 같이 생성을 한다. // Integer 배열 ArrayList intList = new ArrayList(); // String .. 2023. 10. 12.
[자바/Java] Wrapper 클래스 Wrapper클래스란 자바의 자료형은 크게 기본 타입(primitive type)과 참조 타입(reference type)으로 나누어진다. 대표적으로 기본 타입은 char, int, float, double, boolean 등이 있고 참조 타입은 class, String등이 있는데 프로그래밍을 하다 보면 기본 타입의 데이터를 객체로 표현해야 하는 경우가 생긴다. 이 때에 기본 자료타입(primitive type)을 객체로 다루기 위해서 사용하는 클래스들을 래퍼 클래스(wrapper class)라고 한다. 자바는 모든 기본타입(primitive type)에 대해 객체를 생성할 수 있는 Wrapper 클래스가 있다. 이런 객체를 포장 객체라고도 하는데 그 이유는 기본 타입의 값을 내부에 두고 포장하기 때문입.. 2023. 10. 12.
[자바/Java] Time 패키지의 클래스 저번 글에서는 Data클래스에 대해서 알아보았다. https://codingralro.tistory.com/entry/%EC%9E%90%EB%B0%94Java-Date-%ED%81%B4%EB%9E%98%EC%8A%A4 [자바/Java] Date 클래스 Date 클래스 자바에서는 날짜와 시간을 다룰 수 있는 여러 메소드를 제공하는 Date 클래스가 있다. java.util.Date를 import 하여 해당 객체의 메소드를 사용할 수 있다. JDK 1.8(Java 8) 부터는 java.time.* 패키 codingralro.tistory.com 하지만 저번 글에서도 언급하였듯이 Date 클래스는 현재 대부분의 메소드가 사용을 권장하지 않고(deprecated) 있다.(공식문서를 보면...) Time 패키지(.. 2023. 10. 11.
[자바/Java] Date 클래스 Date 클래스 자바에서는 날짜와 시간을 다룰 수 있는 여러 메소드를 제공하는 Date 클래스가 있다. java.util.Date를 import 하여 해당 객체의 메소드를 사용할 수 있다. JDK 1.8(Java 8) 부터는 java.time.* 패키지를 통해 Date, Calendar 클래스를 충분히 대체할 수 있으나, 오랜 시간 써 온 클래스인 만큼 자바를 다루는 개발자라면 알아두면 유용하다.(But, Date 클래스의 경우 자바에서 사용을 지양을 하고 있기 때문에 Date 클래스는 기본 지식으로서 알아두기만...) 기본 생성자 Date 객체는 기본 생성자를 통해 생성할 수 있고 이 때에 객체에는 현재 날짜, 시간이 담긴다. //기본생성자를 통한 객체 생성 2023. 10. 10.
[자바/Java] 문자열3 - 정규표현식 정규표현식 정규표현식 혹은 정규식은 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용되는 언어이다. 정규표현식은 문자열 검색, 치환 등의 있어서 단순한 '문자열 비교'를 하는 것이 아니라 특정 패턴과 비교하고자 할 때 이를 단 몇 줄의 코드로 구현 가능하도록 도와준다. 특히, 사용자가 입력한 문자열 패턴 유효성 체크 등에 많이 사용된다. 주민등록번호, url, email, 비밀번호, ... 날짜포맷(yyyy-mm-dd) 전화번호(010-xxxx-xxxx) 자바에서는 정규표현식을 사용하기 위해서 java.util.regex 패키지에서 관련 클래스들을 제공하고 있다. Pattern 클래스 java.util.regex.Pattern 클래스는 matches() 메소드를 이용하여 특정 문자열이 주어진 정규표현식.. 2023. 10. 9.
728x90
반응형