윤 홍 란 hryun@sookmyung.ac.kr 제 2 장 데이터와 식 윤 홍 란 hryun@sookmyung.ac.kr
데이터와 식 이장에서는 Java 프로그램에 사용되는 기본 데이터 타입과 계산을 표현하기 위한 수식의 사용에 대해 공부한다. 2장의 강의 목표는 문자 스트링, 스트링 접합 연산, 탈출문자의 사용 기본 데이터 타입 변수의 선언과 사용 수식의 구문과 처리과정 데이터 변환의 유형과 데이터변환을 수행하는 매커니즘 사용자와 상호작용하는 프로그램을 위한 Scanner클래스 소개 자바 애플릿의 기본 개념 기본 그래픽 개념과 형상을 그리는 기법
Outline Character Strings Variables and Assignment Primitive Data Types Expressions Data Conversion Interactive Programs Graphics Applets Drawing Shapes
Character Strings(문자 스트링) 스트링은 텍스트 앞뒤에 이중따옴표를 가지고 표현 예: "This is a string literal." "123 Main Street" "X" 모든 스트링은 자바에서 객체로 취급되고 스트링 클래스에 정의되어 있다. 즉, 스트링 객체가 된다.
System.out.println ("Whatever you are, be a good one."); 1장의 예제였던 Lincoln program에서 스트링을 출력하기 위해서 println method를 사용했다. System.out객체는 출력을 모니터스크린으로 보내도록 한다. System.out.println ("Whatever you are, be a good one."); method name object 메소드에 제공하는 정보 (parameters, 인수)
print 메소드 System.out객체는 println이외에도 다른 서비스들도 제공한다. print 메소드는 println 메소드와 비슷하나 출력 후 다음 라인으로 커서의 위치를 보내지 않는다. Print메소드를 사용한 후에 다음에 다시 출력을 하면 이전에 출력된 내용과 같은 줄에 출력되게 된다. See Countdown.java (page 63) public class Countdown { public static void main (String[] args) System.out.print ("Three... "); System.out.print ("Two... "); System.out.print ("One... "); System.out.print ("Zero... "); System.out.println ("Liftoff!"); // appears on first output line System.out.println ("Houston, we have a problem."); }
스트링 접합(String Concatenation) "Peanut butter " + "and jelly" 스트링에 숫자를 합칠때도 사용할 수 있다. See Facts.java (page 65) public class Facts { public static void main (String[] args) // Strings can be concatenated into one long string System.out.println ("We present the following facts for your " + "extracurricular edification:"); System.out.println (); System.out.println ("Letters in the Hawaiian alphabet: 12"); // A string can contain numeric digits // A numeric value can be concatenated to a string System.out.println ("Dialing code for Antarctica: " + 672); System.out.println ("Year in which Leonardo da Vinci invented " + "the parachute: " + 1515); System.out.println ("Speed of ketchup: " + 40 + " km per year"); }
스트링 접합(String Concatenation) The plus operator (+) (1) used for String Concatenation (문자 접합) 피연산자가 둘 다 strings이면, 피연산자 중 하나는 string, 하나는 number 이면, performs string concatenation (2) used for arithmetic addition (산술 연산) 피연산자가 둘 다 number 이면, performs arithmetic addition See Addition.java (page 67) public class Addition { public static void main (String[] args) System.out.println ("24 and 45 concatenated: " + 24 + 45); System.out.println ("24 and 45 added: " + (24 + 45)); }
Escape Sequences “를 포함한 문자열을 출력하고 싶다면? System.out.println ("I said "Hello" to you."); 컴파일 시간-오류 발생 컴파일러는 두번째 인용부호가 스트링의 끝을 나타낸다고 생각하고, 세번째 인용부호에 대해 무엇을 해야할지 모르기 때문에 혼란스러워 진다. “ 나 \ 같은 특수한 문자를 표현하기 위해 사용한다. escape sequence는 백슬래시( \)로 시작한다. System.out.println ("I said \"Hello\" to you.");
Escape Sequences Escape Sequence \b \t \n \r \" \' \\ Meaning backspace tab newline carriage return double quote single quote backslash Java에서의 escape sequences: See Roses.java (page 68) public class Roses { public static void main (String[] args) System.out.println ("Roses are red,\n\tViolets are blue,\n" + "Sugar is sweet,\n\tBut I have \"commitment issues\",\n\t" + "So I'd rather just be friends\n\tAt this point in our " + "relationship."); }
Outline Character Strings Variables and Assignment Primitive Data Types Expressions Data Conversion Interactive Programs Graphics Applets Drawing Shapes
변수(Variables) variable 는 메모리내에 값이 저장될 곳의 이름을 의미 변수는 변수의 이름과 그 변수안에 저장될 자료의 타입을 명시함으로써 선 언된다. data type variable name int total; int count, temp, result; 여러 개의 변수를 한번에 선언할 수 있다.
변수 초기화(Variable Initialization) 변수는 선언해주면서 초기값을 줄 수 있다. See PianoKeys.java(page70) int sum = 0; int base = 32, max = 149; 변수가 프로그램내에서 참조될때 그때당시 변수에 저장되어 있는 값이 사용된다. public class PianoKeys { //----------------------------------------------------------------- // Prints the number of keys on a piano. public static void main (String[] args) int keys = 88; System.out.println ("A piano has " + keys + " keys."); }
배정/대입(Assignment) 배정문은 변수에 값을 넣을 수 있다 . 배정/대입연산자는 = 사용 total = 55; 배정/대입연산자는 = 사용 See Geometry.java (page 71) total = 55; =의 오른쪽의 식의 결과나 값이 왼쪽에 저장된다. 그렇게 하면 기존에 total에 저장되어 있던 값은 없어지고 지금 배정/대입한 값으로 덮어써진다. 선언문에서 선언해준 데이터타입과 일치하는 값을 배정/대입해야 한다. public class Geometry { public static void main (String[] args) int sides = 7; // declaration with initialization System.out.println ("A heptagon has " + sides + " sides."); sides = 10; // assignment statement System.out.println ("A decagon has " + sides + " sides."); sides = 12; System.out.println ("A dodecagon has " + sides + " sides."); }
final int MIN_HEIGHT = 69; 상수(Constants) 상수는 변수와 비슷하나 프로그램에서 값이 변하지 않고 항상 동일한 값을 가지게 된다. 이런 경우 변수가 아니라 상수로 사용한다. 만약 상수의 값을 바꾸려고 시도하면 컴파일러는 에러를 발생시킨다. 자바에서, 상수를 선언하기 위해 final을 사용한다. final int MIN_HEIGHT = 69;
상수(Constants) 상수를 사용하는 세가지 이유 좋은 프로그래밍 습관 => 값에 특별한 의미를 부여하므로 프로그램 코드를 이해하기 쉽다. 예를 들어, MAX_LOAD 가 250보다 더 의미가 있다 프로그램의 유지보수를 쉽게 한다. 상수가 여러 곳에 사용되어져 있는 경우 상수 선언부만 수정해주면 된다. 값이 변경되는 것을 허용하지 않음으로 부주의한 오류를 방지할 수 있다. 좋은 프로그래밍 습관 => 리터럴 보다 상수를 사용하는 것이 바람직 함.
Outline Character Strings Variables and Assignment Primitive Data Types Expressions Data Conversion Interactive Programs Graphics Applets Drawing Shapes
기본데이터(Primitive Data) 자바에는 8개의 기본 데이터타입이 있다. 4개의 정수 byte, short, int, long 2개의 실수 float, double 1개의 문자(characters) char 1개의 논리값(boolean values) boolean
기본수치데이터(Numeric Primitive Data) 기본 수치데이터 간의 차이는 값이 저장되는 메모리의 사이즈이다. Type byte short int long float double Storage 8 bits 16 bits 32 bits 64 bits Min Value -128 -32,768 -2,147,483,648 < -9 x 1018 +/- 3.4 x 1038 with 7 significant digits +/- 1.7 x 10308 with 15 significant digits Max Value 127 32,767 2,147,483,647 > 9 x 1018 값을 저장하기 메모리 크기가 다르며, 표현 할 수 있는 값의 범위가 다르다.
문자(Characters) char 변수는 하나의 문자를 저장 Character literals은 단일 따옴표로 표현 'a' 'X' '7' '$' ',' '\n' 선언의 예 : char topGrade = 'A'; char terminator = ';', separator = ' '; 기본 문자 변수와 스트링객체의 차이는 문자변수는 하나의 문자를 저장할 수 있으나 스트링객체는 여러 개의 문자를 저장한다는 점이다.
Character Sets character set 은 문자의 순서화된 리스트인데 각 문자는 고유의 숫자값을 가지고 있다. 자바에서 char 변수는 Unicode character set 의 어떠한 문자값도 저장 할 수 있다. Unicode character set는 하나의 문자를 위해 16비트를 사용하고 65,536개의 고유의 문자를 가진다. 이것은 국제적인 문자셋이며, 기호(symbols)와 세계 여러나라의 문자를 포함하고 있다.
문자(Characters) uppercase letters lowercase letters punctuation digits ASCII character set 은 Unicode와 비슷하며 오래전부터 사용해왔으며 지 금도 여전히 많이 사용하고 있다. ASCII characters 는 Unicode character set의 subset이며 아래의 문자 들을 포함한다. uppercase letters lowercase letters punctuation digits special symbols control characters A, B, C, … a, b, c, … period, semi-colon, … 0, 1, 2, … &, |, \, … carriage return, tab, ...
논리값(Boolean) boolean 값은 참(true)와 거짓(false)를 표현 예약어인 true 와 false 는 boolean 타입으로 선언되어 사용되었 을때에만 유효하다. boolean done = false; boolean 변수는 전구의 빛이 들어온 상태나 나간 상태, 스위치 on/off 같 이 두가지 상태만을 가졌을 때 사용된다.