일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 인터페이스
- 졸리다
- 자바
- 변수
- 새벽공부
- MPA
- 코린이
- throws
- try-catch
- 예외 처리
- 메서드
- 초보개발자
- node.js
- 코딩
- exception
- 다형성
- 문자 단위 스트림
- 바이트 단위 스트림
- 백엔드
- Java
- FileInputStream
- 배열
- ArrayList
- SSR
- 보조 스트림
- 파이팅
- 개발자
- 인스턴스
- 자료형
- 상속
- Today
- Total
목록분류 전체보기 (122)
SHUSTORY
스트림 입출력은 외부 저장 장치나 네트워크와 연동해야 하기 때문에 장치에 따라 다르게 구현해야 한다. 자바는 장치에 따라 독립적이고 효율적인 입출력 기능을 제공한다. 자바에서 모든 입출력은 스트림을 통해 이루어진다. 입출력 장치는 매우 다양하기 때문에 장치에 따라 입출력 부분을 일일이 다르게 구현하면 프로그램 호환성이 떨어진다. 이런 문제 해결을 위해 자바는 입출력 장치와 무관하고 일관성 있게 프로그램을 구현할 수 있도록 일종의 가상 통로인 스트림을 제공한다. 자료를 읽어 들이려는 소스와 자료를 쓰려는 대상에 따라 각각 다른 스트림 클래스를 제공한다. 자바에서 입출력 기능을 사용하는 곳은 파일 디스크, 키보드, 모니터, 메모리 입출력, 네트워크 등이 있다. 입력 스트림과 출력 스트림 어떤 대상으로부터 자..
사용자 정의 예외 자바에서 제공하는 예외 처리 클래스 이외에 개발하는 프로그램에 따라 다양한 예외 상황이 발생할 수 있다. 예를 들어 어떤 사이트에 회원 가입을 할 때 다음과 같은 조건이 있다고 해보자. 아이디 값이 null 이어서는 안 된다. 아이디 값이 8자 이상 20자 이하로 만들어야 한다. 위 조건에 대한 예외 클래스를 직접 만들어 예외를 발생시키고 예외 처리 코드를 구현할 수 있다. 사용자 정의 예외 클래스 구현하기 사용자 정의 예외 클래스 구현 시에는 기존 JDK에서 제공하는 예외 클래스 중 가장 유사한 클래스를 상속받는 것이 좋다. 만약 유사한 예외 클래스를 잘 모르겠다면 가장 상위 클래스인 Exception 클래스에서 상속받도록 한다. Exception 클래스에서 상속받아 코드를 구현하였다..
예외 처리를 미루는 throws 사용하기 FileInputStream을 생성했을 때 예외 처리 방법에는 두 가지가 있었다. 14-2에서는 Surround with try/catch에 대해 알아보았고, 이제 Add throws declaration에 대해 살펴보자. 예외를 해당 메서드에서 처리하지 않고 미룬 후 메서드를 호출하여 사용하는 부분에서 예외를 처리하는 방법이다. loadClass( ) 메서드는 FileInputStream을 열고 Class를 동적으로 로딩하여 반환한다. 파일을 열 때는 FileNotFoundException이 발생할 수 있고, 클래스를 로딩할 때는 ClassNotFoundException이 발생할 수 있다. throws를 통해 두 예외를 메서드가 호출될 때 처리하도록 미루었다. ..
try-catch문 예외를 처리하는 가장 기본 문법인 try-catch문의 형식은 다음과 같다. try 블록에는 예외가 발생할 가능성이 있는 코드를 작성한다. 만약 try 블록 안에서 예외가 발생하면 바로 catch 블록이 수행된다. catch문의 괄호 ( ) 안에 쓰는 예외 타입은 예외 상황에 따라 달라진다. try-catch문 사용하기 간단한 배열 예제로 예외가 발생하는 상황을 만들고 그에 따른 예외 처리를 해보자. 다음은 요소가 5개인 정수형 배열을 만들고 총 6개의 숫자를 배열에 넣었을 때 발생하는 예외 상황이다. RuntimeException의 하위 클래스인 ArrayIndexOutOfBoundsException으로 처리하였다. 이 클래스는 예외 처리를 하지 않아도 컴파일 오류가 나지 않기 때문..
오류란? 프로그램에서 오류가 발생하는 상황은 두 가지가 있다. 프로그램 작성 중 실수로 발생하는 컴파일 오류와 실행 중인 프로그램이 의도하지 않은 동작을 하거나 프로그램이 중지되는 실행 오류이다. 실행 오류 중 프로그램을 잘못 구현하여 의도한 바와 다르게 실행되어 생기는 오류를 버그라고 한다. 컴파일 오류는 발생한 컴파일 오류를 모두 수정해야 프로그램이 정상적으로 실행되므로 개발 환경에서 대부분 문법적으로 오류의 원인을 알 수 있다. 하지만 실행 오류의 경우 예측하기 어려운 경우가 많고, 프로그램이 비정상 종류되며 갑자기 멈춰 버린다. 실제 서비스를 제공하고 있는 프로그램의 경우 실행 중 오류가 발생하면 그 상황을 재현하여 테스트해야 하는데, 실제 시스템이나 서비스가 운영 중인 경우 쉽지 않기 때문에 로..
함수형 프로그래밍과 람다식 자바는 객체 기반 프로그램 구현 방식으로, 어떤 기능이 필요할 경우 클래스를 만든 후 클래스 내부에 기능을 구현한 메서드를 만들고 해당 메서드를 호출한다. 그런데 프로그래밍 언어 중 함수의 구현과 호출만으로 프로그램을 만들 수 있는 프로그래밍 방식이 있는데, 이를 '함수형 프로그래밍'이라고 한다. 자바에서도 함수형 프로그래밍을 지원하는데, 이를 '람다식'이라고 한다. 함수가 입력받은 자료 외의 외부 자료에 영향을 미치지 않기 때문에 여러 자료를 동시에 처리하는 병렬 처리에 적합하며, 안정되고 확장성 있는 프로그램을 개발할 수 있는 장점이 있다. 람다식 구현하기 람다식은 앞서 구현했던 프로그래밍 방식과는 다르다. 간단히 설명하자면, 함수 이름이 없는 익명 함수를 만드는 것으로, ..
내부 클래스 정의와 유형 내부 클래스는 '클래스 내부에 선언한 클래스'로, 내부에 클래스를 선언한 이유는 대개 이 클래스와 외부 클래스가 밀접한 관련이 있거나 다른 클래스와 협력할 일이 없는 경우이다. 내부 클래스는 선언하는 위치나 예약어에 따라 크게 다음 네 가지로 나뉜다. 인스턴스 내부 클래스 / 정적(static) 내부 클래스/ 지역(local) 내부 클래스/ 익명(anonymous) 내부 클래스 내부 클래스는 유형에 따라 만드는 방법이 다르며 클래스 내부에 선언할 수 있는 변수 유형과 사용할 수 있는 외부 클래스 변수 유형도 다르다. 인스턴스 내부 클래스 인스턴스 내부 클래스는 인스턴스 변수를 선언할 때와 같은 위치에 선언하며, 외부 클래스 내부에서만 생성하여 사용하는 객체를 선언할 때 쓰인다. ..
Map 인터페이스 Map 인터페이스는 자료를 쌍으로 관리하는 데 필요한 메서드가 정의되어 있다. key-value 쌍으로 이루어진 객체의 key 값은 유일하며 value 값은 중복될 수 있다. Map 인터페이스를 구현한 클래스는 내부적으로 해시 알고리즘에 의해 구현되어 있다. HashMap 클래스 HashMap은 Map 인터페이스를 구현한 클래스 중 가장 많이 사용한다. HashMap에서 자료를 관리하는 방식은 해시 방식으로, 해시 방식의 자료를 저장하는 공간을 해시 테이블이라고 한다. key 값이 정해지면 그에 대응하는 해시 테이블의 저장 위치가 정해지는데 이런 위치를 계산하는 함수가 '해시 함수'이다. 해시 함수를 어떻게 만드느냐는 key 값 특성이나 개발 프로그램 성격에 따라 다를 수 있다. 그런데..
Set 인터페이스 순서와 상관없이 중복을 허락하지 않는 경우 Set 인터페이스를 구현한 클래스를 사용한다. Set 인터페이스를 구현한 대표 클래스에는 HashSet, TreeSet이 있다. HashSet 클래스 HashSet 클래스는 집합 자료 구조를 구현하며 중복을 허용하지 않는다. 예제01에서 볼 수 있듯이 hashSet에 동일한 자료가 추가되지 않는다. 또한 ArrayList는 순서가 있는 자료 구조이기 때문에 추가한 순서대로 출력되지만, HashSet은 자료가 추가된 순서와 상관 없이 출력된다. 회원을 삭제할 때 ArrayList에서는 get(i) 메서드를 사용해 i번째에 해당하는 항목을 삭제한 반면, HashSet에서는 해당하는 아이디를 가진 회원을 찾기 위해 Iterator를 사용한다. 메서드..
* 간단한 회원 관리 프로그램을 만들면서 컬렉션 프레임워크에서 제공하는 각 클래스를 실습해보자. 다음 Member 클래스는 앞으로 실습할 때 계속 사용할 것이다. List 인터페이스 List 인터페이스에는 객체를 순서에 따라 저장하고 유지하는 데 필요한 메서드가 선언되어 있다. 대표적인 순차 자료 구조에는 배열이 있으며, 자바에서 배열을 구현한 대표 클래스로는 ArrayList, Vector가 있으며 배열과 구현 방식은 다르지만 순차 자료 구조를 구현한 LinkedList가 있다. ArrayList 클래스 객체 순서를 기반으로 순차적으로 자료를 관리하는 프로그램을 구현할 때 사용한다. ArrayList를 활용한 회원 관리 프로그램 구현하기 ArrayList를 활용한 MemberArrayList 클래스에 ..