Microsoft PowerPoint - lec02_ ppt [호환 모드]

Similar documents
Microsoft PowerPoint - lec2.ppt

PowerPoint 프레젠테이션

Microsoft PowerPoint - lec3.ppt

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

OCW_C언어 기초

JAVA PROGRAMMING 실습 02. 표준 입출력

PowerPoint Presentation

슬라이드 1

PowerPoint Presentation

PowerPoint 프레젠테이션

PowerPoint Presentation

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

OCW_C언어 기초

03-JAVA Syntax(2).PDF

PowerPoint 프레젠테이션

Microsoft PowerPoint - Chapter_04.pptx

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

PowerPoint Presentation

K&R2 Reference Manual 번역본

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - chap03-변수와데이터형.pptx

PowerPoint 프레젠테이션

1

02 C h a p t e r Java

PowerPoint Presentation

Microsoft PowerPoint - lec7_package [호환 모드]

PowerPoint 프레젠테이션

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Microsoft PowerPoint - 2강

JAVA PROGRAMMING 실습 08.다형성

Microsoft PowerPoint - Chapter_02.pptx

Microsoft PowerPoint - C++ 5 .pptx

PowerPoint 프레젠테이션

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

C++ Programming

PowerPoint Presentation

chap 5: Trees

TEST BANK & SOLUTION

PowerPoint Presentation

C# 입문 : 이론과 실습

4.0 개요 p.116 수식 (expression) 연산자 (operator) 와피연산자 (operand) 로구성 수식은평가 (evaluate) 되어최종적으로 1 개의결과값이됨 피연산자 : 상수, 변수, 또다른수식 sum - 10 (a+b) / 2 연산자 2

PowerPoint 프레젠테이션

Microsoft PowerPoint - c2.ppt

강의 개요

10.0pt1height.7depth.3width±â10.0pt1height.7depth.3widthÃÊ10.0pt1height.7depth.3widthÅë10.0pt1height.7depth.3width°è10.0pt1height.7depth.3widthÇÁ10.0pt1height.7depth.3width·Î10.0pt1height.7depth.3width±×10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width¹Ö pt1height.7depth.3widthŬ10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width½º, 10.0pt1height.7depth.3width°´10.0pt1height.7depth.3widthü, 10.0pt1height.7depth.3widthº¯10.0pt1height.7depth.3width¼ö, 10.0pt1height.7depth.3width¸Þ10.0pt1height.7depth.3width¼Ò10.0pt1height.7depth.3widthµå

4장.문장

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

07 자바의 다양한 클래스.key

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - 04-UDP Programming.ppt


금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

슬라이드 1

Microsoft PowerPoint - chap06-2pointer.ppt

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp

쉽게

11장 포인터

Microsoft PowerPoint - Java7.pptx

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

금오공대 컴퓨터공학전공 강의자료

Design Issues

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

슬라이드 1

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

PowerPoint 프레젠테이션

Microsoft PowerPoint - lec12 [호환 모드]

제11장 프로세스와 쓰레드

Java ...

본 강의에 들어가기 전

CHAPTER 02 데이터형과수식 JAVA Programing

PowerPoint Presentation

JAVA PROGRAMMING 실습 09. 예외처리

Microsoft PowerPoint - [2009] 02.pptx

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

<342EBAAFBCF620B9D720B9D9C0CEB5F92E687770>

Microsoft PowerPoint - chap-05.pptx

09-interface.key

PowerPoint 프레젠테이션

Cluster management software

chap x: G입력

Microsoft PowerPoint - 2장 변수와 자료형 pptx

윤성우의 열혈 TCP/IP 소켓 프로그래밊

C# Programming Guide - Types

01-OOPConcepts(2).PDF

어휘구조 자료형 연산자 형변환 [2/49]

쉽게 풀어쓴 C 프로그래밍

자바 프로그래밍

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

PowerPoint Presentation

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드]

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

2 장수의체계 1. 10진수 2. 2진수 3. 8진수와 16진수 4. 진법변환 5. 2진정수연산과보수 6. 2진부동소수점수의표현 한국기술교육대학교전기전자통신공학부전자전공 1

