본문 바로가기

국비 2019.03.11/3월

03.15 수업정리

- Escape 문자)

\0 널문자

\b 백스페이스

\t 수평 탭

\n 줄바꿈

\v 수직(탭)

\r 캐리지 리턴

\" 큰 따옴표

\' 작은 따옴표

\\ 역슬래시


- System.out.println(80)은 80이 출력된다. write의 경우는 키값의 단어를 출력하는데 print는 숫자를 문자열로 출력해주는것이다.(묵시적으로 변환)

= System.out.println("80")

-> 바람직한 방법으로는 System.out.printf("%d", 80); 이 있다 f는 format문자를 뜻하는 것이다. 포맷과 값은 분리해 놓는것이 좋다

-> 포맷 문자: printf의 f는 포맷을 해준다는 뜻. 정수의 경우 2,8,16,10 진수등 다양하게 나타낼 수 있기 때문에 그 값과 맞게끔 형식을 맞춰주어야 한다. (f는 다향한 포맷들로 문자들을 바꿔주는 것으로, 즉 문자의 형태를 바꾼다)


 지시자

설명 

 %b

 boolean 형식으로 출력 

 %d

 정수 형식으로 출력

 %o

 8진수 정수의 형식으로 출력

 %x 또는 %X

 16진수 정수의 형식으로 출력

 %f

 소수점 형식으로 출력

 %c

 문자형식으로 출력 

 %s

 문자열 형식으로 출력

 %n 줄바꿈 기능

 %e 또는 %E

 지수 표현식의 형식으로 출력


-> 실수 포맷시 ex) ("%7.2f", 874.9163)

-> %10d는 숫자 10만큼 문자열 좌측(+)에 공백을 채워 숫자열 길이를 만든다. ex) 123------

    :10칸을 미리 예약해 놓고 사용하는 것/ 고정크기를 갖기때문에 문자가 변경되도 틀이 변형되지 않는다

    %-10d는 숫자 10만큼 문자열 우측(-)에 공백을 채워 숫자열 길이를 만든다. ex)000000123(좌측에 0을 채우는 것)

    %,d는 1000단위로 콤마(,) 처리를 한다. 

-> %.2f는 우측에 해당하는 숫자 만큼 소숫점이하 자리를 반올림한다. ex) 123.456f -> 123.46

   ex) float avg; System.out.printf("평균 : %5.2f\n", avg); 

   5는 소수점을 포함해서 5자리의 공간을 확보한다. ->  100.00000이면 5.2일때 100.0만 출력된다. (.)도 합산되는 것이다. 즉, 값을 제한하는 것이 아니고 고정길이를 제한하는 것이다. 



- out은 모니터 대상인 출력 스트림 객체. 

- 파일입출력(I/O 스트림): 데이터를 갖고 있는 소스가 FILE, HDFS, MEMORY, CONSOLE 등이 있는데 모두 출력이 가능하다. 

어떤 입출력을 하든지 버퍼를 사용하는데 버퍼 종류(?)가 다를뿐... 

ex) FileOutputStream fos  = new FileOutputStream("D:\\java\\workspace\\test.txt");  -> 파일입출력이기 때문에 어디로 파일을 보낼것인지 지역을 지정해 주어야 한다. 파일명을 쓸때는 디렉토리를 찾아서 생성을 하는데 이미 존재하는 파일이름이면 덮어써지기 때문에 주의해야한다. 

fos.write()->fos.flush() 이후엔 fos.close()를 써줘야 한다. 쓰지 않으면 다음에 실행시 다른 파일이 실행중이라는 에러가 발생한다. 


- FileOutputStream 사용시 main함수에 throws IOException을 생성해주고 java.io.FileOutputStream;  java.io.IOException; 을 import 해준다.

-> 왜 FileOutputStream fos  = new FileOutputStream에서 fos.print는 쓰지 않는가? -> 원래 print에는 stream의 기능이 없다(문자를 여러개 저장하거나 포메팅하는 기능이 x)

