PrintWriter > OutputStream

OutputStream write/flush를 보다 전문적으로 출력해주는 print메소드를 사용함.

메소드라는건 어떠한 기능을 구현하기 위해 특정 로직을 만들어 놓은 것임


printf 특수문자 (이스케이프 시퀀스 escape sequence)

특수문자

의미하는 바

\a

경고음

\b

백스페이스

\f

폼 피드(form feed)

\n

개 행(new line)

\r

캐리지 리턴(carriage return)

\t

수평 탭

\v

수직 탭

\'

작은 따옴표 출력

\"

큰 따옴표 출력

\?

물음표 출력

\\

역슬래쉬 출력

\n    /    \”      /   \\ ->중요


가끔씩 자바에서 텍스트 출력을 해야 할때 줄바꿈(개행)이라던지 따옴표를 출력해야 할때 난감한 경우가 있는데

이때 \라는 이스케이프 문자열을 사용해서 컴퓨터에게 이 다음건 그냥 단순히 텍스트일뿐이니 그대로 출력해줘

라고 알려주는 것이다.


참고)

print=>문자열 출력

println => 개행처리하여 출력  ( \n이랑 똑같은 역할)

printf(“형식”,넣을 함수)=> format을 지정하여 값만 넣어줌


* 형식 지정자 (printf)

포맷을 이용한 출력

ex) printf("%s,%d,&f,%c","hello",3,5.6,'a');

*****************printf는 개행을 \n을 써서 해주어야 한다,

ex)System.out.printf(" %d ,%d ,%d ,%d ,%2.0f \n",kor,eng,math,total,avg);


. 파일 출력과 콘솔 출력 방법은 같다. 네트워크 출력도 같다.(버퍼사용)


고정길이 출력

%10d : 앞 10자리 차지 ex)                      3

%-10d : 뒤 10자리 차지 ex) 3                    .

%5.2f : 전체 수의 길이는 5 (소수점 포함), 소수점은 2자리까지 출력. ex) 32.44



'Yame Programmer > JAVA' 카테고리의 다른 글

[이론] 연산자 정리  (0) 2015.06.11
[이론] 문자열 입력  (0) 2015.06.11
[이론] 9.값과 연산자  (0) 2015.06.10
[이론] ASCII / UNICODE  (0) 2015.06.10
[이론] 함수 그리고 객체와 캡슐  (0) 2015.06.03

9. 값과 연산자

자바에서의 값의 종류 : 정수값 실수값 문자값 진리값

정수값(4바이트)

                

              ->int

실수값

           ->double/float

문자값


      ->char

진리값


     ->boolean

26(10)  -> 0x1a(16)

26(10)  -> 032(8)

26(10)  -> 0b11010(2)

26L ->8바이트


123.4(8바이트/double형)  -> 123.4f(4바이트/float형)

1.234e2d(소수점뒤로 두개 옮김)

'A'

true/false



산술 연산

나머지 연산

자료형 (형변환) : avg = tot / 3.0f; 묵시적인 형변환

                       avg = (float)(tot / 3.0); 강제형변환 (안하면 에러)


묵시적 형변환은 바꾸겟다고 형번환 선언은 하지 않았지만 컴퓨터가 알아서 이 계산값을 어느 형태의 자료에 담으려고

자동적으로 형태를 변환해 주는 것을 말한다.


강제 형변환은 avg = (float)(tot / 3.0); 에서 float 라고 써준것 처럼 강제로 이 앞에 값은 float형식이다! 라고 선언해 주는 것을 말한다.


정수 [연산] 정수 -> 정수값 출력

정수 [연산] 실수 -> 정수를 실수로 변환후 계산 -> 실수값 출력 [기본적으로 무손실 변환을 하려고 한다]

손실변환을 하려면 명시적으로 적어주어야 한다. ex) a=(float)(total/3.0);

http://blog.eairship.kr/91 - 연산자 참고 페이지

http://blog.eairship.kr/92 - 비트 연산자 참고 페이지



왜 비트연산을 써야 하는가. - 메모리 줄이려고


과거엔 메모리 용량과 속도 때문에 비트 연산을 사용했다. 요즘도 쓰긴 하지만 많이 쓰진 않는것 같다.

8. ASCII / UNICODE