Chapter 4. LISTS

Transcription:

JAVA 프로그래밍 2. 기본문법 한동일 학습목표 To learn about identifier To learn about primitive type To understand the proper use of literals To use the String type to define and manipulate character strings To understand integer and floating-point numbers To recognize the limitations of the numeric types 2/63

토큰 (Token) 문법적으로의미있는최소의단위 if (i<100) sum += i; 토큰 : if, (, i, <, 100, ), sum, +=, i, ; (10 개 ) 예약어 (keyword) : abstract, boolean,..., while 특수형태연산자 (operator) : +, -, *, /, >, >=...,<<, >>, >>> 토큰 구분자 (delimiter) :, ;. ( ) { } [ ] < > 일반형태 식별자 (identifier) : sum, stk, ptr,... 리터럴 (literal) : 12, 5.53, 5.97e24, 'c', string, true, false, null 3/63 예약어 (keyword, reserved word) 총 50 개 abstract assert boolean break byte case catch char class const continue default do double else enum extends final finally float for goto if implements import instanceof int interface long native new package private protected public return short static ti strictfp ti tf super switch synchronized this throw throws transient t try void volatile while - const, goto는현재사용안함 4/63

식별자 식별자 (identifier) 변수, 상수, 메소드, 배열, 문자열, 사용자가정의하는클래스나인터페이스등을구분할수있는이름 첫문자는영문자나한글, _ 혹은 $ 의특수문자로시작 첫문자이후로는영문자, 한글, 숫자, _, $ 가임의의순서로가능 길이에는제한을두지않는다 예약어, null, true, false 는식별자로사용할수없다. 대, 소문자를구분하여사용 바른명칭 : sum, sum1, _sum, $sum, money_sum, MoneySum, 합1 틀린명칭 : 1sum, sum!, #sum, Money Sum, package 5/63 식별자 (identifier) 식별자의사용관례 클래스, 인터페이스이름은대문자로시작 메소드, 변수, 배열, 문자열등의이름은소문자로시작 클래스명은명사로, 메소드명은동사로표현 카멜 (camel) 표기법 클래스, 인터페이스이름은대문자로시작, 두단어이상인경우각단어의첫글자를역시대문자로나타냄 메소드, 변수등의이름은소문자로시작하되두단어이상인경우둘째단어부터각단어의첫글자를대문자로나타냄 Class 의명칭예 : Student, Button, FileInputStream 등 변수의명칭예 : sum, sumofgrades, layoutsize 등 6/63

리터럴 (literal) 상수선언및변수초기화에사용된값자체 정수형리터럴, 실수형리터럴, 문자형리터럴, 스트링리터럴, true, false, null 예 : final double DIME = 0.1; //0.1 이리터럴 정수형리터럴 10 진수,8 진수,16 진수 10진수 : 15, 255, 65535 8 진수 : 017, 0377, 0177777 16진수 : 0xf, 0xff, 0xffff default : 32 bit 접미어 -L, -l : 64 bit 16, 26l, 45L 7/63 실수형리터럴 (literal) 지수 (exponent) 의유무에따라 고정소수점수 : 1.414, 3.1415924 부동소수점수 : 0.1414e01, 0.1414E1 정밀도 (precision) 에따라 float 형 : 접미어 -f, -F 3.14f, 0.526f double 형 : default, 접미어 -d, -D 3.14, 0.526 float initvalue = 3.14; // compile error 유발 8/63

리터럴 (literal) 문자형리터럴 단일인용부호 (single quote) 사이에표현, 예 : A Unicode 표현 : \u+16 진수 2 바이트코드, 예 : \u0041 특별한문자 : escape sequence \n newline(\u000a) \t tab(\u0009) \b backspace(\u0008) \r return(\u000d) \f form feed(\u000c) 논리형리터럴 binary value true, false 9/63 리터럴 (literal) 스트링리터럴 이중인용부호 (double quote) 사이에표현 I am a string \ \ java.lang.string 클래스의객체로취급 객체참조리터럴 null 아무객체도가리키지않는상태 초기화에사용 부적당하거나객체를생성할수없는경우사용 10/63

