Upload
usablelabs
View
1.838
Download
1
Embed Size (px)
DESCRIPTION
สือการเรียนการสอน เรื่อง โปรแกรมเชิงวัตถุ 2.Java fundamentals โดยคุณ Kan http://learners.in.th/file/zniperlll
Citation preview
2. Java Fundamentals
Faculty of Technology and Environment
Prince of Songkla University, Phuket Campus
2/2551
976-140 Object-Oriented Programming
344-202 Introduction to Object-Oriented Programming
การโปรแกรมเชงวตถ
2Object-Oriented Programming 2/2551
Contents
keywords, reserved words
Identifiers and variables
Primitive data types
Literals
Type conversion
Constants
3Object-Oriented Programming 2/2551
Java Keywords
Keywords คอ ค าทถกก าหนดไวในภาษาในการเขยนโปรแกรมใหม
ความหมายเฉพาะเพอใหคอมไพเลอรเขาใจและน าไปตความได
4Object-Oriented Programming 2/2551
Reserved words
Reserved words (ค าสงวน) คอ ค าทมความหมายในการตความส าหรบ
คอมไพเลอร
จาวา ม reserved word อก 3 ตวคอ
true false null
5Object-Oriented Programming 2/2551
Identifiers
Identifiers คอ ชอทก าหนดใหแก คลาส เมธอด ตวแปร
การก าหนดชอตองเปนไปตามกฎตอไปน
ประกอบดวยตวอกษรภาษาองกฤษ หรอ _ หรอ $ หรอตวเลข
หามเวนวรรค หามขนตนดวยตวเลข
หามเปน keyword หรอ reserved word
Count _height $name public
userName main x1 balance$
3person Student-id identifier a@hotmail
Which words are correct identifiers?
6Object-Oriented Programming 2/2551
Primitive Data Types
การเขยนโปรแกรมมการจดการกบขอมลซงจดเกบอยในหนวยความจ า
การใชงานขอมลตองมการประกาศตวแปรส าหรบเกบขอมล และชนดของ
ขอมลทจะเกบ
เชน ตองการเกบขอมลทเปนเลขจ านวนเตม กตองประกาศตวแปรเปน
ชนดขอมลแบบจ านวนเตม
number1 10
number2 25
sum 35
ประกาศเปนจ านวนเตม เกดการจองพนทในหนวยความจ า สามารถเกบขอมลในหนวยความจ าได
7Object-Oriented Programming 2/2551
Primitive Data Types
จาวามชนดขอมลพนฐานใหใชงาน 8 ชนด
Logical : boolean
Textual : char
Integral : byte, short, int, long
Floating-point : float, double
8Object-Oriented Programming 2/2551
Primitive Data Types
ขอมลพนฐานแตละชนดใชพนทในการเกบขอมลตางกน คาทเกบไดก
ตางกนดวย
9Object-Oriented Programming 2/2551
Variable
ตวแปร หรอ variable จะใชในการเกบขอมลทง input และ output
จากตวแปรในคณตศาสตร เชน sum = x + y
ในคอมพวเตอร การจะใชตวแปรคอการใชงานหนวยความจ า
ตวแปร จงมคณสมบตส าคญคอ
ชอตวแปร(name)
ชนดขอมล(type)
ขนาดหนวยความจ า(size)
คาทเกบ(value)
10Object-Oriented Programming 2/2551
Variables declaration
การประกาศตวแปร ท าไดโดยการตงชอตวแปร และระบชนดขอมลของตว
แปรนน
การใชงานตวแปร ตองมการประกาศตวแปรกอน จากนนจงก าหนดคาให
ตวแปร แลวจงจะสามารถท าการค านวณได
Variable declaration syntax
<data type> <variable name>;
int x; double bigNum;
short x, y, z; float number;
11Object-Oriented Programming 2/2551
Variables declaration
ตวอยาง ประกาศตวแปร เชน int y;
เปนการจดสรรพนทในหนวยความจ าใหตามขนาดชนดตวแปร int คอ 32 bits
โดยเรยกชอต าแหนงของหนวยความจ านวา y
ในการประกาศตวแปร จะยงไมมการก าหนดคาเรมตนให จนกวาจะมการ
ก าหนดคาใหตวแปร เชน y = 0 ; จงจะมการเกบคาทต าแหนง y เปน 0
y 0
คาทเกบใน y สามารถเปนตวเลขจ านวนเตมทมคาอยระหวาง
-2147483648 ถง 21474836487
12Object-Oriented Programming 2/2551
Variables declaration
int age;
float salary;
age เปน int สวน salary เปน float
ใชเนอทในหนวยความจ า 32 bits เทากน แตใชงานไดตางกน
age เกบขอมลไดเฉพาะเลขจ านวนเตม
salary เกบเลขทศนยมได
13Object-Oriented Programming 2/2551
Assigning Variables
การก าหนดคาใหแกตวแปร ท าไดโดยใชเครองหมายเทากบ ( = )
Assignment statement syntax
<variable> = <expression>;
เชน y=10; กคอ ก าหนดใหคาทต าแหนงของหนวยความจ านเปน 10
y 10
<expression> อาจเปนคาหรอนพจนทตองการจะน าไปเกบใน <variable>
นพจน คอ ประโยคทประกอบดวย operator และ operand
sum = x + (y*5)/7;
sum
x 5
y 10
14Object-Oriented Programming 2/2551
Assigning Variables
กอนก าหนดคาใหตวแปรตองมการประกาศตวแปรกอน
ประกาศตวแปร int x;
ก าหนดคา x = 12;
หรอก าหนดคาในค าสงประกาศตวแปร
int x = 12;
ระวง เรองการก าหนดคาใหชนดขอมลถกตอง
int x; double d = 3.5;
x = d; // compile error !!!
// คาของ d เปน double ก าหนดให int ไมได
15Object-Oriented Programming 2/2551
Literal
ในค าสง print เชอม
‚ขอความ‛ กบตวแปร
ดวยเครองหมาย +
16Object-Oriented Programming 2/2551
Literal
Literal คอ คาขอมลทแนนอนซงระบไวในโปรแกรม เชน
‘A’, 100, 78.5, true
ประเภทของ literal
Integer literal
Floating-point literal
Boolean literal
Character literal
String literal
17Object-Oriented Programming 2/2551
Boolean Literal
Boolean ม literal แสดงคาทางตรรกะเพยง 2 ตว คอ true กบ false
18Object-Oriented Programming 2/2551
Character Literal
เปนอกษรตวเดยว เชน ‘a’, ‘B’ ซงตองม single quote (‘ ’) คลม
เปนอกขระควบคม (escape sequence) เชน \t, \r, \n
\xxx หมายถง ตวอกษรทมรหส ASCII เทากบคาของเลขฐาน 8 ทระบ
เชน สงพมพคา ‘\043’ จะไดผลลพธคอ #
\uxxxx หมายถง ตวอกษรทมรหส unicode เทากบคาของเลขฐาน 16 ท
ระบ เชน
เชน สงพมพคา ‘\u0023’ จะได #
1 ตวอกษร ใชเนอทหนวยความจ า 2 bytes
19Object-Oriented Programming 2/2551
Character Literal
Escape sequence character
20Object-Oriented Programming 2/2551
Character Literal
21Object-Oriented Programming 2/2551
String Literal
String เปนขอความซงอาจประกอบดวยตวอกษรตวเดยวหรอหลายตว
String ตองคลมดวย double quote (‚ ‛)
เชน ‚a‛, ‚A string‛, ‚data1 \t data2‛, ‚line1 \n line2‛
22Object-Oriented Programming 2/2551
Integer literal
Integer literal สามารถเปนไดทงเลขฐาน 10 (decimal) , ฐาน 8 (octal), ฐาน 16
(hexadecimal)
ปกต ตวเลขจ านวนเตม จะถอวาเปน int และฐาน 10
ถาตองการใหเปนจ านวนเตมแบบ long ตองระบ l หรอ L ตอทายเลขนน
ถาตองการใหเปนเลขฐาน 8 ใหน าหนาดวย 0
ถาตองการใหเปนเลขฐาน 16 ใหน าหนาดวย 0x หรอ 0X
Decimal Long Octal Hexadecimal
15 15L 017 0xF
16 16l 020 0x10
100 100L 0144 0x64
23Object-Oriented Programming 2/2551
Integer literal
24Object-Oriented Programming 2/2551
Floating-point literal
อาจอยในรปเลขฐานสบ เชน 66.889 หรอรป exponential เชน
6.07e17 (หมายถง 6.07 x 1017)
ระบให literal เปนชนดขอมลแบบ float ใหใส f หรอ F ตอทาย
6.55e12F 122f 4.002F
การระบให literal เปนชนดขอมลแบบ double ใหใส d หรอ D ตอทาย
8D 3.123439d
โดยปกต ถาไมระบ d หรอ f เลขทศนยมจะเปน double
Float เกบทศนยมได 7 ต าแหนง สวน double เกบทศนยมได 15
ต าแหนง
25Object-Oriented Programming 2/2551
Floating-point literal
26Object-Oriented Programming 2/2551
Precision of numeric data types
ชนดขอมลทเปนตวเลขม 6 ตวคอ
byte short int long integer number
float double real / floating point number
ชวงของคา (range) ทจะเกบในตวแปรทมชนดตางกนจะเกบไดตางกน
ถาชวงของคาทเกบไดใหญกวา กจะเรยกวา ม precision สงกวา เชน
Precision ของ floating point > integer
Precision ของ double > float
Precision ของ long > int > short > byte
ยง precision สงกวา กจะใชหนวยความจ าเยอะกวา
27Object-Oriented Programming 2/2551
Precision of numeric data types
ปกตแลวเราไมสามารถ assign คาทม precision สงกวาใหตวแปรทม
precision ต ากวา เชน
byte b=5; int i = 8888;
b = i; // compile error !!!
แต i = b; //compile ผาน
Precision สง
double
float
long
int
short
byte
Precision ต า
28Object-Oriented Programming 2/2551
Type conversion - การแปลงชนดขอมล
การด าเนนการทางคณตศาสตร เชน X = operand + operand
ถา operand ทมชนดขอมลเดยวกน ผลลพธทไดกจะไดชนดขอมลนน
ถา operand ตางชนดขอมลกน จะตองท าการแปลงให operand มชนด
เดยวกนกอน จงจะด าเนนการได
การแปลงชนดขอมลของจาวา ม 2 แบบ คอ
Implicit type conversion
Explicit type conversion
29Object-Oriented Programming 2/2551
Implicit type conversion
Implicit type conversion เปนการแปลงชนดขอมลทจาวาท าใหอตโนมต
การแปลงขอมลจะแปลงจากชนดขอมลทมความส าคญต ากวาเปน
ความส าคญสงกวา เพอไมใหสญเสยคาทแทจรงของขอมล
เชน int a = 5; short b=10;
a + b - 7 จะไดผลลพธทเปน int คอ 8
• b ถกแปลงเปน int, 7 เปน literal มองเปน int
ถา float a = 5f; int b = 10;
หาคาและชนดขอมลของผลลพธจาก a + b - 7
30Object-Oriented Programming 2/2551
Explicit type conversion หรอ Type Casting
Casting การแปลงขอมลทโปรแกรมเมอรตองระบชนดขอมลทตองการเอง
Type casting syntax ระบชนดขอมลทตองการแปลงในวงเลบ
(<data type>) <expression>;
ตวอยาง
short x = (short) 88778; //23242
y = (float) x / 3;
k = a + (double) (x + y * z)
31Object-Oriented Programming 2/2551
Ex. Integral type demo. What the output is?
32Object-Oriented Programming 2/2551
Constant หรอ คาคงท
คาคงท คอตวแปรทเมอท าการก าหนดคาแลวจะมคาเปนคานนไปตลอด
การท างานของโปรแกรม โดยไมสามารถเปลยนแปลงไดอก
การประกาศคาคงท ใหระบค าวา final ไวหนาชนดขอมล
final <data type> <constant_name> = <value>;
เชน
final double PI = 3.1416;
ปกตนยมตงชอคาคงทดวยตวอกษรตวใหญทงหมด
33Object-Oriented Programming 2/2551
Constant หรอ คาคงท
ตวอยางการประกาศคาคงท
Result
area = 78.54
34Object-Oriented Programming 2/2551
แบบฝกหด
จงเขยนโปรแกรมเพอหาวา 26.5 องศาเซลเซยส เทากบกองศาฟาเรน
ไฮต สตรคอ
F = (9/5)*C + 32;