식별 되는 문자코드가 있어야 범용으로 데이터 통신을 할 수 있기 때문에 만들어진 코드 체계. 8bit로 표현

ex)입력 값 ‘2’->실제 입력값 ‘50’(key code)

ASCII 코드 -> 각국 문자 코드 확장 -> 번호(문자코드)가 겹치지 않게 하는 UNICODE 탄생

ex)ASCII 코드 한국:euc-kr   /  UNICODE 한국: utf-8

System.out.wirte(3); ->50    =3의 아스키 코드값인 50출력

System.outwrite('3'); ->3    =문자로 인식하여 3출력


무슨말인가 하면 우리들이 사용하는 문자를 컴퓨터는 바로 알아먹을 수가 없기 때문에 그것들을 코드화 했다는 말이다.

위의 예제와 같이 문자열로 입력하지 않은 3은 아스키 코드값인 50이 출력이 된다.

그렇다면 이런것들을 왜 알아야 하느냐? 

단축키를 설정하거나 혹은 문자열을 사용할수 없는 경우에 사용할 때가 있다.

혹은 컴퓨터가 유니코드로 값을 뱉는 경우에 저 표를 보고 어떤 문자인지 파악을 할때도 있다.

물론 자주 있는 경우는 아니지만 이걸 아느냐 모르느냐로 코딩에 있어서 크리티컬한 타격이 올때가 있으니

저걸 외우는건 외울필요도 없고 자주 쓰지도 않으니 저런게 있다는것만 알아두고 검색해서 그때그때 사용하자.


7. 함수 그리고 객체와 캡슐


함수 : 기능 (주체를 사용할 수 있는 행위)

컴퓨터 프로그램에서 식 내에 사용함으로써 하나의 값이 정해지는 절차. ex) y=Ax+B

함수는 동사(행위) - 동사는 명사가 없으면 어떤 행위를 할 수 없다.

비동기적인 시스템을 구성해야한다. * 비동기적이려면 버퍼를 사용해야함.

출력 버퍼(단 방향 버퍼 =OutputStream) ex) 일반통행 도로

Stream = 단 방향 버퍼.


출력버퍼 (outputstream)와 같이 한방향으로 가는 것은 단방향 버퍼라 한다.


동기적(Synchronous)

 어떤 작업을 요청했을 때 그 작업이 종료될 때까지 기다린 후 다음(다른) 작업을 수행하는 방식

 (한 가지 일을 순서대로 수행.)

비동기적(Asynchronous)

 어떤 작업을 요청했을 때 그 작업이 종료될 때까지 기다리지 않고 다른 작업을 하고 있다가,

 요청했던 작업이 종료되면 그에 대한 추가 작업을 수행하는 방식

(ex.전화)


버퍼(buffer, 문화어: 완충기억기)

 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영역이다. 버퍼링(buffering)이란 버퍼를 활용하는 방식 또는 버퍼를 채우는 동작을 말한다. 다른 말로 '큐(Queue)'라고도 표현한다.

보통 데이터는 키보드와 같은 입력 장치로부터 받거나 프린터와 같은 출력 장치로 내보낼 때 버퍼 안에 저장된다. 그러나 버퍼는 컴퓨터 안의 프로세스 사이에서 데이터를 이동시킬 때 사용된다. 이는 전자 통신의 버퍼와 비유할 수 있다. 버퍼는 하드웨어나 소프트웨어에 추가될 수 있지만 버퍼는 상당수가 소프트웨어에 추가된다. 버퍼는 보통 속도가 계속 바뀔 수 있으므로 데이터 수신, 처리 속도에 차이가 있다. (예: 프린터 스풀러)



객체 :

개체에 의미를 부여해 존재하는 것으로 만드는 것.

※ 객체(Object) : 실존 하는 것.  / 개체(entity) : 실존하지 않는 것.

자바는 new라는 키워드로 개체화한다.

ex)OutputStream ops = new OutPutStream(); 함수를 개체화 했다면 사용할 수 있다.

    함수를 사용하는 방법>

ops.write(문자); ->ops버퍼에 쓰는 작업

ops.flush();->비우는 작업

System.in / System.out 은 기본으로 제공되는 입,출력 도구

new ConsoleOutputStream() ->out 개체화 되어있다.

