js에서 펼침연산자와 같은 역할을 해준다.

문자열 → 숫자로 변환


## 1교시 ~ 3교시
스트림
IntStream 은 primitive 타입들이 들어있는 스트림
Stream<Integer>는 Wrapper 객체들이 들어있는 스트림
##### Java의 문자 스트림과 바이트 스트림
문자 스트림의 이름은 일반적으로 Reader/Writer로 끝나고 바이트 스트림의 이름은 InputStream/OutputStream으로 끝납니다.
일반적으로 효율성을 위해 버퍼링된 판독기/작성기와 함께 사용합니다
더 이상 사용하지 않는 경우 항상 스트림을 닫는 것이 좋습니다
문자 스트림이든 바이트 스트림이든 둘 다 Byte 단위로 처리하는 것은 마찬가지
각 스트림은 데이터를 가공하는 방법이 다를 뿐 자료의 입출력을 도와주는 중간 역할임은 동일
스트림은 메모리의 원시 데이터를 프로그래머가 사용할 수 있는 데이터로 바꾸어주는 역할
입력 스트림: 소스에서 데이터를 읽습니다.
출력 스트림: 대상에 데이터를 씁니다.
#### 바이트 스트림 대신 문자 스트림을 언제 사용해야 합니까?
문자 스트림은 2바이트의 유니코드 문자 단위로 입출력하는 스트림
메모리 상의 byte를 유니코드 문자로 변환해주는 역할
오디오와 이미지는 문자가 아니고, 바이너리 정보이기 때문에 문자 스트림을 이용해서 읽거나 쓸 수 없습니다.
Java에서는 문자가 유니코드 규칙을 사용하여 저장됩니다. 문자 스트림은 텍스트 파일을 처리할 때 유용합니다. 이러한 텍스트 파일은 문자별로 처리될 수 있습니다. 문자 크기는 일반적으로 16비트입니다.
#### 문자 스트림보다 바이트 스트림을 언제 사용해야 합니까?
바이트 스트림은 바이트 단위로 읽습니다. 바이트 스트림은 바이너리 파일과 같은 원시 데이터를 처리하는 데 적합합니다.
#### 버퍼
데이터를 일시적으로 저장하기 위한 메모리
입출력 장치는 주 기억장치와는 다르게 매우 느리기 때문에 입출력 장치가 자주 동작할 수록 효율이 떨어지고, 입출력 실행 속도가 떨어지게 됩니다.
이러한 입출력을 좀 더 효율적으로 수행하기 위해서 버퍼를 사용
Q. Java에서 Stream.of()와 Arrays.stream() 메서드의 차이점
1. 다른 반환 유형 : 기본 배열(int[], long[] 등)의 경우 Arrays.stream()과 Stream.of()는 다른 반환 유형
정수 배열을 전달하는 경우 Stream.of() 메서드는 Stream을 반환하는 반면 Arrays.stream()은 IntStream을 반환
2. Stream.of()는 flatten 이 필요하지만 Arrays.stream()은 필요하지 않습니다.
primitive type의 스트림을 처리하는 데 사용되는 이상적인 클래스는 원시 스트림 유형(IntStream, LongStream 등)입니다.
따라서 Stream.of()는 할당전에 명시적으로 원시 스트림으로 flattening해야 합니다
3. Stream.of()는 제네릭인 반면 Arrays.stream은 제네릭이 아닙니다
Arrays.stream() 메서드는 int[], long[], double[] 유형의 기본 배열에만 작동하며 각각 IntStream, LongStream, DoubleStream을 반환
다른 기본 유형의 경우 Arrays.stream()은 작동하지 않습니다.
반면 Stream.of()는 T(Stream) 유형의 제네릭 Stream을 반환합니다.
따라서 모든 유형과 함께 사용할 수 있습니다
```java
// Java program to demonstrate need of flattening
// Stream.of() method returned type for primitive arrays
import java.util.*;
import java.util.stream.*;
class Demo {
public static void main(String[] args)
{
// Creating an integer array
int arr[] = { 1, 2, 3, 4, 5 };
// --------- Using Arrays.stream() ---------
// to convert int array into Stream
IntStream intStream = Arrays.stream(arr);
// Displaying elements in Stream
intStream.forEach(str -> System.out.print(str + " "));
// --------- Using Stream.of() ---------
// to convert int array into Stream
Stream<int[]> stream = Stream.of(arr);
// ***** Flattening of Stream<int[]> into IntStream *****
// flattenning Stream<int[]> into IntStream
// using flatMapToInt()
IntStream intStreamNew = stream.flatMapToInt(Arrays::stream);
// Displaying elements in IntStream
intStreamNew.forEach(str -> System.out.print(str + " "));
}
}