자료형 (data type) 자료형 기본형 참조형 수형 - 정수형, 실수형 문자형 논리형 배열형 클래스형 인터페이스형 자료형은구조및개념, 값의범위, 연산등을정의. 11/63 기본형 (Primitive type) 기본형 수형문자형논리형 정수형 실수형 char boolean int short float double byte long 12/63

특징 기본형 (Primitive type) 기본형의크기는정해져있음 따라서 C 와는달리기본형의크기는 CPU 나운영체제에따라변하지않음 boolean (1Byte, true 또는 false) char byte short int (2Bytes, Unicode) (1Byte, -128 ~ 127) (2Bytes, -32,768 ~ 32,767) (4Bytes -2 31 ~ 2 31-1 ) long (8Bytes, -2 63 ~ 2 63-1) float double (4Bytes -3.4E38 ~ 3.4E38) (8Bytes, -1.7E308 ~ 1.7E308) 13/63 기본형 (Primitive type) 정수형 (integer type) 유형 크기 최소값 최대값 byte 8bit -128 127 short 16bit -32768 32767 int 32bit -2147483648 2147483647 long 64bit -9223372036854775808 9223372036854775807 C/C++ 와는달리 unsigned 는지원하지않음 실수형 (real type) float(32비트 ), double(64비트 ) 실수의표현방법과실수연산은 IEEE 754 표준따름 http://grouper.ieee.org/groups/754/ 참조 14/63

기본형 (Primitive type) 논리형 (boolean type) true 와 false 중하나의값만을가지는자료형 숫자값가질수없음 다른자료형으로변환되지않음 크기 :8bit 문자형 (character type) Unicode 사용 15/63 Unicode 초기에는 2 바이트계의국제문자부호체계로개발 애플, IBM, MS 사의컨소시엄이 1990 년발표 1995 년 9 월 ISO/IEC JTC1 에서국제표준제정 현재표현가능문자 : 107,000 문자이상 Unicode version 1.0: 38885 자 한자 : 39.89% 사용 한글 : 17.04% 사용 사용자정의영역 : 6400 자 현재 4 바이트체계까지확장 : Unicode 6.2 16/63

Unicode 주요코드체계 start t end description start t end description 0000 1FFF Alphabets 0000 007F Basic Latin 0370 03FF Greek 1100 11FF Hangul Jamo 3040 30FF Hiragana, 4E00 9FFF Han Characters Katagana 3130 318F Hangul AC00 D7A3 Hangul Syllables Compatibility Jamo E000 F8FF Private Use F900 FFFF Miscellaneous Unicode Homepage : http://www.unicode.org/ 17/63 문자열 문자열은문자형데이터의배열 자바에서문자열은표준객체처럼취급 를사용하여문자열을표현 +, += 를사용하여새로운문자열을생성 String 클래스또는 StringBuffer 클래스를사용하여문자열객체들을생성 String 클래스 : 상수문자열을생성 StringBuffer 클래스 : 갱신가능문자열생성 18/63

java.lang 의클래스들 Object Number System Integer Character String Byte Short Long Float Boolean Double StringBuffer 문자열처리클래스 19/63 String Class 문자열객체를생성하고처리하는클래스 문자열객체의생성 String 객체이름 = new String( 문자열 ); String 객체이름 = 문자열 ; http://download.oracle.com/javase/6/docs/api/java/lang/string.html 참조 http://download.oracle.com/javase/7/docs/api/index.htmloracle com/javase/7/docs/api/index html 에서 String 클래스참조 20/63

String Class 대표적인메소드 char charat(int index) : 스트링내의특정한위치에있는문자를리턴 int length() : 스트링의길이를리턴 String touppercase() : 스트링의문자들을대문자로바꾸어준다 String tolowercase() : 스트링의문자들을소문자로바꾸어준다. String substring(int beginindex) : beginindex 에서지정한위치부터스트링의끝까지에해당하는서브스트링을만듬 기타 : indexof, lastindexof 등등 21/63 문자열비교 String Class string.compareto(otherstring) 두문자열 string 과 otherstring 간의각문자열의 code 값비교 string > othersting : 양수값반환 string < othersting : 음수값반환 string == othersting : 0 반환 otherstring s t r i n g c o m p a r e 0 string c o m p l e t e! 0 비교순서즉, s(=115) 와 c(=99) 의코드값비교비교후 s>c이므로출력값은코드의차이 16 반환 22/63