new ConsoleInputStream() -> in 개체화 되어있다.

'Yame Programmer > JAVA' 카테고리의 다른 글

[이론] 9.값과 연산자  (0) 2015.06.10
[이론] ASCII / UNICODE  (0) 2015.06.10
[이론] WORA(자바 플랫폼)  (0) 2015.06.03
[이론] 프로그래밍의 종류  (0) 2015.06.03
[이론]자바 프로그래밍 이란?  (0) 2015.06.03

6. wora(자바 플랫폼)


자바의 탄생 - 그린 프로젝트

1990년대 양방향 TV가 만들어짐

(단말기에서 사용자 입력이 필요하며 컨트롤도 필요하게 되며 다양한 플랫폼을 필요하게 됨)

하나의 프로그램을 다양한 플랫폼에서 사용 가능하도록 하기 위해 자바가 탄생함.

(자바는 c++의 단점을 보완하며 탄생함) /James Gosling - 자바의 창시자




C++의 문제점

-> 간결하지 않은 C 언어의 복잡성의 어려움

(프로젝트는 규칙에 의해서 작성되어야 하고 간결하게 만들어야 한다.)

-> 메모리 자원 관리의 어려움

->Write once, Run Anywhere(WORA)*의 어려움 : 보안문제, 독립적인 플랫폼 문제

->협업의 어려움



*WORA(Write Once, Use Anywhere):

1) 한 번 작성된 코드는 모든 플랫폼에서 실행이 가능

2) C/C++ 등 기존 언어가 가진 플랫폼 종속성을 극복


자바 플랫폼(WORA)의 특징

계산은 CPU와 메모리가 필요->자바 역할

입/출력은 다양한 장치가 필요-> 콘솔  /  윈도우 / 파일 /네트워크 역할

너무 다양한 입/출력 장치들 때문에 *인터페이스를 통해 간접적으로 이용할 필요가 생김

*인터페이스 : 차단된 두 대상을 이어주는 도구 (두 개의 시스템 또는 구성 요소 사이의 상호 연결)

사물 간 또는 사물과 인간 간의 의사소통이 가능하도록 일시적 혹은 영속적인 접근을 목적으로 미리 약속(규칙,표준)되어 만들어진 물리적, 가상적 매개체를 의미한다.


JAVA란?

자바는 수학을 닮은 함수를 통해 인터페이스 제공

(*수학을 닮은 함수를 사용하여 좋은점)

자바는 함수와 Drive를 통해 프로그램을 작성

(자바가 제공하는 함수를 API라고 부른다.(API는 인터페이스 역할))

자바는 다양한 운영체제에서 하나의 프로그램으로 구동 하도록 구현.

자바는 다양한 입출력 기계들을 하나의 함수로 사용하여 이용


*함수를 사용 했을 때의 장점

1. 구현을 숨기지만 구현을 사용할 수 있는 약속을 제공.

   (같은 코드를 계속 쓰지 않음으로서 프로그램의 용량을 줄일 수 있고, 다른 부분이나 다른

  프로그램에서 같은 코드를 사용할 수 있다. (인터페이스의 역할))

2. 하나의 큰 프로그램을 여러 부분으로 분리함으로써 구조적 프로그래밍이 가능하다.

3. 함수의 기능과 내부 구현을 분리하는 캡슐화가 이루어진다.









논리 플랫폼과 API

자바 플제 1 장 자바 개요랫폼 - 다양한 OS에서 사용


※ 자바 플랫폼이 있지 않으면 사용 할 수 없다.

구동프로그램(드라이버)

Application 함Program Interface (API) : 프로그램 또는 애플리케이션이 운영 체제에 어떤 처리를 위해서 호출할 수 있는 서브루틴 또는 함수의 집합이다.

콘솔 : 사용자가 이용 할 수 있는 접근 수단

** 모든 함수가 API는 아니다.

자바 소송 후폭풍…'


내장 입/출력 객체와 멤버함수

: 관련 있는 함수들의 모임


ex)   System.out.print(30);->시스템의 출력을 담당

     System.in.read();->시스템의 입력을 담당



'Yame Programmer > JAVA' 카테고리의 다른 글