-> ex) System.out.= new OutputStream()에서 outputstream에는 print(), println(), printf()의 기능이 없다. 문자열의 기능을 전문으로 하는 애는  System.out.= new PrintStream(new OutputStream());으로 printstream 이 그 기능을 한다. printstream이 정보를 outputstream으로 주고 outputstream은 문자를 쪼개는 기능을 한다. (포장/응용객체-printstream : outputprint를 쓰기 위해 사용하는 것으로 output이 없으면 printstream도 없다. ) System.out에서 out은 PrintStream을 뜻한다.

outputstream은 음식을 만들기 위한 재료를 준비하는 것과 같다. 어떻게 만들것인가에 대한 것은 기능에 달려있다. printstream은 outputstream의 재료(기능)을 이용하는 애임(종속객체를 가지고 있는 객체)


-> 패키지 네임/네임 스페이스: ex) FileOutputStream 는 객체이름.

각자 사람들끼리 클래스 등의 이름을 만들고 서로의 프로젝트를 합칠 때 충돌이 일어날 수 있다. 파일입출력의 개체명을 전 세계적으로 절대 중복되지 않도록 해야한다.  이클립스의 경우 이 패키지? 이름을 java.io.FileOuputStream라고 설정함. 

이름이 충돌되지 않게 하려면 ex) a.b.c.fileoutput.. 이런식으로 큰 범위가 맨 왼쪽으로 가는 방향으로 쓴다. 


- import 문 자동생성: 마우스 대고 ctrl + shift + o

윈도우 운영체제는 파일 구분자로 \\ 역슬래쉬 두개를 사용


1. void drawEllipse(int x, int y, int w, int h, int color) {

//

}

->

2. void drawEllipse(Ellipse ellipse) {

//

}

->

3. void draw(Ellipse ellipse) {

// 객체가 중심이되도록 바꿔야한다. 그리다 원 -> 원을 그리다

}

 - Board board = new Board();

   board.draw(); // 원을 그리다 (객체 지향 추구형식)  -> draw()에다가 board를 그려달라는 뜻 

   draw(board); //그리다 원을 (과거 방식)


- 주석(ctrl + shift + /): 주석은 실행코드에서 사라진다. 범위주석 /**/을 사용하면 코드안에도 사용가능하다. 

ex)  new FileOutputStream(/*이것은 파일이름*/"D:\\java\\workspace\\test.txt");  


- 다 쓰지않은 이름을 쓸 때 기억이 나지 않는다면 ctrl +space하면 이름 종류 나옴 // 1.스펠링 안틀림 2. 속도가 빨라짐
FileOutputStream fos = new FileOutputStream("D:\\tools\\test1.txt");
PrintStream fout = new PrintStream(fos);
또는
  PrintStream fout = new PrintStream(new FileOutputStream("D:\\tools\\test1.txt"));

/*printstream에 있는 문장을 문자단위로 쪼개서 출력하기 위해서는 fileoutputstream이랑 printstream이랑 같이쓰고 문자열만 쓸거라면 printstream을 사용한다.*/
 
fos.write('A');
fos.flush();
fos.close();
-> 이상태에서는 fout을 먼저 close()하고 그다음에 fos를 close()한다. 


-> 문자열 단위로 쓸 이유가 없으면 printstream은 사용하지 않아도 된다. 


- 콘솔 입력) 

System.in : 키보드로 부터 입력받기위해 stream이 필요하다. 

read(), skip()  -> 이것을 사용하는 개체의 이름은 system.in으로 정해져있다.

int code = System.in.read(); 사용자가 엔터치면 제어권이 프로그램으로 넘어가 입력된다. 



'국비 2019.03.11 > 3월' 카테고리의 다른 글

03.18 수업정리  (0) 2019.03.18
03.15 과제  (0) 2019.03.15
03.14 과제  (0) 2019.03.14
03.14 수업정리  (0) 2019.03.14
03.13 과제 정리  (0) 2019.03.13