String Class 기타문자열비교메소드 int comparetoignorecase(string str) : 두문자열의비교하되대소문자의차이를무시 boolean regionmatches(int start, String other, int ostart, int len) : 두문자열의일정영역의일치성을확인할수있는메소드 boolean startswith(string prefix) : 문자열이 prefix로시작하면참을 return boolean startswith(string prefix, int toffset) : 문자열의 toffset 위치가 prefix로시작하면참을 return boolean endswith(string suffix) : 문자열이 suffix 로끝나면참을 return String trim() : 스트링의앞또는뒤에있는공백문자를삭제하는기능 String replace() 등등 23/63 String Class 문자열의변환 static String valueof( ( 기본데이터형 ) 메소드를이용 다양한기본데이터형을문자열로변환 Integer Class, Double Class, Float Class 등등 : 각문자열을해당자료형으로변환하는메소드제공 기본데이터형 기본데이터형을문자열로 문자열을기본데이터형으로 boolean int long float double String.valueOf(boolean) String.valueOf(int) String.valueOf(long) String.valueOf(float) String.valueOf(double) new Boolean(String).booleanValue() Integer.ParseInt(String, int base) new Integer(String).intValue(); Long.ParseLong(String, int base) new Float(String).floatValue() new Double(String).doubleValue() 24/63

StringBuffer Class 문자열조작연산을제공 스트링의내용이자주변하는경우에효율적으로처리 객체생성자 public StringBuffer() : 초기값으로 (empty string) 문자열생성 public StringBuffer(String str) : 초기값 str 을갖는문자열생성 public StringBuffer(int length) : length 크기의문자열을저장할공간을확보 객체의생성예 StringBuffer dest = new StringBuffer(); StringBuffer dest = new StringBuffer( Test ); StringBuffer dest = new StringBuffer(len); 25/63 메소드 StringBuffer Class void setcharat(int index, char ch) : index 위치의문자를 ch 로변경 void setlength(int newlength) : 문자열버퍼의길이를 newlength 로재설정 StringBuffer append(type obj) : 다양한데이터형의 obj 를스트링으로바꾸어스트링에추가 StringBuffer insert(int offset, Type obj) : 다양한데이터형의 obj 를스트링으로바꾸어지정된위치에삽입 Type 로설정가능한데이터형 Object String char[] boolean char int long float double 26/63

연산자 (Operator) 식의의미를결정 연산자 (operator), 피연산자 (operand) 로구성 식의값에따라 산술식, 관계식, 논리식으로구분 표준 C 언어와비슷 언어시스템에서제공하는연산자들의의미와사용 법습득 특히, 수학적인의미와구별 27/63 연산자의종류 산술연산자 : + - * / % 단항 + 단항 - 관계연산자 : > >= < <= ==!= 논리연산자 : &&! 자바언어의연산자 증감연산자 : ++ -- 비트연산자 : & ^ ~ << >> >>> 조건연산자 :? : 배정연산자 : = += -= *= /= %= &= ^= = >>= <<= >>>= 캐스트연산자 : ( 자료형 ) 배열 / 배열리스트연산자 : [] <> 메소드연산자 : (). instanceof 연산자 : instanceof 28/63

산술연산자 (arithmetic operator) 수치연산을나타내는연산자 이항산술연산자 :+ +, -, *, /, % 단항산술연산자 : +, - x = -5 ; // 음수 5 x = -(-5) ); // 양수 5 x = -(3-5) ; // 양수 2 % : remainder operator x%y = x - (x / y) * y 29/63 산술연산자- 무한연산 무한연산 (infinite arithmetic) java.lang.float, java.lang.double 에서 POSITIVE_INFINITY, NEGATIVE_INFINITY 상수제공 NaN(Not ( a Number) http://download.oracle.com/javase/6/docs/api/java/lang/packa ge-summary.html 참조 덧셈, 뺄셈연산 곱셈, 나눗셈, 나머지연산 x y x+y x-y x y x/y x%y + + + NaN 유한수 0.0 NaN + - NaN + 유한수 0.00 x - + NaN - 0.0 0.0 NaN NaN - - - NaN 유한수 NaN NaN N + NaNN NaNN NaN N NaNN 30/63

관계연산자 (relational operator) 두개의값을비교하는연산자 연산결과 : true or false 관계연산자가포함된식 : 관계식 연산자 for, while,...,,,,, b == x < y ===> b == (x < y) 우선순위 산술연산자보다낮다. a > b + c ===> a > (b + c) 31/63 관계연산자 (relational operator) 관계연산자수학표기와의차이점 Java Math Notation Description > > Greater than >= Greater than or equal < < Less than <= Less than or equal == = Equal!= Not equal == : 동등비교 a = 5; // Assign 5 to a if (a == 5)... // Test whether a equals 5 32/63

논리연산자 (logical operator) 두피연산자의논리관계를나타내는연산자 연산자!(NOT), &&(AND), (OR) ( 높음 ) ( 낮음 ) a < b && b < c 1 2 3 33/63 증감연산자 연산자기호 ++, -- 변수가아닌식에는사용못함 (a + b)++ // error 실수형적용안됨 전위연산자 n = 1; x = ++n; // x=2, n=2 후위연산자 n = 1; x = n++; // x=1, n=2 34/63

비트연산자 (bitwise operator) 비트연산자 비트단위로연산 --- 기억장소절약 종류 --- &,, <<, >>, >>>, ^, ~ 피연산자는반드시정수형 우선순위 연산자 ~ << >> >>> & ^ 우선순위 ( 높음 ) ( 낮음 ) 35/63 비트연산자 (bitwise operator) 비트논리곱 1001 2 & 0011 2 = 0001 2 변수의일정부분을매스킹 (masking) 하여특정부분만을추출하기위해사용 비트논리합 1001 2 0011 2 = 1011 2 배타적논리합 (Exclusive OR) 1001 2 ^ 0011 2 = 1010 2 1 의보수 (One s Complement) ~ 00001010 2 = 11110101 2 36/63

비트연산자 (bitwise operator) 비트이동연산자 (shift operator) ) 왼쪽이동 (<<) : 부호유지, LSB 에 0 을삽입 x << y = x * 2 y 오른쪽이동 (>>) : 부호유지, MSB 값을반복해서삽입 x >> y = x/2 y 부호없는오른쪽이동 (>>>) :MSB 에 0 을삽입 부호없는정수 (unsigned integer) 를지원하지않기 때문에제공 (-1) >>> 2 => 1073741823 37/63 조건연산자 (conditional operator) 조건연산자 형태 : 식 1? 식 2 : 식 3 (3 항연산자 ) max = x > y? x : y ; if (x > y) max = x; else max = y; 참 x>y 거짓 max = x; max = y; 38/63

