본문 바로가기

JAVA

(34)
보조스트림 : Data 1. DataInput/OutputStream 입력한 데이터를 해당 타입(자료형)에 맞게 저장하고 출력하는 보조스트림 (기본 자료형 별 데이터 읽고쓰기가 가능하도록 기능 제공) 각각의 자료형을 byte를 쪼개어 담고, 출력시에 해당 byte기준으로 꺼내서 반환한다. ex)입력값: "안녕하세요" 10 2000 'g' 공간 크기: 참조주소값 1byte 4bye 2byte 이번에는 Try Catch With Resource 구문으로 입출력을 한번에 처리해 보았다. 에러처리문 중에 EOFException은 더 이상 읽어올 수 없을때 발생하는 오류로, catch에서 잡아서 파일을 다읽어오면 다음에 수행할 문장을 지정하고 싶을 때 사용 할 수있다. 있다.(메소드를 실행) Data 보조 스트림은 write/read시..
보조스트림 : Byte TO Char 1. OutputStreamWriter/ InputStreamReader 바이트 스트림을 문자 스트림으로 바꿔주는 보조 스트림. Reader와 Writer는 문자 단위로 입출력을 하기 때문에 데이터가 문자인 경우 바이트 기반 스트림보다 편리하게 사용 (소스 스트림이 바이트 기반 스트림이지만 데이터가 문자일 경우 사용.) 입력: 바이트로 들어온 것을 보조스트림을 통해 문자로 변경 바이트(InputStream) -----> InputStreamReader(Reader)----> 문자 출력: 문자로 작성한 것을 보조스트림을 통해 바이트로 변경 문자 ---->OutputStreamWriter(Writer)-------->바이트 (OutputStream) (주의 점 소스 스트림이 바이트 기반 스트림일 경우 사용하..
보조스트림 : Buffered 1. 보조스트림 이란 스트림의 그냥을 향상시키거나 새로운 기능을 추가하기 위해 사용 보조스트림은 실제 데이터를 주고 받는 스트림이 아니기 때문에 입출력 처리 불가(기반스트림 반드시 필요) ---->입력 기반스트림--->보조스트림--->프로그램 -----> 보조스트림 -------> 출력 기반스트림----> 기반 스트림을 먼저 생성한후 이를 이용하여 보조스트림 생성 2.보조스트림 종류 입출력 성능(BufferedInputStream/BufferedOutputStream), 문자 변환(InputStreamReader/OutputStreamWriter), 기본 데이터 타입 출력(DataInputStream, DataOutputStream), 객체 입출력(ObjectInputStream/ObjectOutputS..
FileReader/Writer 문자 기반인 Reader와 Writer를 보자 문자기반인 Reader와 Writer는 2byte씩 저장하고 읽어 온다. 저장되는 방식을 제외한 형식은 OutputStream에서 보았던것과 같다. trycatch문을 try catch with resource 문으로 변경해 본다(inputStream/OutputStream/Reader 도 형식은 동일하다) 형식은 try(입/출력 스트림){ }catch(익셉션명 변수명){ } 이다. 자동으로 close() 를 해주기 때문에 finally문을 생략해도 되게 되었다. 위의 Writer를 실행하면 파일에 저장되는 값이다. 다음은 Reader를 보자 여기서도 .read()의 마지막의 반환 값은 -1 이지만 문제는 파일크기가 파일 내의 문서의 길이가 아니라는 것이다...
FileInput/OutputStream 숫자에 해당하는 문자값으로 저장되는 것을 볼수 있다.(0,1,2의 경우 변수가 저장될 때 형변환이 된 것이다) 저장한 불러올 경우 문자에 해당하는 코드값으로 불러온다는 걸 알 수있다. 즉 입력했던 것을 문자로 보려면 char형 변환이 필요하다. (여기서 문제가 생긴다) byte 기반이기 때문에 127이 넘어가는 경우 오버플로우가 일어나 파일이 깨져 버린다. 이런 문제 때문에 문자 기반인 Reader가 생기게 되었다. 마지막으로 while문으로 출력하는 방법을 보자 코드와 문자를 비교해보면, 오버플로우가 일어나면서 파일이 깨진 것을 알 수있다.
IO(입출력) 1. 입출력(IO)이란 Input과 Output의 약자 컴퓨터 내부 또는 외부 장치와 프로그램간의 데이터를 주고받는 것. 장치와 입출력을 위해서는 하드웨어 장치에 직접 접근이 필요한데 다양한 매체에 존재하는 데이터들을 사용하기 위해 입출력 데이터를 처리할 공통적인 방법으로 스트림을 이용한다. 출발지 입력스트림 프로그램 출력스트림 도착지 키보드 파일 프로그렘 --------------------> 도착지 출발지 --------------------> 모니터 파일 프로그램 Input : 출발지 -> 입력스트림 -> 프로그램 (데이터가 들어옴) Output : 프로그램 -> 출력스트림 -> 도착지 (데이터가 나감) (방향은 단방향으로만 가능하다, 입력이 끝났다고 입력 스트림을 출력 스트림으로 쓰지 않는다) 2..
예외처리 1.오류란. 프로그램 수행 시 치명적 상황이 발생하여 비정상 종료 상황이 발생 한 것 (=에러) 1)오류의 종류 ㄱ)컴파일 에러 : 소스 상의 문법 에러, 소스 구문을 수정하여 해결 ㄴ)런타임 에러 : 입력 값이 틀렸거나, 배열의 인덱스 범위를 벗어났거나, 계산식의 오류 등 (if문으로 처리가 가능한 오류) ㄷ)시스템 에러 : 컴퓨터 오작동으로 인한 에러(소스 구문으로 해결 불가) 2.예외(Exception) 소스 수정으로 해결가능한 오류(컴파일에러+런타임 에러) -> 이런 예외 상황(예측 가능한 에러) 구문을 예외처리를 통해 해결 에러가 발생하면 그 아래에 소스코드들은 실행 되지 않는다. 1)예외 클래스 계층 구조 Throwable -> VirtualMachineError -> Error -> ......
다형성 1.다형성이란 여러개의 형태를 갖는다는 의미 상위 타입으로 하위 타입의 객체를 사용 할 수있음 부모타입으로 파생된 여러 자식객체를 부모클래스 타입하나로 다룰수 있는 기술 ->매개변수타입으로 부모클래스 사용 해서 모든 자식객체를 찾을수 있음 가능한 이유: 주소의 자식안에서 자신을 본다 -> 자신을 상속하는 여러 클래스의 객체 (자식)들을 찾을때 부모클래스 하나로 찾을 수 있다. 선언법 부모클래스 객체명(변수) = new 자식클래스(); 부모 클래스의 변수는 자식 클래스의 주소를 담을 수 있다.(업케스팅) Stack 객체명(자식의 주소) 주소의 자식에 있는 자신을 찾아감 자식객체 : z (부모객체(자신) : x y) -> 주소에 존재하는 자식이 품고있는 자신(부모객체)를 찾아감 = 부모타입이었던 멤버만 참조..