[이론] 9.값과 연산자  (0) 2015.06.10
[이론] ASCII / UNICODE  (0) 2015.06.10
[이론] 함수 그리고 객체와 캡슐  (0) 2015.06.03
[이론] 프로그래밍의 종류  (0) 2015.06.03
[이론]자바 프로그래밍 이란?  (0) 2015.06.03

5. 프로그래밍의 종류


1) 절차적 프로그래밍


절차지향 프로그래밍 혹은 절차지향적 프로그래밍이라고도 불리는 프로그래밍 패러다임의 일종으로서, 때때로 명령형 프로그래밍과 동의어로 쓰이기도 하지만, 프로시저 호출의 개념을 바탕으로 하고 있는 프로그래밍 패러다임을 의미하기도 한다. 프로시저는 루틴, 하위프로그램, 서브루틴, 메서드, 함수(수학적 함수와는 다르고 함수형 프로그래밍에 있는 함수와는 비슷한 의미이다.)라고도 하는데, 간단히 말하여 수행되어야 할 연속적인 계산 과정을 포함하고 있다. 프로그램의 아무 위치에서나 프로시저를 호출될 수 있는데, 다른 프로시저에서도 호출 가능하고 심지어는 자기 자신에서도 호출 가능하다.

절차적 프로그래밍은 복잡도가 지나치지 않고 유지보수하기 쉽기 때문에 단순한 순차적 프로그래밍이나 비구조적 프로그래밍보다 여러 상황에서 장점이 많다.



2)구조적 프로그래밍


프로그램을 피라미드와 같은 구조로 만들고 탑-다운(Top-Down)의 형태로 제어하도록 되어 있으며. 구조를 이루는 각각의 단위는 순차, 제어(if,select문 등), 반복(for, while 등)의 세 구조로써 이루어진 프로그래밍 방법론.



3) 객체지향 프로그래밍


객체 지향 프로그래밍은 컴퓨터 프로그램 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.

객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 코드 분석을 가능하게 하는 장점을 갖고 있다. 그러나 지나친 프로그램의 객체화 경향은 실제 세계의 모습을 그대로 반영하지 못한다는 비판을 받기도 한다.




객체지향 프로그래밍(JAVA) 규칙

1. 두개의 블럭(class 블럭/함수 블럭) - 모듈*

2. 문장의 구분(;)

3. 변수/함수 구분(심볼)




개체(엔티티) - 의미있는 하나의 정보단위




* 모듈이란?


일반적으로 큰 체계의 구성요소이고, 다른 구성요소와 독립적으로 운영된다.

(이미 알고 있는 특성을 갖는 기능 단위로서 부품 집합이고, 그대로 모듈」이라고 해석)

사용이유: 너무 규모가 커지면 작게 나눠서 만들어야 할 필요가 있기 때문

'Yame Programmer > JAVA' 카테고리의 다른 글

[이론] 9.값과 연산자  (0) 2015.06.10
[이론] ASCII / UNICODE  (0) 2015.06.10
[이론] 함수 그리고 객체와 캡슐  (0) 2015.06.03
[이론] WORA(자바 플랫폼)  (0) 2015.06.03
[이론]자바 프로그래밍 이란?  (0) 2015.06.03

1. 자바  프로그래밍이란?


자바 프로그래밍이란 자바를 이용해 컴퓨터 프로그램을 만드는 작업이다


자바 : 컴퓨터 프로그래밍 언어

프로그램 : 지시 사항들이 나열된 순서, 어떠한 목적을 이루기 위한 수행 절차

프로그래밍: 프로그램을 만드는 것

컴퓨터 프로그래밍 : 특정한 프로그래밍 언어를 이용해 구체적인(목적을 가진) 컴퓨터

        프로그램으로 구현하는 기술


즉 자바 프로그래밍이란 “자바라는 컴퓨터 언어를 이용해 어떠한 목적을 이루기 위한 컴퓨터 프로그램(절차)을 만드는 것”이라 할 수 있다.



2. 컴퓨터와 CPU


1) 컴퓨터(computer)

수식 이나 논리적 언어로 표현된 계산을 수행하거나 작업을 통제하는 기계. 즉 계산기


2)CPU(central processing unit: 중앙 처리 장치)

소프트웨어 명령의 실행이 이루어지는 컴퓨터의 부분, 혹은 그 기능을 내장한 을 말한다.  CPU는 ALU(Arithmetic And Logic Unit) + Registers + CU(Control Unit)으로 구성되어있다.