배정연산자 (assignment operator) 배정연산자의형태 식 1 = 식 1 op 식 2 식 1 op= 식 2 결합연산자 산술연산자 : + - * / % 비트연산자 : & ^ << >> >>> 의미 : sum += i ; sum = sum + i ; x *= y + 1; x = x * y + 1; x = x * (y+1) 39/63 캐스트연산자 (cast operator) 캐스트연산자 --- 자료형변환연산자 형태 : ( 자료형 ) 연산식 캐스트연산자사용예 : (int) 3.75 ===> 3 (float) 3 ===> 3.0 (float) (1 / 2) ===> 0.0 (float) 1/2 ===> 0.5 40/63

형변환 자료형의크기방향 광역화형변환 작은자료형의값을큰자료형의값으로변환 협소화형변환 큰자료형의값을작은자료형의값으로변환 형변환의주체 묵시적형변환 컴파일러에의해자동수행 명시적형변환 캐스팅을이용하여프로그래머가형변환을명시 41/63 형변환 광역화형변환 컴파일러에의해자동으로수행되는묵시적변환 예 : byte short char int long float -> short, int, long, float, double -> int, long, float, double -> int, long, float, double -> long, float, double -> float, double -> double 정밀도상실 : int -> float long -> float long -> double 42/63

형변환 협소화형변환 프로그래머가반드시캐스트연산자를사용하여변환될자료형을표시하여변환. 예 : byte -> char short -> byte, char char -> byte, short int -> byte, short, char long -> byte, short, char, int float -> byte, short, char, int, long double -> byte, short, char, int, long, float 43/63 형변환 협소화형변환 캐스팅을하지않으면에러발생 예 : double balance = 13.75; int dollars = balance; // Error 캐스팅시소수부분없어짐 예 : int dollars = (int) balance; // OK, 그러나 dollars 는 13 44/63

