34
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 การโปรแกรมเชิงวัตถุ

2.Java fundamentals

Embed Size (px)

DESCRIPTION

สือการเรียนการสอน เรื่อง โปรแกรมเชิงวัตถุ 2.Java fundamentals โดยคุณ Kan http://learners.in.th/file/zniperlll

Citation preview

Page 1: 2.Java fundamentals

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

การโปรแกรมเชงวตถ

Page 2: 2.Java fundamentals

2Object-Oriented Programming 2/2551

Contents

keywords, reserved words

Identifiers and variables

Primitive data types

Literals

Type conversion

Constants

Page 3: 2.Java fundamentals

3Object-Oriented Programming 2/2551

Java Keywords

Keywords คอ ค าทถกก าหนดไวในภาษาในการเขยนโปรแกรมใหม

ความหมายเฉพาะเพอใหคอมไพเลอรเขาใจและน าไปตความได

Page 4: 2.Java fundamentals

4Object-Oriented Programming 2/2551

Reserved words

Reserved words (ค าสงวน) คอ ค าทมความหมายในการตความส าหรบ

คอมไพเลอร

จาวา ม reserved word อก 3 ตวคอ

true false null

Page 5: 2.Java fundamentals

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?

Page 6: 2.Java fundamentals

6Object-Oriented Programming 2/2551

Primitive Data Types

การเขยนโปรแกรมมการจดการกบขอมลซงจดเกบอยในหนวยความจ า

การใชงานขอมลตองมการประกาศตวแปรส าหรบเกบขอมล และชนดของ

ขอมลทจะเกบ

เชน ตองการเกบขอมลทเปนเลขจ านวนเตม กตองประกาศตวแปรเปน

ชนดขอมลแบบจ านวนเตม

number1 10

number2 25

sum 35

ประกาศเปนจ านวนเตม เกดการจองพนทในหนวยความจ า สามารถเกบขอมลในหนวยความจ าได

Page 7: 2.Java fundamentals

7Object-Oriented Programming 2/2551

Primitive Data Types

จาวามชนดขอมลพนฐานใหใชงาน 8 ชนด

Logical : boolean

Textual : char

Integral : byte, short, int, long

Floating-point : float, double

Page 8: 2.Java fundamentals

8Object-Oriented Programming 2/2551

Primitive Data Types

ขอมลพนฐานแตละชนดใชพนทในการเกบขอมลตางกน คาทเกบไดก

ตางกนดวย

Page 9: 2.Java fundamentals

9Object-Oriented Programming 2/2551

Variable

ตวแปร หรอ variable จะใชในการเกบขอมลทง input และ output

จากตวแปรในคณตศาสตร เชน sum = x + y

ในคอมพวเตอร การจะใชตวแปรคอการใชงานหนวยความจ า

ตวแปร จงมคณสมบตส าคญคอ

ชอตวแปร(name)

ชนดขอมล(type)

ขนาดหนวยความจ า(size)

คาทเกบ(value)

Page 10: 2.Java fundamentals

10Object-Oriented Programming 2/2551

Variables declaration

การประกาศตวแปร ท าไดโดยการตงชอตวแปร และระบชนดขอมลของตว

แปรนน

การใชงานตวแปร ตองมการประกาศตวแปรกอน จากนนจงก าหนดคาให

ตวแปร แลวจงจะสามารถท าการค านวณได

Variable declaration syntax

<data type> <variable name>;

int x; double bigNum;

short x, y, z; float number;

Page 11: 2.Java fundamentals

11Object-Oriented Programming 2/2551

Variables declaration

ตวอยาง ประกาศตวแปร เชน int y;

เปนการจดสรรพนทในหนวยความจ าใหตามขนาดชนดตวแปร int คอ 32 bits

โดยเรยกชอต าแหนงของหนวยความจ านวา y

ในการประกาศตวแปร จะยงไมมการก าหนดคาเรมตนให จนกวาจะมการ

ก าหนดคาใหตวแปร เชน y = 0 ; จงจะมการเกบคาทต าแหนง y เปน 0

y 0

คาทเกบใน y สามารถเปนตวเลขจ านวนเตมทมคาอยระหวาง

