Download presentation
Presentation is loading. Please wait.
1
기본 입출력과 데이터 형 개요 기본 입출력 스트림 변수, 상수 및 데이터 형 데이터 형 변환
2
2장. 기본 입출력과 데이터 형 학습목표 대표적 출력 스트림인 System.out.print( )와 System.out.println( ) 입력 스트림인 System.in.read( )에 대해서 학습한다. 기본 데이터의 형태인 값이 변하지 않는 상수와 값이 변할 수 있는 변수에 대해서 학습한다. 데이터형 변환에는 묵시적 변환과 명시적 변환이 있는데, 이것에 대해서 학습한다.
3
기본 입출력 스트림의 개념 데이터형의 개념 Section 01 개요(1/2)
컴퓨터가 데이터를 외부 세계로 출력하거나 외부 세계로부터 입력을 받기 위해 자바 언어 제작사에서 미리 만들어 제공하는 표준 입출력 스트림(Stream)을 사용. 대표적인 출력 스트림으로 System.out.print()와 System.out.println(), 입력 스트림으로 System.in.read()가 있다. 데이터형의 개념 자바 언어에서 사용되는 기본 데이터의 형태는 상수(Constant)와 변수(Variable)로 구분할 수 있다. 프로그램 실행 중에 상수는 값이 변하지 않고 변수는 값이 변할 수 있다. 이들은 각각 정수형, 실수형, 문자형, 논리형 등으로 나눈다.
4
대입문과 데이터형 선언문 Section 01 개요(2/2) 대입문 데이터형 선언문
대입문 =는 우측의 값을 좌측(변수)에 대입(Assign)한다는 의미 예: x=12 데이터형 선언문 변수명 앞에 반드시 데이터형(Data Type)을 선언한 후에 사용해야 함 데이터형 변수명;
5
표준 출력 스트림 Section 02 기본 입출력 스트림(1/2) 자바에서 입출력은 스트림(Stream)이라는 방식을 사용.
사용자는 프로그램에서 입출력 장치와 연결된 스트림을 통해 데이터를 읽고 출력함 표준 출력스트림은 스트림이 지니고 있는 값을 텍스트 기반 애플리케이션에서 화면에 출력하는 기능. 자바에서 사용할 수 있는 표준 출력 스트림의 일반 형식 System.out.print(“내용”); System.out.println(“내용”);
6
표준 입력 스트림 Section 02 기본 입출력 스트림(2/2) 자바에서 입출력은 스트림(Stream)이라는 방식을 사용.
사용자는 프로그램에서 입력 장치와 연결된 스트림을 통해 데이터를 읽고, 출력 장치와 연결된 스트림을 통해데이터를 출력 장치에 출력 표준 입력 스트림은 키보드로부터 문자를 읽어 텍스트 기반 애플리케이션에서 사용자로부터 입력을 받음. 자바에서 사용할 수 있는 표준 입력 스트림의 일반 형식 변수 = System.in.read();
7
[실습하기 2-1] System.out.print()와 System.out.println()을 사용(1/2)
01 class Jv_2_1 { 02 public static void main(String[] args) { 03 int ken = 65; 04 System.out.print("Welcome to java!\n"); 05 System.out.print(" ken 변수의 값:" + ken + "\n"); 06 System.out.println("Welcome to java!"); 07 System.out.println(" ken 변수의 값:" + ken); 08 } 09 } Jv_2_1.java
8
[실습하기 2-1] System.out.print()와 System.out.println()을 사용(2/2)
03행: 오른쪽에 있는 상수를 왼쪽에 있는 변수에 저장하라는 대입문이다. 여기서는 변수 ken을 정수형으로 선언하고, =(대입문)은 변수 ken에 상수 65를 저장하라는 의미다. 대입연산자 =는 우측의 값을 좌측에 대입하라는 의미며 수학 기호의 서로 같다와는 의미가 다르다. 04행: 자바에서 입출력은 스트림(Stream)이라는 방식을 사용한다. 사용자는 프로그램에서 입력 장치와 연결된 스트림을 통해 데이터를 읽고, 출력 장치와 연결된 스트림을 통해 데이터를 출력 장치에 출력한다. 표준 출력 스트림은 스트림이 지니고 있는 값을 텍스트 기반 응용에서 화면에 출력하는 기능이다. 05행: System.out.print(" ken 변수의 값:" + ken + "\n");에서 System은 클래스, out 은 객체, print()는 메소드다. " ken 변수의 값:“ + ken + "\n"의 ken 변수의 값:과 변수 ken에 들어 있는 값이 +에 의해 이어져 출력된다. 즉, " ken 변수의 값: 65"가 출력되고 \n에 의해 한 줄이 바뀐다. 06행: System.out.println("Welcome to java!");은 System.out.print("Welcome to java!\n");과 동일한 의미다. 즉, System.out.println()에서 System은 클래스, out은 객체, println()는 메소드다. 메소드 println()과 메소드 print()의 차이 점은 줄바꿈 기능이다. 07행: System.out.println(" ken 변수의 값:" + ken);은 System.out.print (" ken 변수의 값:" + ken +\n");과 동일한 의미다. 즉, System.out.println()에서 System은 클래스, out은 객체,println()는 메소드 다. 메소드 println()과 메소드 print()의 차이점은 줄바꿈 기능이다. +는 문자열과 문자열을 연이어 출력하는 기능이다. 프로그램 구조 설명
9
[실습하기 2-2] System.in.read() 사용하여 입력 문자 받아 화면에 10진수로 출력 (1/2)
01 class Jv_2_2 { 02 public static void main(String[] args) 03 throws java.io.IOException { 04 int ken; 05 System.out.print("키보드로 문자 입력 요망:"); 06 ken = System.in.read(); 07 System.out.println("입력한 문자의 10진수:" + ken); 08 } 09 } Jv_2_2.java
10
[실습하기 2-2] System.in.read() 사용하여 입력 문자 받아 화면에 10진수로 출력 (2/2)
04행: 정수형 변수를 선언한다. 자바 언어에서는 대입문 등 명령문에 변수를 사용하기 위해서 그 전에 변수명 앞에 반드시 데이터형(Data Type)을 선언한 후에 사용해야 한다. 05행: 표준 출력 스트림. 자바에서 입출력은 스트림(Stream)이라는 방식을 사용한다. 사용자는 프로그램에서 입력 장치와 연결된 스트림을 통해 데이터를 읽고, 출력 장치와 연결된 스트림을 통해 데이터를 출력 장치에 출력한다. 표준 출력 스트림은 스트림이 지니고 있는 값을 텍스트 기반 애플리케이션에서 화면에 출력한다. System.out.print()에서 System은 클래스, out은 객체, print()는 메소드다. System.out.print("키보드로 문자 입력 요망:");에서 "키보드로 문자 입력 요망:"이 화면에 현재의 줄에 출력된다. 07행: 표준 출력 스트림. System.out.println("입력한 문자의 10진수:" + ken);에서 System은 클래스이며, out은 객체이고, println()는 메소드다. 문자열 "입력한 문자의 10진수:"과 변수 ken에 들어 있는 값이 +에 의해서 이어져서 출력된다. 03행: 예외 처리와 throws문. 예외(Exception)란 프로그램 실행 중에 발생되는 예기하지 않던 사건이 발생하여 프로그램의 정상적인 수행을 방해하는 사건을 의미한다. 자바에서 는 예외를 하나의 객체로 취급하며 예외 처리 가능한 두 가지 방법을 제공한다. 첫째 방법은 try-catch-finally 명령문을 이용해 예외가 발생한 곳에서 직접 처리하는 방식이고, 두번째 방법은 throws문을 이용해 다른 곳으로 던지는 방식이다 프로그램 구조 설명
11
변수 Section 03 변수, 상수 및 데이터 형 (1/11)
변수는 프로그램이 수행되는 과정에서 변할 수 있는 값에 이름을 붙인 것. 데이터를 기억 시킬 수 있는 기억 데이터의 형에 따라 변수 선언이 결정. 변수명(Variable Name)을 정의할 때 규칙 식별자(Identifier)는 변수, 상수 등을 구분하는 데 사용되는 이름. 영문자 대문자(A~Z), 영문자 소문자(a~z), 숫자 (0~9)와 특수 문자(*, ^, $, (, )) 등으로 구성. 첫 문자는 항상 영문자 또는 _ 또는 $로 시작. 영문자의 대문자와 소문자는 다른 변수로 취급. 클래스명에서는 대문자를 사용, 객체명과 메소드에서는 소문 자를 사용 예) BOO, boo, Boo는 각기 다른 변수 예약어(Reserved Word)는 변수명으로 사용할 수 없다.
12
상수 Section 03 변수, 상수 및 데이터 형 (2/11)
상수(Constant)는 프로그램의 실행 중에 변하지 않는 고정된 수 정수형 상수(Integer Constant): 정수를 표시하는 상수. 실수형 상수(Real Constant): 실수를 표시하는 상수. 문자형 상수(Character Constant): 한개의 문자를 표시하는 상수. 문자열 상수(String Constant): 여러개의 문자를 표시하는 상수. 논리형 상수(Logical Constant): 진실 또는 거짓을 표시하는 상수.
13
데이터형(1/3) Section 03 변수, 상수 및 데이터 형 (3/11)
자바 프로그램에서 사용되는 모든 변수는 데이터형(Data Type)이 선언되어야 함 같은 데이터형을 갖는 두 개 이상의 변수는 콤마(,)를 사용해 한 문장에 선언 변수의 데이터형 선언과 초기화는 한 선언문에서 사용 자바의 데이터형에는 크게 기본 데이터형(Basic Data Type)과 참조 데이터형(Reference Data Type)으로 분류. 자료형 기본형 참조형 수치형(numeric type) : 정수형, 실수형 문자열(character type) 논리형(boolean type) 배열형 클래스형 인터페이스형
14
데이터형(2/3) Section 03 변수, 상수 및 데이터 형 (4/11)
기본 데이터형의 사용 범위는 다음과 같은 종류로 분류된다 종류 데이터형 크기 (bit) 데이터 표현 범위 사용 예 정수형 byte 8 -27~27 -1(-128~127) byte ken = 123; short 16 -215~215 -1 (-32,768~32,767) short ken = 123; int 32 -231 ~231 -1 (-2,147,483,648~2,147,483,647) int ken = 123; long 64 -263 ~263 -1 (-9,223,372,036,854,775,808~9,223,372,036,854,775,807) long ken = 123L; 실수형 float -3.4e-38~3.4e+38 float ken = 1.23F; double -1.7e-308~1.7e+308 double ken = 1.23; 문자형 char '\u0000'~'\uFFFF'(16비트 유니코드 문자 데이터), 0~216 char ken = 'A'; 논리형 boolean 1 true 또는 false boolean ken = true;
15
데이터 형(3/3) Section 03 변수, 상수 및 데이터 형 (5/11)
자바에서는 데이터형의 크기가 플랫폼에 관계없이 같다. 예를 들면, 정수형 int인 경우에 32 비트로 고정되어 있다. 실수형에서도 float인 경우에 32비트, double 인 경우에 64비트로 고정 자바에서의 문자형은 유니코드를 사용하므로 16비트 코드임. 오버플로우(Overflow)란 컴퓨터 연산 과정에서 각 데이터 형의 데이터 표현 범위보다 큰 수가 입력되는 경우를 말함
16
정수형 Section 03 변수, 상수 및 데이터 형 (6/11)
int형처럼 byte, short, long형도 다음과 같은 형식으로 선언이 가능하다. 정수 값 다음에 대문자 L 또는 소문자 l을 붙일 때는 반드시 long형태의 정수형 상수로 취급해야 함. 정수형 데이터의 사용 형식 int varname1 , varname2 , ..., varnamen ; int varname1= const1 , varname2 = const2 , ..., varnamen = constn; varname: 변수명 const: 초기값
17
실수형 Section 03 변수, 상수 및 데이터 형 (7/11) float형, double형
float형인 경우에 숫자 다음에 대문자 F 또는 소문자 f를 붙임. double형인 경우에 숫자 다음에 대문자 D 또는 소문자 d를 붙일 수도 있지만 통상적으로 붙이지 않고 사용. 실수형 데이터의 사용 형식 float varname1, varname2, ..., varnamen; float varname1=const1, varname2=const2, ..., varnamen = constn ; varname: 변수명 const: 초기값
18
문자형 Section 03 변수, 상수 및 데이터 형 (8/11)
자바 언어에서 한 문자를 나타낼 때에는 단일 인용 부호 ’ '를 사용 문자형 상수(character constant)는 하나의 문자만을 가져야 함. 문자 상수 값은 실제로 컴퓨터의 기억 장소에 기억시킬 때에는 16비트 유니코드 값이 됨. 문자형 데이터의 사용 형식 char varname1 , varname2 , ..., varnamen ; char varname1 = const1 , varname2 = const2 , ..., varnamen = constn ; varname: 변수명 const: 초기값
19
Section 03 변수, 상수 및 데이터 형 (9/11) 제어(escape) 문자는 인쇄할 수 없거나 키보드로 표현할 수 없는 특별한 문자를 가리키며 역슬래시(\)와 한 개의 문자와 결합하여 작성. 단일 인용부호(홑따옴표)인 ‘ ’ 내에 여러 문자로 표현할 수 있는 경우는 \(역 슬래시)와 결합된 형태이다. 즉, 제어 문자들이 이에 해당된다. 제어문자의 종류 제어 문자 유니코드 값 기능 \n \r \b \t \\ \' \'' \f \u000A \u000D \u0008 \u0009 \u005C \u0027 \u0022 \u000C 커서를 다음 줄로 바꾼다.(new line) 커서를 그 줄의 맨 앞으로 이동한다.(return) 커서를 그 줄의 1문자만큼 앞으로 이동한다.(backspace) 커서를 그 줄의 일정한 값(tab)만큼 이동한다.(tab) 역 슬래시(\) 문자를 출력한다.(backslash itself) ' 문자를 출력한다. (single quote) ''문자를 출력한다. (double quote) 양식을 진행한다.(form feed)
20
논리형(boolean형) Section 03 변수, 상수 및 데이터 형 (10/11)
자바 언어에서 부울(boolean) 데이터형을 기본적으로 논리형 상수로 사용. 부울 상수에는 true, 또는 false 값이 있음. 자바에서는 int형이 boolean형으로 자동 변환이 되지 않음. 참일 때는 0, 거짓일 때는 0 이외의 값으로 표현 자바에서는 대소문자를 구분하기 때문에 True, False 등은 사용할 수 없음.
21
참조형 Section 03 변수, 상수 및 데이터 형 (11/11) 참조형에는 배열형, 클래스형, 인터페이스형 등이 있다.
배열의 주소나 객체의 위치 등의 주소를 저장하고 있는 데이터형.
22
[실습하기 2-3] 정수형, 실수형, 문자형, 논리형 상수 및 변수에 저장된 값을 출력 (1/6)
23
[실습하기 2-3] 정수형, 실수형, 문자형, 논리형 상수 및 변수에 저장된 값을 출력 (2/6)
01 class Jv_2_3 { 02 public static void main(String[] args) { 03 int i = 65; 04 short j = 65; 05 long k = 65L; 06 int decimal_v = 10; 07 int octal_v = 010; 08 int hexa_v = 0X10; 09 float x = 65.0F; 10 double y = 65.0; 11 char z = 65; 12 char zz = 'A'; 13 char zzz = '\u0041'; 14 char z_z = 66; 15 char z_zz = 'B'; Jv_2_3.java
24
[실습하기 2-3] 정수형, 실수형, 문자형, 논리형 상수 및 변수에 저장된 값을 출력 (3/6)
16 char z_zzz = '\u0042'; 17 boolean ken = true; 18 boolean boo = false; 19 20 System.out.println("***** 정수형 상수와 변수의 표현 *****"); 21 System.out.println("int i = " + i); 22 System.out.println("short j = " + j); 23 System.out.println("long k = " + k); 24 System.out.println("***** 정수형 상수의 진수 표현 *****"); 25 System.out.println("10진수(10)의 표현) = " + decimal_v); 26 System.out.println("8진수(010)의 10진수 표현) = " + octal_v); 27 System.out.println("16진수(0X10)의 10진수 표현) = " + hexa_v); 28 System.out.println("***** 실수형 상수와 변수의 표현 *****"); 29 System.out.println("float x = " + x); 30 System.out.println("double y = " + y); Jv_2_3.java
25
[실습하기 2-3] 정수형, 실수형, 문자형, 논리형 상수 및 변수에 저장된 값을 출력 (4/6)
31 System.out.println("***** 문자형 상수와 변수의 표현 *****"); 32 System.out.println("ASCII 코드 \'65\'의 문자형 표현 = " + z); 33 System.out.println("문자형 상수 \'A\'의 문자형 표현 = " + zz); 34 System.out.println("유니코드 \' \\u0041 \'의 문자형 표현 = " + zzz); 35 System.out.println("ASCII 코드 \'66\'의 문자형 표현 = " + z_z); 36 System.out.println("문자형 상수 \'B\'의 문자형 표현 = " + z_zz); 37 System.out.println("유니코드 \' \\u0042 \'의 문자형 표현 = " + z_zzz); 38 39 System.out.println("***** 논리형 상수와 변수의 표현 *****"); 40 System.out.println("boolean ken = " + ken); 41 System.out.println("boolean boo = " + boo); 42 System.out.println("***** escape 문자의 표현 *****"); 43 System.out.println("\t \'boolean ken\' = " + ken); 44 System.out.println("\t \"boolean boo\" = " + boo); 45 } 46 } Jv_2_3.java
26
[실습하기 2-3] 정수형, 실수형, 문자형, 논리형 상수 및 변수에 저장된 값을 출력 (5/6)
03~18행: 대입문. 그 의미는 오른쪽에 있는 상수를 왼쪽에 있는 변수에 저장하라는 의미다. 변수 ken을 정수형으로 선언, =(대입문)은 변수 ken에 상수 65를 저장하라는 의미다. 대입 연산자 =는 우측의 값을 좌측에 대입(assign)하라는 의미며 수학 기호의 서로 같다는 의미와는 다르다. 03~05행 : 정수형. int형처럼 byte, short, long형도 위와 같은 형식으로 선언이 가능하다. 정수 값 다음에 대문자 L 또는 소문자 l을 붙일 수 있다. 이때는 long 형태의 정수형 상수로 취급된다. 06~08행: 정수형의 10진수, 16진수, 8진수로 표현. 정수 값은 10진수, 16진수, 8진수로 표현할 수 있다. 10진수 표현은 숫자 앞에 아무 것도 붙지 않으며, 16진수 표현은 숫자 앞에 0x또는 0X가 붙고, 8진수 표현은 숫자 앞에 0(zero)이 붙는다. 09~10행: 실수형. double형도 위와 같은 형식으로 선언이 가능하다. 차이점은 십진형 실수 중에서 float형인 경우에 숫자 다음에 대문자 F 또는 소문자 f를 붙인다. 이때는 Float 형태의 실수형 상수로 취급된다. 11~16행: 문자형. 프로그램 구조 설명
27
[실습하기 2-3] 정수형, 실수형, 문자형, 논리형 상수 및 변수에 저장된 값을 출력 (6/6)
17~18행: 논리형. 논리형의 값에는 true, false 2가지 값을 가질 수 있다. 비교하여 C 언어에서는 true는 0이 아닌 값, false는 0을 사용할 수 있지만 자바에서는 사용할 수 없다. 21~44행: 표준 출력 스트림. 자바에서 입출력은 스트림(Stream)이라는 방식을 사용한다. 사용자는 프로그램에서 입력 장치와 연결된 스트림을 통해 데이터를 읽고, 출력 장치와 연결된 스트림을 통해 데이터를 출력 장치에 출력한다. 표준 출력 스트림은 스트림이 지니고 있는 값을 텍스트 기반 애플리케이션에서 화면에 출력한다. 32~37행: 자바 언어에서 한 문자를 나타낼 때에는 단일 인용 부호 ‘ ’를 사용한다. 문자형 상수는 하나의 문자만을 가져야 한다. 문자 상수 값은 실제로 컴퓨터의 기억 장소에 기억시킬 때에는 16비트 유니코드 값이 된다. C 언어 등에서는 8비트인 ASCII 코드 값이 된다. 자바에서는 문자형인 경우에 ASCII 코드 값도 16비트의 크기에 저장된다. 43~44행: 제어(escape)문자. 제어 문자는 인쇄할 수 없거나 키보드로 표현할 수 없는 특별한 문자를 가리키며 역슬래시(\)와 한 개의 문자와 결합하여 작성한다. System.out.println("\t \'boolean ken\' = " + ken);에서 \t에 의해서 커서를 그 줄의 일정한 값(tab)만큼 이동한다. 또한, \'에 의해서 ' 문자를 출력한다. System.out.println("\t \"boolean boo\" = " + boo);에서 \t에 의해서 커서를 그 줄의 일정한 값(tab)만큼 이동한다. 또한, \"에 의해서 “ 문자를 출력한다. 프로그램 구조 설명
28
묵시적 변환 (Implicit Conversion)
Section 04 데이터형 변환 (1/1) 묵시적 변환 (Implicit Conversion) 수식 안에 서로 다른 데이터형인 변수가 피연산자(Operand)로 나타날 경우에 어떤 한쪽 형태로 자동적으로 형 변환(Type Conversion)이 이루어 짐 묵시적 변환 규칙 char형과 short형은 int형으로 변환된다 float형은 double형으로 변환된다 대입문(Assignment Statement)에서는 왼쪽의 변수의 형(대입되는 변수의 형)으로 변환. 명시적 변환 (Explicit Conversion) 이미 지정된 데이터형을 다른 데이터형으로 강제적으로 바꾸고자 할 경우에 사용되는 변환 cast 연산자가 사용됨 (데이터형) 변수명;
29
[실습하기 2-4] 데이터형 변환 (1/3)
30
02 public static void main(String[] args) { 03 int i = 65;
[실습하기 2-4] 데이터형 변환 (2/3) 01 class Jv_2_4 { 02 public static void main(String[] args) { 03 int i = 65; 04 short j = 65; 05 float x = 65.0F; 06 double y = 65.0; 07 08 System.out.println("***데이터형 변환(data type conversion) ***"); 09 System.out.println("<정수형에서 실수형으로 변환>"); 10 System.out.println("int i = " + i); 11 System.out.println("(float) i = " + (float) i); 12 System.out.println("short j = " + j); 13 System.out.println("(double) j = " + (double) j); 14 System.out.println("<실수형에서 정수형으로 변환>"); 15 System.out.println("float x = " + x); 16 System.out.println("(int) x = " + (int) x); 17 System.out.println("double y = " + y); 18 System.out.println("(short) y = " + (short) y); 19 } 20 } Jv_2_4.java
31
[실습하기 2-4] 데이터형 변환 (3/3) 03~06행: 대입문으로, 그 의미는 오른쪽에 있는 상수를 왼쪽에 있는 변수에 저장하라는 의미다. int형처럼 byte, short, long형도 위와 같은 형식으로 선언이 가능하다. 정수 값 다음에 대문자 L 또는 소문자 l을 붙일 수 있다. 이때는 long형태의 정수형 상수로 취급 된다.double형도 위와 같은 형식으로 선언이 가능하다. 차이점은 십진형 실수 중에서 float형인 경우에 숫자 다음에 대문자 F 또는 소문자 f를 붙인다. 이때는 float형태의 실수형 상수로 취급된다. 11~18행: cast 연산자에 의한 명시적 변환이다. System.out.println("(float) i = " + (float) i);에서는 cast 연산자 실행으로 일시적으로 float형으로 바꾼 후에 연산한다. System.out.println("(double) j = " + (double) j);에서는 cast 연산자 실행으로 일시적으로 double형으로 바꾼 후에 연산한다. System.out.println("(int) x = " + (int) x);에서는 cast 연산자 실행으로 일시적으 로 int형으로 바꾼 후에 연산한다. System.out.println("(short) y = " + (short) y);에서는 cast 연산자 실행으로 일시적으로 short형으로 바꾼 후에 연산한다. 프로그램 구조 설명
Similar presentations