실수형처리시참고사항 Math.round를사용하면실수값을반올림한정수값으로결정 예 : long rounded = Math.round(balance); // if balance is 13.75, then rounded is set to 14 실수의경우반올림오류로부정확한연산결과도출 이진수와십진수사이의변환과정에서발생 예 : double f = 4.35; System.out.println(100 * f); // prints 434.99999999999994 45/63 형변환 묵시적형변환 컴파일러에의해자동적으로수행 char c='a'; short s=1; int i=2; long l=3; float f=2.1f; double d=3.2; 1 i = ( c + s ); // i = 66 (int) (char) (short) (short) (int) 2 l = s + i ; // l = 3 (long) (short) (int) (int) (long) 3 d = f + d; // d = 5.3 (double) (float) (double) (double) (double) 46/63

형변환 명시적형변환 프로그래머가캐스트연산자를사용하여변환 char c='a'; short s=1; int i=2; long l=3; float f=2.1f; double d=3.2; 1 s = (short) ( c + i ); // s = 67 (short) (char) (int) (short) (int) 47/63 형변환예 int i, j; byte a = 64; byte b = -2; i = a; // 자동타입변환 j = b; // 자동타입변환 byte a 01000000 64 i = a; // 자동타입변환 변환 int i 00000000 00000000 00000000 01000000 64 byte b 11111110-2 j = b; // 자동타입변환 변환 int j 11111111 11111111 11111111 11111110-2 48/63

형변환예 int i = 257; byte b; b = (byte)i; // 강제타입변환 i = (int)22.9; // 강제타입변환 double 타입을강제로 int 타입으로변환 22.9 에서.9 가손실되어 22 만 i 에저장된다. b = (byte)i; // 강제타입변환 int i 00000000 00000000 00000001 00000001 257 손실 변환 실 byte b 00000001 1 i = (int)22.9; // 강제타입변환 int i 22.9 49/63 손실 형변환 형변환금지 같은자료형이외에다른자료형으로의변환이금지된자료형 boolean 형 50/63

연산자우선순위 연산자결합법칙우선순위 () []. 좌측결합 ( 높음 )! ~ ++ -- 단항 + 단항- ( 자료형 ) * / % 우측결합좌측결합 + - 좌측결합 << >> >>> < <= > >= instanceof 좌측결합좌측결합 ==!= 좌측결합 & ^ 좌측결합좌측결합좌측결합 && 좌측결합좌측결합? : 우측결합 = += -= *= /= %= &= ^= = <<= >>= >>>= 우측결합 ( 낮음 ) 51/63 연산자우선순위 y = x + y - z ; // 좌측결합, y = ((x+y) z) y = x = p + q ; // 우측결합, y = (x = (p + q)) y = -x++ ; // x 의값에단항 연산을적용한후 y 에배정하고 x 를증가 y = -++x ; // x 를증가한후 x 의값에단항 - 연산을적용한후 y에배정 y =-x+z; //x 의값에단항 연산한후 z 를더하 고그결과를 y 에배정 52/63

instanceof 연산자 연산자의왼쪽에있는객체가오른쪽에있는객체형의인스턴스일경우에참값, 아닐경우거짓값을반환 형태 : 객체 instanceof 객체형 instanceof C 가참값을반환할조건 객체 o 를생성한클래스 C 가 C 이거나 C 의하위클래스 C 가인터페이스일경우 C 는 C 를구현 C가 T 형의배열이고 o가 T형의배열일경우, T는 T 의하위인터페이스이거나하위클래스, 또는 T 와T가같은자료형 53/63 [ 실습 1] Unicode 강의홈페이지의 Unicode.java 파일을수행하여한글의 Unicode 영역을파악한다. 다양한한글을입력해보고각각의 Unicode를파악해본다. 임의의 Unicode 값에대한해당글자를파악해본다. 아래의 Unicode 홈페이지를서핑하여 Unicode 에대한이해를도모한다. Unicode Homepage : http://www.unicode.org/ org/ 54/63