ALU = 산술 연산

CU = 제어(반복) (ALU와 레지스터를 실질적으로 용도에 맞게 사용하는 컨트롤 장치.)

register = ALU에 값을 연산하기 전에 잠시 저장해 놓는 임시 메모리






3. 플랫폼(platform)

플랫폼이란 개발 환경, 어플리케이션 소프트웨어를 작동시킬때 기반이 되는 OS의 종류나 환경, 설정을 말한다. (기반/재료,환경)

+@ 예를 들면, MS-DOS상에서 동작하는 DOS가 플랫폼이며, MS-Windows상에서 동작하는 응용 소프트웨어에 있어서는 MS-Windows가 플랫폼이다. 또 어떤 소프트웨어가 제공하는 환경을 플랫폼이라고 하는 경우도 있다. MS-Windows가 제공하는 환경이 MS-Windows의 플랫폼이다)




4. 코드


1) 코드와 코드화

기록, 의사전달을 위한 기호화 / 뜻 의미가 부여된 기호는 코드가 된다. 또한 기록이나 의사전달을 위해 기호화 하는것을 코드화 라고 한다.


2)코드의 종류

고급(high level) 언어와 저급(low level)언어로 나뉠 수 있다. 고급 언어는 저급언어보다 사용하기 쉽고, 더 추상적이며, 더 이식 가능성이 높게 디자인된다. 어떤 언어의 경우에는, 문법적으로 올바른 프로그램들은 저급 언어로 컴파일(compile)되어 컴퓨터 상에서 실행(execute)되게 된다. 오늘날 대부분의 소프트웨어는 고급 언어로 작성된다. 그 후 오브젝트 코드로 컴파일되고 난 뒤 기계어로 변환된다.


a. 저급언어


기계어:CPU가 직접 해독하고 실행할 수 있는 비트 단위로 쓰인 컴퓨터 언어를 통틀어  일컫는다. 기계어는 프로그램을 나타내는 가장 낮은 단계의 개념이다.

기계어는 어셈블리어와 1 : 1로 쓰일 수 있다.




어셈블리어: (영어: Assembly language)는 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍저급 언어이다. 컴퓨터 구조에 따라 사용하는 기계어가 달라지며, 따라서 기계어에 대응되어 만들어지는 어셈블리어도 각각 다르게 된다.




b. 고급언어

 고급 프로그래밍 언어란 사람이 알기쉽도록 씌어진 프로그래밍 언어로서, 저급 프로그래밍 언어보다 가독성이 높고 다루기 간단하다는 장점이 있다. 컴파일러 인터프리터에 의해 저급 프로그래밍 언어로 번역되어 실행된다. C 언어, 자바, 베이직 등 대부분의 프로그래밍 언어들은 고급언어에 속한다.


c. 컴파일

프로그래밍 언어로 작성된 프로그램을 컴퓨터가 이해할 수 있도록 기계어로 번역해 주는 역할을 하는 번역기



물리 코드, 논리 코드    < - 보충 설명 필요


물리(장치)에 종속된 코드가 물리코드.


물리장치에 종속되지 않은 코드가 논리 코드



인터프리터(interpreter, 문화어: 해석기)는 프로그래밍 언어소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말한다. 원시 코드를 기계어로 번역하는 컴파일러와 대비된다. 인터프리터는 다음의 과정 가운데 적어도 한 가지 기능을 가진 프로그램이다.



치수횽아

(실행코드=숫자코드=이진코드)

수학 코드

kor = 60

eng = 70

math = 80

total = kor+eng+math

avg = total/3



패턴화된 모듈들 함수.


플랫폼을 함수화 한 것 = API


모듈화 - 재사용  , 집중화, 협업


모듈화의 기본 - 차단!

'Yame Programmer > JAVA' 카테고리의 다른 글

[이론] 9.값과 연산자  (0) 2015.06.10
[이론] ASCII / UNICODE  (0) 2015.06.10
[이론] 함수 그리고 객체와 캡슐  (0) 2015.06.03
[이론] WORA(자바 플랫폼)  (0) 2015.06.03
[이론] 프로그래밍의 종류  (0) 2015.06.03

+ Recent posts