본문 바로가기
728x90

JAVA/기초17

[JAVA 기초] 15 자바 입출력 (2) [完] *Reader 문자 단위로 읽는 스트림 중 최상위 스트림으로 다음 하위 클래스를 주요 사용 스트림 클래스 설명 FileReader 파일에서 문자 단위로 읽는 스트림 클래스 InputStreamReader 바이트 단위로 읽은 자료를 문자로 변환해 주는 보조 스트림 클래스 BufferedReader 문자로 읽을 때 배열을 제공하여 한꺼번에 읽을 수 있는 기능을 제공해 주는 보조 스트림 메서드 설명 int read() 파일로부터 한 문자를 읽고 반환 int read(char[] buf) 파일로부터 buf 배열에 문자를 읽음 int read(char[] buf, int off, int len) 파일로부터 buf 배열에 off 위치에서부터 len 개수만큼 문자를 읽음 void close() 스트림과 연결된 파일 .. 2022. 8. 23.
[JAVA 기초] 15 자바 입출력 (1) *스트림 입출력 장치는 다양하기 때문에 장치에 따라 입출력을 다르게 구현하면 호환성이 떨어지는 문제가 생김 ->이를 해결하기 위해 자바는 입출력 장치와 무관하고 일관성 있게 프로그램을 구현할 수 있도록 일종의 가상 통로인 스트림을 제공 네트워크에서 유래된 용어로 자료 흐름이 물이 흐름과 같다는 의미에서 사용함 자바의 모든 입출력은 스트림을 통해 이루어짐 *입력 스트림과 출력 스트림 - 입력 스트림 : 어떤 대상으로부터 자료를 읽어 들일 때 사용하는 스트림. 동영상 파일에서 자료를 읽을 때 사용 - 출력 스트림 : 편집 화면에 사용자가 쓴 글을 파일에 저장할 때 사용 스트림은 단방향으로 자료가 이동하기 때문에 입력과 출력을 동시에 할 수 없음 - 입력 스트림 : ImputStream이나 Reader로 끝나.. 2022. 8. 22.
[JAVA 기초] 14 예외 처리 *오류 - 실행 오류 : 실행 중인 프로그램이 의도하지 않은 동작을 하거나 프로그램이 중지되는 오류 - 버그 : 실행 오류 중 프로그램을 잘못 구현하려 의도한 바와 다르게 실행되어 생기는 오류 *오류와 예외 - 오류 : 프로그램에서 제어할 수 없는 시스템 오류 예) 사용 가능한 동적 메모리가 없는 경우나 스택 메모리의 오버플로가 발생한 경우 - 예외 : 프로그램에서 제어할 수 있는 오류 예) 프로그램에서 파일을 읽어 사용하려는 게 파일이 없는 경우 네트워크로 데이터를 전송하려는데 연결이 안 된 경우, 배열 값을 출력하는데 배열 요소가 없는 경우 *오류 클래스 오류 클래스는 Throwable 클래스에서 상속 받음 *예외 클래스의 종류 위는 하위 클래스중 사용 빈도가 높은 클래스 위주의 계층도다. 최상위 클.. 2022. 8. 21.
[JAVA 기초] 13 내부 클래스, 람다식, 스트림 *내부 클래스 - 내부 클래스 : 클래스 내부에 선언한 클래스 내부에 클래스를 선언하는 이유는 외부 클래스와 밀접한 관련이 있기 때문 *인스턴스 내부 클래스 인스턴스 변수를 선언할 때와 같은 위치에 선언 외부 클래스 내부에서만 생성하여 사용하는 객체를 선언할 때 사용 외부 클래스 생성 후 생성되어 생성전에는 인스턴스 내부 클래스를 사용할 수 없음 *정적 내부 클래스 static 예약어 사용. 외부 클래스 생성과 무관하게 내부 클래스 사용할 수 있음 정적 메서드에서는 인스턴스 변수를 사용할 수 없음 정적 내부 클래스에서 일반/정적 메서드 변수 사용 변수 유형 일반 메서드 정적 메서드 외부 클래스의 인스턴스 변수 X X 외부 클래스의 정적 변수 O O 정적 내부 클래스의 인스턴스 변수 O X 정적 내부 클래.. 2022. 8. 19.
[JAVA 기초] 12 컬렉션 프레임워크 (2) *Set 인터페이스 순서와 상관없이 중복을 허용하지 않는 경우에 사용 *HashSet 클래스 집합 자료 구조. 중복 허용 X boolean remove(Object o) : 매개변수로 받은 객체를 삭제하고 삭제 여부를 true, false로 반환 *TreeSet 클래스 자료 중복 허용 X. 결과 값 정렬 *이진 검색 트리 트리 : 자료 사이의 계층 구조를 나타내는 자료 구조 노드 : 각 자료가 들어가는 공간 왼쪽 자식 노드는 부모 노드보다 항상 작은 값을 가짐 오른쪽 자식노드는 부모 노드보다 항상 큰 값을 가짐 *Comparable 인터페이스와 Comparator 인터페이스 기준 값을 가지고 오름차순 정렬을 구현하는 인터페이스 - Comparable 인터페이스 : 자기 자신과 전달받은 매개변수를 비교 -.. 2022. 8. 19.
[JAVA 기초] 12 컬렉션 프레임워크 (1) *제네릭(Generic) - 제네릭 프로그래밍 : 어떤 값이 하나의 참조 자료형이 아닌 여러 참조 자료형을 사용할 수 있도록 프로그래밍하는 것 참조 자료형이 변환될 때 컴파일러가 검증하여 안정적 *제네릭의 필요성 여러 참조 자료형이 쓰일 수 있는 곳에 특정한 자료형을 지정하지 않고 클래스나 메서드를 정의한 후 사용하는 시점에 어떤 자료형을 사용할 것인지 지정하는 방식 *제네릭 클래스 정의하기 public class GenericPrinter{ private T material; public void setMeterial(T material) { this.material = material; } public T getMeterial(){ return material; } } 여러 자료형으로 바꾸어 사용할 .. 2022. 8. 18.
[JAVA 기초] 11 기본 클래스 *java.lang 패키지 String, Integer와 같은 많이 사용하는 클래스들이 포함된 패키지 컴파일할 때 자동으로 Import문이 추가됨 *Object 모든 자바 클래스의 최상위 클래스. 모든 클래스는 Object 클래스를 상속 받음 *toString 메서드 String toString() : 객체를 문자열로 반환 클래스이름@해시코드값 *equals() 메서드 boolean equals(Object obj) : 두 인스턴스가 동일한지 여부를 반환 인스턴스 주소를 비교함 *hashCode() 메서드 int hashCode() : 객체의 해시 코드 값을 반환 *clone() 메서드 Object clone() : 객체를 복제하여 동일한 멤버 변수 값을 가진 새로운 인스턴스를 생성 객체 원본을 유지해 .. 2022. 8. 16.
[JAVA 기초] 10 인터페이스 *인터페이스 - 인터페이스 : 클래스 혹은 프로그램이 제공하는 기능을 명시적으로 선언하는 역할 추상 메서드와 상수로만 이루어져 있음 *implements 예약어 - implements : 인터페이스에 선언한 기능을 클래스가 구현한다는 의미 클래스에서 인터페이스를 구현할 때 해당 인터페이스 내의 추상 메서드를 구현하거나 추상 클래스로 만들어야 한다 *인터페이스 구현과 형 변환 인터페이스도 마찬가지로 상속 관계에서 하위클래스는 상위 클래스 자료형으로 묵시적 형 변환할 수 있다 상위 클래스형으로 선언한 변수에서는 상위 클래스의 메소드만 사용할 수 있다 *인터페이스의 역할 클라이언트 프로그램에 어떤 메서드를 제공하는지 미리 알려주는 명세 또는 약속의 역할을 한다 구현 코드 전체를 보지 않고 인터페이스의 선언부만.. 2022. 8. 16.
[JAVA 기초] 09 추상 클래스 * 추상 클래스 - 추상 클래스 : 구체적이지 않은 클래스. abstract 예약어 사용 추상 클래스는 항상 추상 메서드를 포함한다 추상 메서드는 수현 코드가 없다 = 함수의 몸체(body)가 없다 abstract int add(int x, int y); *추상 메서드 추상 메서드가 속한 클래스는 추상 클래스로 선언해야 한다 추상 클래스를 상속받은 클래스는 추상 메서드를 모두 구현하거나 추상 클래스로 만들어야 한다 구현이 안된 추상 메서드를 포함하면 추상 클래스이다 *추상 클래스를 만드는 이유 - 추상 클래스는 인스턴스로 생성할 수 없음 - 추상 클래스는 상속을 하기 위해 만듦 구현된 메서드 : 하위 클래스에서 공통으로 사용할 구현 코드. 하위 클래스에서 재정의할 수도 있음 추상 메서드 : 하위 클래스가.. 2022. 8. 15.
728x90