930 likes | 1.25k Views
프로그래밍 기초. 제 2 주 2014 년 1 학기 강원대학교 컴퓨터학부 담당교수 : 정충교. 2 장 표현식과 데이터 유형. [출처] 자바(Java) 기초 강좌 - 005. 자바의 자료형(Data Type) | 작성자 asebn7. 데이터 유형 (Data Type). *. primitive type. data type. reference type. * char 형 = 캐릭터 (character 형 ) = 문자 형. 소수 숫자를 유효숫자와 지수로 표현. 데이터 유형 (type).
E N D
프로그래밍 기초 제 2주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교 강원대학교
2장 표현식과 데이터 유형 강원대학교
[출처]자바(Java) 기초 강좌 - 005. 자바의 자료형(Data Type)|작성자asebn7 데이터 유형 (Data Type) * primitive type data type reference type * char형 = 캐릭터(character형) = 문자형 강원대학교
소수 숫자를 유효숫자와 지수로 표현 강원대학교
데이터 유형(type) • 데이터 유형에 따라 아래 것들이 달라진다. • 어떤 값이 가능한지 • 어떤 연산이 가능한지 • 값의 의미가 무엇인지 • 어떻게 저장되는지 강원대학교
int유형 연산자 + 덧셈 – 뺄셈 * 곱셈 / 나눗셈 % 나머지 연산 (modulus) 강원대학교
int 유형 • a/b는 a를 b로 나눈 값을 구하고 나머지는 버린다. 5/2는 2 -23/6은 -3 4/43은 0 • a%b는 a를 b로 나눈 나머지값 5%2는 1 −23%3는−2 강원대학교
연산자 우선순위(precedence, priority) 결합성 강원대학교
double 유형 • double 유형 연산자 + 덧셈 – 뺄셈 * 곱셈 / 나눗셈 • 5.0/2.0 --> 2.5 * int유형 나눗셈 5/2 -->2 강원대학교
char 유형 • char유형의 값 표현 -단일 따옴표 '5' 'A' '가' '!' "5" 는 문자열 문자(string literal)이다. 5는 정수(integer)이다. 강원대학교
아스키 코드 • 아스키(ASCII) 코드는 각 문자에 대해 0부터 127까지의 음수가 아닌 정수를 할당한다. • 이 값들은 2진수로 저장되며, 일반적으로 선두에 0이 있고 그 다음에 0가 127사이의 7비트 코드 수가 뒤따라온다. • 아스키 값은 메모리의 한 바이트를 사용하여 저장이 가능하다. 즉, 한 개의 문자를 저장하는데 단지 1바이트만 필요하다. 강원대학교
char 유형 • 자바는 유니코드(Unicode) 문자를 사용 - 각 문자에 2바이트의 메모리를 할당한다. • 2바이트 사용 --> 65,536개 문자 표현 가능 • 아스키 문자는 유니코드의 부분 집합 강원대학교
char 유형 • 특수문자 표현 \n 개행문자(newline, 새로운 행으로 이동) \t 탭(tab) \b 백스페이스(backspace) \r 복귀(carriage return, 커서를 행의 선두로 이동) \' 홑따옴표(single quote) \\ 역슬래시(backslash) 강원대학교
부울(boolean) 유형 • true과 false의 두 값만을 가진다 true false • 연산자 && ―and || ― or ! ― not 강원대학교
진리표 강원대학교
서로 다른 데이터 유형간 연산 • 'A'+2 • 두 개의 피연산자들의 유형이 서로 다르다. char+int • “더 작은” 데이터 유형이 “더 큰” 데이터 유형으로 형변환(cast) 된다. • 여기에서 크다 작다는 말은 값의 범위가 크고 작다는 의미. • char 형은 int형보다 더 작고, int형는double 형보다 작다. • 'A'+2 --> 65+2 --> 67 char+int --> int+int 강원대학교
서로 다른 데이터 유형간 연산 • 22+3.0 • 두 개의 피연산자들의 유형이 서로 다르다. int+double • 22+3.0 --> 22.0+3.0 --> 25.0 • int+double --> double+double 강원대학교
서로 다른 데이터 유형간 연산 표현식(22+3.0)/4 의 값은 6.25이다. (22+3.0)/4 --> (22.0 +3.0)/4 --> 25.0/4 --> 25.0/4.0 --> 6.25 강원대학교
서로 다른 데이터 유형간 연산 표현식 'A' + 1.0 의 값은 66.0 이다. • 'A' + 1.0 • 65 + 1.0 • 65.0 + 1.0 • 66.0 • 'A'+ 'Z' --> 65 + 90 -->155 • 'A' – 'Z' --> 65 + 90 --> −25 강원대학교
+ 연산자와 문자열 • 문자 'J' • 문자열 "J" "java" • 문자열 + 문자열 --> 두 문자열을 연결하여 하나의 문자열을 만들어줌 • "ja" + "va" --> "java" • 프로그램 내에서 하나의 문자열은 한 줄에 적어야 한다. 두 줄에 걸쳐 적으면 안 된다. "자기존중의 반대는 교만입니다. 교만한 사람은 " + "강자 앞에 비굴하고 약자는 무시합니다." 강원대학교
+ 연산자와 문자열 2147483647 + "는 가장 큰 int이면서 소수이다." --> "2147483647는 가장 큰 int이면서 소수이다." • 우선 첫 번째 피연산자인 정수 2147483647이 문자열 "2147483647"로 형변환됨 • 그 다음, 두 문자열이 연결됨 강원대학교
+ 연산자와 문자열 • 문자열과 수식의 연결: 표현식“The sum of the two dice is " + (5+2) 는 다음과 같은 문자열이 된다. “The sum of the two dice is 7” • 괄호 내의 수식이 먼저 계산된다. 강원대학교
+ 연산자와 문자열 • 만약 괄호가 생략된다면, 표현식 "The sum of the two dice is "+ 5 + 2 는 다음과 같은 문자열이 된다. "The sum of the two dice is 52." • + 연산자는 왼쪽결합! 강원대학교
+ 연산자와 문자열 ("The sum of the two dice is " + 5 )+ 2 ("The sum of the two dice is " + "5") + 2 정수 5 는 문자열 "5" 로 형변환 된다. ("The sum of the two dice is 5") + 2 "The sum of the two dice is "와 "5"가연결된다. ("The sum of the two dice is 5")+ "2" 정수2 는 "2" 로 형변환 된다. "The sum of the two dice is 52" "The sum of the two dice is 5" 는 "2" 와 연결된다. 강원대학교
+ 연산자와 문자열 표현식 "The product of the two dice is " + 5*2 는 다음의 문자열이 된다. "The product of the two dice is 10." * 연산자가 + 보다 더 높은 우선순위를 가지기 때문에 먼저 실행된다. 강원대학교
+ 연산자와 문자열 표현식 "The difference of the two dice is" + 5 – 2 는 잘못된 표현으로 오류가 발생한다. 좌측에서 우측으로 결합되므로 표현식은 다음과 같이 계산된다. ("The difference of the two dice is " + 5)− 2 ("The difference of the two dice is "+ "5") − 2 "The difference of the two dice is 5"− 2 오류 발생 : 뺄셈(−) 연산자는 문자열에 적용될 수 없다. 강원대학교
print와 println • 다음의 출력을 만드는 방법 The cost of 15 wickets is 375 dollars (1) System.out.print("The cost of 15 wickets is "); System.out.print( 15* 25); System.out.println(" dollars"); (2) System.out.print("The cost of 15 wickets is " + (15*25) + " dollars"); 강원대학교
예 'A'+ 'B' 는 131 (정수) 'A'+ "B" 는"AB" (문자열) "A"+ "B" 는"AB" (문자열) ""+'A'+ 'B' 는"AB" (문자열) 'A'+ 'B'+"" 는"131" (문자열) 3+4+"" 는"7" (문자열) ""+3+4 는"34" (문자열) 강원대학교
버그(bug) • 첫 번째로 작성한 거의 모든 프로그램에는 일반적으로 오류 (error)나 버그(bug)가 존재한다. • 오류에는 3가지 종류가 있다. 1. 컴파일 오류(Compilation error) 2. 실행 오류(Runtime error) 3. 논리 오류(Logical error) 강원대학교
컴파일 오류 • 컴파일 오류는 프로그램에서 세미콜론, 문자열의 인용 부호, 중괄호의 생략 등과 같은 자바 규칙을 위반했을 경우에 발생한다. • 컴파일러는 오류를 표시하고 프로그래머에게 오류 발생 위치를 알려준다. • 바이트 코드로 변환되기 전에 프로그램의 오류를 모두 수정해 주어야 한다. 강원대학교
실행 오류 • 실행 오류는 프로그램이 실행되는 동안 발생한다. • 실행 오류는 프로그램에서 0에 의한 나눗셈과 같이 어떤 허용되지 않는 동작을 시도할 때 발생한다. • 실행 오류가 발생하면 프로그램은 종료된다. 강원대학교
논리 오류 • 비록 자바 컴파일러가 오류를 검출하지 못하고 프로그램 실행이 완료되었다고 하더라도, 프로그램이 원하는 결과를 얻지 못할 때가 있다. • 화씨온도를 섭씨온도로 변환하는 프로그램에서, (5/9)(F – 32), 여기서F 는 화씨온도를 나타낸다. 5/9 = 0 (정수 나눗셈)이므로 계산 결과는 항상 0이다. • 올바른 표현식 (5.0/9.0)(F – 32) 강원대학교
3장변수와 대입 강원대학교
public class Addition { public static void main(String[] args) { inti; // int형 변수 i를 선언 int j; // int형 변수 j를 선언 int sum; // int형 변수 sum을 선언 i = 1; // i에 1을 저장 j = 2; // j에 2를 저장 sum = i + j; // i와 j를 더한 결과를 sum에 저장 System.out.print("1+2="); System.out.println(sum); } } 강원대학교
프로그램이 데이터를 위한 저장 공간을 어떻게 마련하나? 프로그램은 데이터를 저장공간에 어떻게 저장하는가? 프로그램은 저장된 데이터를 어떻게 사용하는가? 강원대학교
변수 • 변수(variable)는 특정 유형의 데이터를 저장할 수 있도록 이름이 주어진 메모리 위치이다.. 예 강원대학교
변수 • 변수에 값을 저장하거나, • 변수의 값을 변경하거나, • 저장된 값을 읽어 사용할 수 있다. 강원대학교
변수 선언: 데이터 저장을 위한 메모리 공간 획득 방법 • 변수는 사용되기 전에 먼저 선언(declare)되어야 한다. • 변수 선언에는 다음 내용이 명시되어야 한다. - 변수에 저장될 데이터의 유형 - 변수의 이름 • 변수 선언 형식은 아래와 같다. Typename1, name2, name3,…; Type 은 데이터 유형 (int, double, char, boolean등) nameX는 자바 식별자(임의로 지은 이름)이다. 강원대학교
변수 선언 • int cats; // 변수 선언문 // 변수의 이름은 cats // cats는 하나의 정수(int형) 값을 저장한다. • double radius, area, circumference; // 콤마로 분리된 세 개의 변수는 모두 double 형이다. • boolean done; // done은 참(true) 또는 거짓(false) 중 하나를 저장할 수 있다. • 변수의 이름을 정할 때에는 의미 있는 이름을선택해야 한다. 강원대학교
정수 int형 이외에도 자바에는 다음과 같은 세 가지 정수 데이터 유형이 있다. • byte • short • long 강원대학교
각 정수형의 저장 공간과 값의 범위 • byte: 8비트 ( 1바이트) 27 에서 27-1까지 (-128 에서 127까지) • short: 16비트 (2바이트) 215에서 215-1까지 (-32,768 에서 32,767까지) • int: 32비트 (4바이트) 231에서 231-1까지 (-2,147,483,468 에서 2,147,483,467까지) • long: 64비트 (8바이트) 263에서 263-1까지 (-922,337,203,685,475,808 에서 922,337,203,685,475,807까지) 강원대학교
정수 숫자 (Integer Literals) 26 <-- int타입 숫자로 인식됨 26L <-- long 타입 숫자로 인식됨 // 아래 세 가지는 같은 효과를 갖는다. // The number 26, in decimal intdecVal = 26; // The number 26, in hexadecimal inthexVal = 0x1a; // The number 26, in binary intbinVal = 0b11010; 강원대학교
부동 소수점 숫자 유효숫자와 지수 형태로 숫자를 표현하여 저장 0.02 --> 2*10E-2 --> 2, -2 부동 소수점 숫자: float 32비트 (4바이트) -3.4e38에서3.4e38 까지(6 ~ 7 의 유효 자리를 가짐) double 64비트 (8바이트) -1.7e308에서 1.7e308까지(14 ~ 15 의 유효 자리를 가짐) 강원대학교
소수 숫자 (Floating-Point Literals) • 123.4 <-- double 타입으로 인식됨 • 123.4f <-- float 타입으로 인식됨 • double d1 = 123.4; • // same value as d1, but in scientific notation • double d2 = 1.234e2; • float f1 = 123.4f; 강원대학교
문자와 부울 문자: char 형의 변수는 16비트(2바이트)의 메모리를 요구한다. 문자는 16비트 유니코드(unicode) 정수로 저장된다. 부울 값: 부울(boolean) 형은 오직 두 개의 값, 참(true)과 거짓(false)을 가질 수 있다. 강원대학교
데이터 저장 방법: 초기화와 대입 • 변수에 값을 저장하는 법 • 초기화 문장(initialization statement) • 대입문(assignment statement) 강원대학교
데이터 저장 방법: 초기화 • 초기화: 한 문장으로 변수 선언과 초기 값을 저장 수행 double pi = 3.14159; int number = 10, sum = 0, total = 125; boolean done = true; char firstLetter = ‘A’, lastLetter = ‘Z’; 강원대학교
데이터 저장 방법: 대입 • 대입문(assignment statement) 이미 선언된 변수에 값을 저장 • 대입문의 형식 Variable = Expression Variable 은 선언된 변수 Expression은 유효한 자바 표현식 = 기호를 대입 연산자(assignment operator)라고 한다. 강원대학교