[ 실습 2] - Logical Operator 강의홈페이지의 LogicalOperation.java code를분석하여각각의연산결과를계산하라. 실행을통해서결과를확인하라. 계산결과와실행결과가다른경우그이유를파악하라. 코드를수정하여다양한논리연산식을만들어보고예측결과를실행을통해확인하라. 55/63 [ 실습 3] - Bitwise Operator 강의홈페이지의 BitOperation.java code를분석하여각각의연산결과를계산하라. 실행을통해서결과를확인하라. 계산결과와실행결과가다른경우그이유를파악하라. 코드를수정하여다양한비트연산식을만들어보고예측결과를실행을통해확인하라. printf 메소드의용법은교재 175 페이지참고 56/63

[ 실습 4] - 디버깅 강의홈페이지의 Debug.java code는 3개의정수 (3, 4, 6) 의평균을구하고정수값 435 4.35 를 100 배하여출력하는프로그램을구현하고있다. 존재하고있는모든버그를찾아서디버깅하라. 계산결과와실행결과가다른경우그이유를파악하라. 57/63 [ 실습 5] - 무한연산 강의홈페이지의 InfinityArimethic.java code를이용하여무한연산결과를도출하라. 강의록 30페이지에나타낸다양한무한연산결과를얻을수있도록코드를수정하고이를보여라. 58/63

[ 실습 6] - Shift Operator 강의홈페이지의 ShiftOperation.java code를수정하여아래의 Shift Operator의기능을확인할수있도록구현하라. 4 >> 1, 4 << 1, 4 >>> 1-4 >> 1, -4 << 1, -4 >>> 1 4 >> 5, 4 << 5, 4 >>> 5-4 >> 5, -4 << 5, -4 >>> 5 코딩이전에먼저결과를계산하라. 계산결과와실행결과가다른경우그이유를파악하라. 필요시 printf 메소드를활용하라. 기타다양한경우를활용하여비트이동연산자의동작을 100% 이해하라. 59/63 [ 실습 7] Float vs. Double 강의홈페이지의 FloatVsDouble.java code를이용하여실수사이의캐스팅연산에대해서이해하라. 다양한값의 float 값에대한 double 화 다양한값의 double 값에대한 float 화 예측결과와실행결과가다른경우그이유를파악하라. 60/63

[ 실습 8] 정밀도의상실 강의홈페이지의 PrecisionTest.java code를이용하여 int 값을 float로변한시값의차이를파악하라. 다양한 int 값에대해서그변화를확인하라. 예측과다르면그이유를파악하라. long 값을 float로변환시정밀도의차이가발생하는지예측하고코딩을통해서확인하라. long 값을 double로변환시정밀도의차이가발생하는지예측하고코딩을통해서확인하라. 61/63 [ 실습 9] - Casting Cast라는이름의클래스를만들되강의록 46, 47 페이지에나타낸형변환코드를구현하고그결과를보여라. 아래의실행결과를예측하고코딩한후결과를확인하라. short s1=257; short s2=255; byte b1 = (byte) s1; // b1 =? byte b2 = (byte) s2; // b2 =? 예상결과와다른경우그이유를파악하라. 62/63

[ 실습 10] 산술연산구현예 아래와같이 5000 이라는 time 초기값을선언한이후 5000 초는몇시간몇분몇초인지를계산하는프로그램을작성하라. 추후 5000 이라는초기값대신에임의의초값을입력받아이를시, 분, 초로출력하는프로그램으로 update 될예정이다. int time = 5000; 출력예 : 5000초는 1시간, 23분, 20초입니다. 먼저 60, 600, 3600 등의쉬운초기값을사용하여프로그램이정상적으로동작하는지확인하라. 63/63