공부 STUDY/JAVA

    [JAVA] 자바 입출력과 스트림 - (3) | 바이트 단위 스트림 - OutputStream

    [JAVA] 자바 입출력과 스트림 - (3) | 바이트 단위 스트림 - OutputStream

    바이트 단위 스트림 - OutputStream 바이트 단위로 쓰는 스트림 중 최상위 스트림이다. 자료의 출력 대상에 따라 다른 스트림을 제공한다. FIleOutputStream - 바이트 단위로 파일에 자료를 쓴다. ByteArrayOutputStream - 바이트 배열에 바이트 단위로 자료를 쓴다 FilterOutputStream - 기반 스트림에서 자료를 쓸 때 추가 기능을 제공하는 '보조 스트림'의 상위 클래스이다. 사용하는 대표 메서드로는 write() 메서드가 있다. 반환값은 void다. 출력버퍼를 강제로 비워 자료를 출력하는 flush()버퍼와 출력 스트림과 연결된 대상 리소스를 닫는 close() 메서드도 있다. FileOutputStream 파일에 바이트 단위의 자료를 출력하기 위햐 가장 ..

    [JAVA] 자바 입출력과 스트림 - (2) | 바이트 단위 스트림 - InputStream

    [JAVA] 자바 입출력과 스트림 - (2) | 바이트 단위 스트림 - InputStream

    바이트 단위 스트림 1) InputStream 바이트 단위로 읽는 스트림 중 최상위 스트림이다. InputStream은 추상 메서드를 포함한 추상 클래스로서 하위 스트림 클래스가 상속받아 각 클래서 역할에 맞게 추상 메서드의 기능을 구현한다. 그렇다면 주로 사용하는 하위 클래스 종류를 알아보자. FileInputStream - 파일에서 바이트 단위로 자료를 읽는다. ByteArrayInputStream - 바이트 배열 메모리에서 바이트 단위로 자료를 읽는다. FilterInputStream - 기반 스트림에서 자료를 읽을 때 추가 기능을 제공하는 '보조 스트림'의 상위 클래스이다. InutStream은 바이트 자료를 읽기 위해 int형을 반환하는 read()메서드를 제공한다. 한 바이트를 읽는데 왜 반환..

    [JAVA] 자바 입출력과 스트림 - (1) | scanner 클래스와 Console 클래스에대해 알아보자

    [JAVA] 자바 입출력과 스트림 - (1) | scanner 클래스와 Console 클래스에대해 알아보자

    입력과 출력은 프로그램의 가장 기본 기능이지만, 외부 저장 장치나 네트워크와 연동해야 하기에 장치에 따라 다르게 구현해야 한다. 자바는 장치에 따라 독립적인 입출력 기능을 제공한다. 스트림이란? 자바에서 모든 입출력은 스트림을 통해서 이루어진다. 스트림이라는 용어는 자료의 흐름이 물의 흐름과 같다는 의미에서 사용되었다. 입출력 장치는 매우 다양하기 때문에 이를 각각 다르게 구현하면 당연히 프로그램 호환성이 떨어진다. 이런 문제를 해결하기 위해 자바는 입출력 장치와 무관하고 일관성 있게 프로그램을 구현할 수 있도록 가상 통로인 스트림을 제공한다. 자료를 읽어들이는 소스와 대상에 따라 각각 다른 스트림 클래스를 제공한다. 자바에서 입출력 기능을 사용하는 곳은 파일 디스크, 키보드, 모니터, 메모리 입출력, ..

    [JAVA] 사용자 정의 예외 클래스 구현하기 | 아이디 설정 조건에서 예외 발생에대한 클래스를 구현해보자! | 사용자 정의 예외

    자바에서 제공하는 예외 처리 클래스 외에 개발하는 프로그램에 따라 다양한 예외 상황이 발생한다. 예를 들어 아이디 생성조건을 생각해보면, 아이디는 null값이면 안 되고, 8자 이상 20자 이하로 만들어야하는 조건이 필요할 수 있다. 이러한 조건을 만족하지 않는 예외 발생을 예방하기위해 예외 클래스를 직접 만드든 것이 필요하다. 지금부터 어떻게 구현하는지 알아보도록 하자. 사용자 정의 예외 클래스 구현하기 사용자 정의 예외 클래스를 구현할 떄에는 기존 JDK에서 제공하는 예외 클래스 중 가장 유사한 클래스를 상속받는 것이 좋다. 유사한 예외 클래스가 무엇인지 모르겠다면 Exception클래스에서 상속받으면 된다. package exception; public class IDFormatException e..

    [JAVA] 자바의 예외처리(Exception) | try-catch-finally 문, try-with-resource 문

    [JAVA] 자바의 예외처리(Exception) | try-catch-finally 문, try-with-resource 문

    예외처리(Exception) 소프트웨어를 사용하다보면 여러가지 오류상황이 발생하게 된다. 아무리 잘 만든 소프트웨어라고 하더라도 예외는 얼마든지 발생할 수 있다. 이런 상황이 생기더라도 갑자기 종료되는 상황이 일어나지 않도록 예외처리를 하는 것이 중요한데, 예외 처리 방법에 대해 알아보자! 예외 클래스 오류란? 프로그램에서 오류가 발생하는 상황은 두 가지가 있다. 1. 컴파일 오류 - 코드 작성중 실수로 발생함 2. 실행오류 - 실행중인 프로그램이 의도하지 않은 동작을 하거나 중지되는 오류(런타임 에러) 실행 오류 중 프로그램을 잘못 구현하여 의도한 바와 다르게 실행되어 발생하는 오류를 버그라고 한다. 컴파일 오류같은 경우 개발환경에서 대부분 원인을 알 수 있다. 그러나 프로그램 실행중 발생하는 오류는 ..

    [JAVA] 람다식이란? 람다식 사용 방법에대해 알아보자!

    [JAVA] 람다식이란? 람다식 사용 방법에대해 알아보자!

    람다식이란? 람다식이란 "식별자없이 실행가능한 함수"이다. 함수인데 함수를 따로 만들지 않고 코드한줄에 함수를 써서 그것을 호출하는 방식이라고 생각하시면 된다. 함수적 프로그래밍을 위해 자바 8부터 람다식(Lambda Expressions)을 지원하면서 기존의 코드 패턴이 많이 달라졌다. 람다식 사용법 (매개변수, ...) -> { 실행문 ... } (매개변수, ...)는 오른쪽 중괄호 { } 블록을 실행하기 위해 필요한 값을 제공하는 역할을 한다. 매개 변수의 이름은 개발자가 자유롭게 지정할 수 있으며 인자타입도 명시하지 않아도 된다.-> 기호는 매개 변수를 이용해서 중괄호 { } 바디를 실행한다는 뜻으로 해석하면 됨. 예제 @FunctionalInterface interface Say{ int som..

    [JAVA] 스트림(Stream)이란 무엇일까?

    [JAVA] 스트림(Stream)이란 무엇일까?

    Stream의 특징 기능적인 측면에서 스트림은 컬렉션(배열 포함)의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자이다. import java.util.*; public class Main { public static void main(String[] args) { List list = Arrays.asList(1, 2, 3); Iterator it = list.iterator(); while (it.hasNext()) { int num = it.next(); System.out.println(num); } } } 정수가 있는 리스트를 하나씩 순회하면서 값을 출력하는 단순한 코드이다. 이를 스트림으로 바꿔 보자. import java.util.*; import java.util.s..

    [JAVA] 내부 클래스(inner class)와 익명 클래스(anonymous class)에대해 알아보자

    [JAVA] 내부 클래스(inner class)와 익명 클래스(anonymous class)에대해 알아보자

    내부 클래스(inner class)는 사실 클래스 내에 선언된다는 점을 제외하고는 일반적인 클래스와 다르지 않다. 내부 클래스에는 인스턴스 클래스, 스태틱 클래스, 지역 클래스, 익명 클래스의 종류로 나눌 수 있다. 목차 1. 내부 클래스란? 2. 내부 클래스의 종류와 특징 3. 내부 클래스의 선언 4. 내부 클래스의 제어와 접근성 5. 익명 클래스(anonymous class) 1. 내부 클래스란? 내부 클래스는 클래스 내에 선언된 클래스입니다. 한 클래스를 다른 클래스의 내부 클래스로 선언하면 두 클래스의 멤버들 간에 서로 쉽게 접근할 수 있다는 장점과 외부에는 불필요한 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다는 장점을 얻을 수 있습니다. 내부 클래스의 장점 내부 클래스에서 외부 클래스의 멤..

    [자바/ 자료구조] 컬렉션 프레임워크 공부 전, 자료구조를 간단히 정리해보자!

    [자바/ 자료구조] 컬렉션 프레임워크 공부 전, 자료구조를 간단히 정리해보자!

    컬렉션 프레임워크 공부 전 자료구조 개념 정리의 필요성을 느꼈다! 지금부터 간단하고 확실하게 개념을 짚고 넘어가보자! 배열 Array 같은 형의 데이터 타입을 메모리에 저장하는 선형적 자료구조 논리적 구조와 물리적 구조가 동일하다. -> 배열은 Fixed-length이다. (고정된 길이) -> 인덱스 연산이 가능하다. 데이터의 크기 만큼의 오프셋으로 요소의 위치 계산이 가능하다. 논리적, 물리적 주소가 동일하니까 계산 가능! -> Insert / Delete 에 필요한 연산이 배열 전체 요소의 개수에 의존한다. (n개에 Dependent 하다.) / O(n) -> ArrayList / Vector 연결 리스트 Linked List 데이터와 링크로 구성되어 있다. -> IO가 많이 일어나는 경우 사용하면 ..

    [JAVA] Optional이란? | Optional 개념 및 사용법

    1. Optional이란? Optional 개념 및 사용법 [ NPE(NullPointerException) 이란? ] 개발을 할 때 가장 많이 발생하는 예외 중 하나가 바로 NPE(NullPointerException)이다. NPE를 피하려면 null 여부를 검사해야 하는데, null 검사를 해야하는 변수가 많은 경우 코드가 복잡해지고 번거롭다. 그래서 null 대신 초기값을 사용하길 권장하기도 한다. List names = getNames(); names.sort(); // names가 null이라면 NPE가 발생함 List names = getNames(); // NPE를 방지하기 위해 null 검사를 해야함 if(names != null){ names.sort(); } [ Optional이란? ]..