본문 바로가기

전체 보기81

[JAVA] Optional의 개념과 사용법, 주의할 점 Optionaljava.util.Optional 클래스 optional이란?T 타입의 객체를 감싸주는 Wrapper 클래스T 타입의 참조 변수에 모든 타입의 객체를 저장할 수 있고복잡한 조건문 없이도 null값으로 인해 발생하는 예외를 처리할 수 있게 됨//String 타입의 참조변수(opt)에 문자열 객체 저장Optional opt = Optional.of("ABC")존재할 수도 있고, 존재하지 않을 수도 있는 객체, 즉 null이 될 수도 있는 객체를 감싸주는 Wrapper 클래스따라서 Optional 객체를 사용하면, 예상하지 못한 NPE(NullPointerException) 예외에 대해 간단히 회피할 수 있음즉, Optional 타입의 변수에 값을 저장하기 때문에,값이 null이더라도 바로 NP.. 2024. 5. 1.
[JAVA] 스트림이 동작할 때(생성, 중간 연산, 최종 연산) 사용하는 메서드 스트림이 동작할 때 사용하는 메서드 1. Stream 생성하기1) 배열 스트림 생성 : Arrays.stream()String [] strArr = {"A", "B", "C"};// 배열 스트림 생성Stream stream = Arrays.stream(strArr); 2) 컬랙션 스트림 생성 : .stream()List list = Arrays.asList("A", "B", "C");// 컬랙션 스트림 생성Stream stream = list.stream(); 3) 기본형 타입의 스트림 생성 range(a, b) : a부터 (b-1)까지의 범위IntStream stream = IntStream.range(1,7); // [1,2,3,4,5,6] rangeClosed(a, b) : a부터 (b)까지의 범.. 2024. 5. 1.
[JAVA] 스트림 API(특징, 스트림의 동작 흐름, 컬랙션과의 차이) Stream API(스트림 API)Stream API가 나오게 된 배경자바에서는 많은 양의 데이터를 저장하기 위하여 배열이나 컬랙션(Collection)을 사용하는데이렇게 저장된 데이터에 접근하기 위하여 반복문이나 반복자(iterator)를 사용하여 매번 새로운 코드를 작성해야함하지만 이렇게 작성된 코드는 길고 가독성이 떨어지며, 코드의 재사용이 거의 불가능함즉, 정형화된 처리 패턴을 가지지 못하여 데이터 종류에 따라 다른 방법으로 데이터를 처리해야 했음이러한 문제를 해결하기 위해 JDK8부터 Stream API을 도입함Stream API는 데이터를 추상화하여 다루므로, 다양한 방식으로 저장된 데이터를 조회하고 사용하기 위한 공통적인 방법을 제공함따라서, Stream API를 이용하면, 배열이나 컬랙션뿐.. 2024. 5. 1.
[JAVA] 데몬 스레드 알아보기(특징, 사용 방법) 데몬 스레드(Daemon Thread)개념자바는 일반적으로 여러 개의 스레드가 동시에 실행되면서 기능을 수행하는 멀티 스레드로 동작함이때 스레드들 중에 메인 스레드(Main Thread)가 종료하면 함께 종료되는 스레드가 있음이런 스레드를 데몬 스레드(Daemon Thread)라고 함대표적인 데몬 스레드로는 가비지 컬렉터, 워드프로세서의 자동 저장, 화면 자동 갱신 등이 있음동영상 플레이어를 실행하면 → 동영상 실행 스레드와 자막 실행 스레드가 같이 실행 되는데동영상 플레이어를 종료하면 → 동영상 실행 스레드와 자막 스레드가 같이 종료   특징일반 스레드(데몬 스레드가 아닌 스레드)의 작업을 돕는 보조적인 역할을 수행일반 스레드가 모두 종료되면, 데몬 스레드는 강제적으로 종료됨데몬 스레드를 생성하기 위해.. 2024. 4. 30.
[JAVA] 람다 표현식이란? (특징, 사용 문법) 람다 표현식이 나오게 된 배경자바는 모든 기능을 클래스 기반으로 작성그래서 메서드를 하나 표현하려고 해도 클래스를 정의하여, 클래스 내에서 메서드를 구현해야 했음이전에는 메서드를 클래스를 기반으로 구현해도 문제가 없었으나빅데이터나 인공지능이 출현하게 되면서, 대량의 데이터를 병렬로 빠르게 처리해하는 경우가 발생하여기존의 방식대로 프로그래밍을 하면 수행 속도 면에서 단점이 발생따라서, 자바에서도 이런 기능을 효율적으로 구현하기 위해, 함수형 프로그래밍 방식인 람다식을 도입함 [ 함수형 프로그래밍 ]- 함수형 프로그래밍은 선언적 프로그래밍- 람다 표현식를 지원하기 전의 자바는 완전한 명령형 프로그래밍이었음1. 명령형 프로그래밍 : 클래스에서 메서드를 정의하고, 필요할 때 그 메서드를 호출하는 명령하여 동작2.. 2024. 4. 30.
[JAVA] 자바 스레드 생성(Thread, Runnable) 메인 스레드(Main Thread)- 자바 프로그램에는 최소 1개의 스레드가 있는데, 이것이 메인 스레드- JVM이 자동으로 생성하는 스레드자바의 프로그램의 시작점은 main() 메서드이고이 main() 메서드를 수행되도록 하는 것이 스레드인데이 쓰레드가 메인 스레드모든 자바 프로그램은 JVM(자바 머신 러닝) 위에서 동작하는데,이  JVM은 프로그램의 시작점인 main() 메서드가 있는 클래스를 찾고 메인 스레드를 생성한 후에메인 스레드에서 main() 메서드를 호출하여, 작업이 수행되도록 함따라서, 메인 스레드는 JVM에 의해 자동으로 생성됨  JVM이  자동으로 생성하는 메인 스레드(Main Thread) 이외에 추가로 사용자 정의 스레드를 생성하여 구현해보자      쓰레드를 생성하는 2가지 방법.. 2024. 4. 29.