<접근지정자>
public : 공용( 어디서든지 접근 가능하다)
default : 같은 package 내에서만 접근가능
private : 자기 클래스에서만 찾을 수 있다 데이터롬복(게터세터)로 연결해야한다.
protected : 같은 패키지 내에서 접근 가능하고 다른 패키지에서도 상속을 받은 클래스 내부에서는 사용 가능하다.
자식클래스를 new 해서 찾을 수 있다.
<입출력>
- 스트림 입출력 : 버퍼를 가지고 순차적으로 이루어지는 입출력
- 스트림 : 응용프로그램과 입출력 장치를 연결하여 소프트웨어 모듈 / 논리적이다.
입력스크림 : 입력 장치로부터 자바 프로그램으로 데이터를 전달(input)
출력 스트림 : 출력 장치로 데이터 출력 (ex. 모니터로 출력 system.out)
* 데이터가 출발할때 트래픽에 따라 경로를 다르게 설정한다. 그렇기 때문에 논리적!
- 스트림은 단방향이다 : 입력과 출력을 동시에 하는 스트림은 없다.
- 보레이트 : 특정 시간을 쪼개서 보레이트 단위별로 데이터를 받는다
이 경우 1,1 혹은 0,0과 같은 연속된 데이터를 받을 수 있다.
I/O : input, output
- JDK의 바이트 스트림 클래스 계층 구조
* 키보드에 연결된 byte stream : in , type : input stream
모니터로 output을 원하면 system.out 하면 됨, type : output
- 여기 있는 in : 스트림에 연결된 레퍼런스 변수
InputStream 은 문자를 받을 수 없다. byte로(정수) 받음
* System.out.println(data) : 스캐너랑 똑같기 때문에 실행 후 값을 입력하면 출력함
- input stream : int 값을 받는다 (캐스팅)
단점 : 1개만 받을 수 있다.
package ch08;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
// 문자로 읽고 싶음
// 한개 이상을 받고 싶음
// 중간과정으로 쓸 일은 거의 없음
public class InputEx02 {
public static void main(String[] args) {
InputStream in = System.in;
InputStreamReader reader = new InputStreamReader(in);
char[] data = new char[2];
try {
reader.read(data);
System.out.println(data);
} catch (IOException e) {
e.printStackTrace();
}
}
}
- InputStreamReader : 문자를 1개이상 받을 수 있다
* InputStream을 보완해서 만들어졌다.
reader.read(data) : 리턴 안 받아도 된다.
new char에서 공간을 2를 주었기 때문에 문자를 3개 입력하면 2개만 출력된다.
(가변적이지 못 한것이 단점이다)
- Buffer : 해야될 일과를 정해놓은 것
기억공간을 지정해 놓은 것 / 통신할 때 데이터가 꽉 차지 않으면 전송이 되지 않는다. -> flush 해서 강제로 보낼 수 있음
+ 일과가 추가되면 버퍼링이 걸림 / 대기열에 놨다가 해야될 일과를 하고나면 한 만큼 추가됨
http://tcpschool.com/cpp/cpp_io_streamBuffer
코딩교육 티씨피스쿨
4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
tcpschool.com
참고!
package ch08;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class InputEx03 {
public static void main(String[] args) {
InputStream in = System.in;
InputStreamReader reader = new InputStreamReader(in);
BufferedReader br = new BufferedReader(reader);
// 위 3개를 한줄로 적을 수 있음
BufferedReader br2 = new BufferedReader(new InputStreamReader(in));
String data = "";
try {
data = br2.readLine();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(data);
}
}
* Buffer 를 이용해서 작성
통신할때 사용한다.
- readLine : buffer를 비울 때 사용한다
- 오류가 나면 데이터가 자동으로 초기화 되지 않기 때문에 내가 직접 초기화 한다.
- 자동으로 데이터를 읽고 비우는 작업을 하기 위해 코드를 수정한다.
package ch08;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class InputEx03 {
public static void main(String[] args) {
InputStream in = System.in;
InputStreamReader reader = new InputStreamReader(in);
BufferedReader br = new BufferedReader(reader);
// 위 3개를 한줄로 적을 수 있음
BufferedReader br2 = new BufferedReader(new InputStreamReader(in));
String data = "";
try {
while ((data = br2.readLine()) != null) {
System.out.println(data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
'Java programing > 프로그래밍 언어 활용' 카테고리의 다른 글
Java - OSI 계층 (0) | 2020.04.07 |
---|---|
Java - json (0) | 2020.04.06 |
Java - 커피숍만들기, Linked List, ArrayList, Generic (0) | 2020.04.03 |
Java - 햄버거 만들기 (composite) (0) | 2020.04.03 |
Java - 추상클래스(abstract) 2, 인터페이스 (0) | 2020.03.31 |