-2147483648 ถง 21474836487

Page 12: 2.Java fundamentals

12Object-Oriented Programming 2/2551

Variables declaration

int age;

float salary;

age เปน int สวน salary เปน float

ใชเนอทในหนวยความจ า 32 bits เทากน แตใชงานไดตางกน

age เกบขอมลไดเฉพาะเลขจ านวนเตม

salary เกบเลขทศนยมได

Page 13: 2.Java fundamentals

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

Page 14: 2.Java fundamentals

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 ไมได

Page 15: 2.Java fundamentals

15Object-Oriented Programming 2/2551

Literal

ในค าสง print เชอม

‚ขอความ‛ กบตวแปร

ดวยเครองหมาย +

Page 16: 2.Java fundamentals

16Object-Oriented Programming 2/2551

Literal

Literal คอ คาขอมลทแนนอนซงระบไวในโปรแกรม เชน

‘A’, 100, 78.5, true

ประเภทของ literal

Integer literal

Floating-point literal

Boolean literal

Character literal

String literal

Page 17: 2.Java fundamentals

17Object-Oriented Programming 2/2551

Boolean Literal

Boolean ม literal แสดงคาทางตรรกะเพยง 2 ตว คอ true กบ false

Page 18: 2.Java fundamentals

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

Page 19: 2.Java fundamentals

19Object-Oriented Programming 2/2551

Character Literal

Escape sequence character

Page 20: 2.Java fundamentals

20Object-Oriented Programming 2/2551

Character Literal

Page 21: 2.Java fundamentals

21Object-Oriented Programming 2/2551

String Literal

String เปนขอความซงอาจประกอบดวยตวอกษรตวเดยวหรอหลายตว

String ตองคลมดวย double quote (‚ ‛)

เชน ‚a‛, ‚A string‛, ‚data1 \t data2‛, ‚line1 \n line2‛

Page 22: 2.Java fundamentals

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

Page 23: 2.Java fundamentals

23Object-Oriented Programming 2/2551

Integer literal

Page 24: 2.Java fundamentals

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

ต าแหนง

Page 25: 2.Java fundamentals

25Object-Oriented Programming 2/2551

Floating-point literal

Page 26: 2.Java fundamentals

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 สงกวา กจะใชหนวยความจ าเยอะกวา

Page 27: 2.Java fundamentals

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 ต า

Page 28: 2.Java fundamentals

28Object-Oriented Programming 2/2551

Type conversion - การแปลงชนดขอมล

การด าเนนการทางคณตศาสตร เชน X = operand + operand

ถา operand ทมชนดขอมลเดยวกน ผลลพธทไดกจะไดชนดขอมลนน

ถา operand ตางชนดขอมลกน จะตองท าการแปลงให operand มชนด

เดยวกนกอน จงจะด าเนนการได

การแปลงชนดขอมลของจาวา ม 2 แบบ คอ

Implicit type conversion

Explicit type conversion

Page 29: 2.Java fundamentals

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

Page 30: 2.Java fundamentals

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)

Page 31: 2.Java fundamentals

31Object-Oriented Programming 2/2551

Ex. Integral type demo. What the output is?

Page 32: 2.Java fundamentals

32Object-Oriented Programming 2/2551

Constant หรอ คาคงท

คาคงท คอตวแปรทเมอท าการก าหนดคาแลวจะมคาเปนคานนไปตลอด

การท างานของโปรแกรม โดยไมสามารถเปลยนแปลงไดอก

การประกาศคาคงท ใหระบค าวา final ไวหนาชนดขอมล

final <data type> <constant_name> = <value>;

เชน

final double PI = 3.1416;

ปกตนยมตงชอคาคงทดวยตวอกษรตวใหญทงหมด

Page 33: 2.Java fundamentals

33Object-Oriented Programming 2/2551

Constant หรอ คาคงท

ตวอยางการประกาศคาคงท

Result

area = 78.54

Page 34: 2.Java fundamentals

34Object-Oriented Programming 2/2551

แบบฝกหด

จงเขยนโปรแกรมเพอหาวา 26.5 องศาเซลเซยส เทากบกองศาฟาเรน

ไฮต สตรคอ

F = (9/5)*C + 32;