82
บทที่ 4. ตัวดําเนินการ (Operators) อาจารย นัฐพงศ สงเนียม http://www.siam2dev.com [email protected] [email protected] Lec04_Operators_Last_Updated_24_12_2560.pdf

บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

บทที ่4. ตวัดําเนินการ(Operators)

อาจารย นัฐพงศ สงเนียมhttp://[email protected]@hotmail.com

Lec04_Operators_Last_Updated_24_12_2560.pdf

Page 2: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Reviews/ทบทวนเนือ้หา

• ชนิดขอมูลพืน้ฐาน Primitive DataType

• Keywords

• ขอกําหนดในการต้ังชื่อ

• การประกาศตัวแปร

Page 3: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Primitive Type

ชนิดขอมูลมีทั้งหมด 8 ชนิดดวยกัน และแบงเปน 4 กลุมดวยกนัคือ

• จํานวนเต็ม สวนใหญใชเก็บขอมูลจํานวนเต็ม ไดแก byte, short, int ,long

• จํานวนจริง ใชเก็บขอมูลที่เปนจุดทศนิยม ไดแก float, double

• ขอมูลตัวอักษร ใชเก็บขอมูลที่เปนตัวอักษร ไดแก char

• ขอมูลแบบบลูีน เปนชนดิตรรกศาสตรไดแก boolean

Page 4: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Primitive Type

Page 5: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

การประกาศตวัแปรรูปแบบ

ชนิดของตัวแปร ชือ่ตัวแปร;

เชน

- int number;

- long a2z;

- short num;

- char ch;

- double mm;

Page 6: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

การตั้งช่ือในภาษา Java (2)

ตัวอยางการตั้งชื่อท่ีถูกตองและไมถูกตอง

- int a2z;

- long a2z;

- short 1a;

- int a$4;

- int _char;

- int while ;

- int x,X ;

// ถูกตอง// ไมถูกตองเพราะช่ือซ้ํากบัขางบน// ไมถูกตองเพราะขึ้นตนดวยตัวเลข

// ถูกตอง// ถูกตองเพราะขึ้นตนดวย _// ไมถูกตองเพราะเปนคําสงวน

// ถูกตอง

Page 7: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Agenda

Operators Casting การรับขอมูลทางหนาจอ

String ลําดับความสําคัญของ operators

Precedence of Operators

Term and Expression

Page 8: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

ตัวดําเนนิการ Operator

Operator คือสัญลักษณ หรอื keywords ที่ใชสําหรับนําคามา

คํานวณบางอยางใหไดเปนผลลัพธ ซึ่งจะเรยีกอินพุตของ operator วา

operand

Unary Operator ใช operand 1 ตัว

◦ Pre-fix เชน --y , ++x

◦ Post-fix เชน y-- , x++

Binary Operator ใช operand 2 ตัว เชน a + b , x / y , a = 5

Page 9: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Term and Expression

Term คือคาหน่ึงคา อาจจะเปนคาคงที่ หรือ คาที่อยูในตัวแปร

Expression คือหนวยของโปรแกรมที่สามารถคํานวณออกมาเปน

คาคาหน่ึง ซึ่งอาจจะเปน term เดียว ๆ หรือประกอบขึ้นจากหลาย ๆ

term และ operator

7 X

X + 7Math.sqrt(X)

Y - Math.sqrt(X)A+b-5/2*4/6+7

ตวัอยา่ง เชน่

Term

Term

Expression

Page 10: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Operator กลุมตาง ๆ Assignment Operators

◦ สําหรับกําหนดคา โดยใช operator =

Arithmetic Operators

◦ สําหรับการคํานวณทางคณิตศาสตร

Bit-wise Operators

◦ สําหรับกระทํากับ bits ของเลขจํานวนเต็ม

Relational Operators

◦ สําหรับการเปรียบเทียบ ใหผลลัพธเปนคา boolean

Logical Operators

◦ สําหรับใชกระทํากับขอมูลชนิด boolean

Conditional Operators

◦ สําหรับเปรียบเทียบแลวตัดสินใจทําประโยคที่กําหนดให

Page 11: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Assignment Operators

ภาษา Java มี operators = สําหรับทําการกําหนดคา (assignment)

รูปแบบคําสั่ง

variable = [constance|expression];

ExampleX = ( a * a + 4.0 * b ) / 2.0;Y = 5;MyClass.name = “alovela”;

Page 12: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

ทดสอบโปรแกรม

class TestOperator1{public static void main(String [] args){ int x ,y ,z ;x = y = z = 1;System.out.println(x + "," + y +"," + z );x = (y = (z = z + 1 )+ 1 )+ 1;System.out.println(x + "," + y +"," + z );x = (y = 1) + (z = 1) ;System.out.println(x + "," + y +"," + z );//x = y = 1 + z = 1 ;

}}

Page 13: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

การสรางประโยคและการประมวลผลแบบเรียงลําดับ

class Test_Opt03 {public static void main(String[] args) {

double a, b, c;a = 1 + (Math.random() * 10);b = 1 + (Math.random() * 10);System.out.println("a = " + a + " and b = " + b);c = a + b; System.out.println("a + b = " + c);c = a - b; System.out.println("a - b = " + c);c = a * b; System.out.println("a * b = " + c);c = a / b; System.out.println("a / b = " + c);c = a % b; System.out.println("a % b = " + c);}

}

Page 14: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Arithmetic Operators

Operators ใชสําหรับการคํานวณทางคณิตศาสตร ซึ่งจะมี

Operands และผลลัพธเปนตัวเลข จํานวนเต็มหรือทศนิยมก็ได แบงเปน

4 ประเภทคือ

Integer Arithmetic Operators

Floating-point Arithmetic Operators

Arithmetic Assignment Operators

Increment and Decrement Operators

Page 15: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Integer Arithmetic Operators

Floating-point Arithmetic Operators

Integer Arithmetic Operators ไดแก + (บวก), - (ลบ), *

(คูณ), / (หาร) และ % (modulus) ที่ใชกระทํากบัเลขจํานวน

เต็มและจะไดผลลัพธเปนเลขจํานวนเต็ม

Floating-point Arithmetic Operators ไดแก + (บวก), -

(ลบ), * (คูณ), / (หาร) และ % (modulus) ที่ใชกระทํากับเลข

จํานวนทศนยิมและจะไดผลลัพธเปนเลขทศนิยม

Page 16: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

ตัวดําเนินการคณิตศาสตร (Arithmetic Operators)

Opt Integer Output Float Output

+ + 1 1 + 1.0 1.0

- - 2 -2 – 2.0 -2.0

ตัวดําเนินการเด่ียว(unary operator)

Page 17: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

ตัวดําเนินการคณิตศาสตร (Arithmatic Operators)

Opt Integer Output Float Output

+ 1 + 2 3 1.0 + 2.0 3.0

- 2 - 3 -1 2.0 – 3.0 -1.0

* 3 * 4 12 3.0 * 4.0 12.0

/ 24 / 5 4 24.0 / 5.0 4.8

% 16 % 7 2 16.0 % 7.0 2.0

ตัวดําเนินการคู(binary operator)

Page 18: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

ทดสอบโปรแกรม

System.out.println(1 + 2);…………System.out.println(2 - 3);………..System.out.println(3 * 4);System.out.println(6 % 7);

System.out.println(1.0 + 2.0);System.out.println(2.0 - 3.0);System.out.println(3.0 * 4.0);System.out.println(6.0 % 7.0);

System.out.println(2.0 - 3);System.out.println(3 * 4.0);

Page 19: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Arithmetic Assignment Operators

Operator ที่ใชคาของตัวแปรตัวหน่ึงมากระทํากับ operand แลว

เก็บผลลัพธไวที่ตัวแปรตัวน้ัน โดยมีรูปแบบประโยคดังน้ี

<variable> <op> = <operand>;

Example

X += 1; // X = X + 1Y -= 5; // Y = Y - 5X /= 4; // X = X / 4

Page 20: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Arithmatic Assignment Operators

op Form Meaning

+= x += y x = x + y

-= x -= y x = x – y

*= x *= y x = x * y

/= x /= y x = x / y

%= x %= y x = x % y

Page 21: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

ทดสอบโปรแกรม

int x = 1;x += 1; System.out.println(x);x *= 2; System.out.println(x);x -= 3; System.out.println(x);x /= 4; System.out.println(x);float y = 1f;y += 1; System.out.println(y);y *= 2; System.out.println(y);y -= 3; System.out.println(y);y /= 4; System.out.println(y);

Page 22: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Increment and Decrement Operators

Operators สําหรับใชในการเพิ่มคาหรือลดคาของตัวแปรทลีะ 1 เชน

++x; จะมีความหมายวา x = x + 1; และ

--x; จะมีความหมายวา x = x – 1;

มีวิธใีช 2 แบบคือ

1. ใชแบบ prefix เชน ++x จะทําการบวกหนึ่งใหแก x กอนแลวจงึสงผลลัพธออกมาเปนคาที่ไดจากการกระทํา

2. ใชแบบ posfix เชน x++ จะเก็บคา x ตอนนั้นไวกอน แลวจึงทําการบวกหนึ่ง แลวจงึสงคา x ที่ไดจากการกระทําออกมาเปนผลลัพธ

Page 23: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Increment and Decrement Operators

ตวัดําเนินการสําหรับเพิ่มคา่ ++

ตวัดําเนินการสําหรับลดคา่ --

int x = 10;int y;y = ++x;System.out.println(x);System.out.println(y);

int x = 10;int y;y = x++;System.out.println(x);System.out.println(y);

1111

1110

Page 24: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

ทดสอบโปรแกรมint a, b, x = 1, y = 1 ;

a = x++; b = ++y;

System.out.println(a + "," + b);

a = x--; b = --y;

System.out.println(a + "," + b);

…………1 2………………………………………1 0………………………..

Page 25: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Bit-wise Operator

เปน Operator สําหรับกระทาํกับทุก ๆ bits ของ operands ที่เปน

ขอมูลเลขจํานวนเต็ม(ไดแก byte, short, int และ long) หรือเปน

ตัวอักษร char แบงออกเปน 2 กลุมคือ

Boolean Bit-wise Operators

Assignment Bit-wise Operators

Page 26: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

การใชคําส่ังทางคณิตศาสตรทีจ่าวามีให

ตัวอยางในการหาคาสมการยกกําลังสอง (Quadratic Equation) ที่อยูในรูป ax2 + bx + c

= 0 ซึ่งคํานวณไดจากการใชสูตร

aacbbx

242

1−+−

=

aacbbx

242

2−−−

=

Page 27: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Boolean Bit-wise Operators

Op Meaning Example Result

~ Bitwise NOT ~(0110) 1001

& Bitwise AND 0011 & 0101 0001

| Bitwise OR 0011 | 0101 0111

^ Bitwise XOR 0011 ^ 0101 0110

<< Shift left 1011 << 2 1100

>> Shift right(sign bit) 1011 >> 2 1110

>>> Shift right(zero fill) 1011 >>> 2 0010

Page 28: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Assignment Bit-wise Operators

op Form Meaning

&= x &= y x = x & y

|= x |= y x = x | y

^= x ^= y x = x ^ y

<<= x <<= y x = x << y

>>= x >>= y x = x >> y

>>>= x >>>= y x = x >>> y

Page 29: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

ทดสอบโปรแกรม

System.out.println(~2);

System.out.println(2&1);

System.out.println(2|1);

System.out.println(2<<1);

System.out.println(2<<2);

System.out.println(-4>>1);

System.out.println(-1>>>1);

Page 30: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Comparison Operators

ไดแก ==, !=, >, <, >=, <= ใชทําการเปรียบเทียบคาของ

operands ทีมีชนิดขอมูลเปน byte, char, short, int, long, float และ

double สําหรับชนิดขอมูล boolean จะทําการเปรียบเทียบเทากับ

หรือ ไมเทากับไดเทาน้ัน

ผลลัพธจากการเปรียบเทียบจะไดเปนคา boolean

Page 31: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

ตัวดําเนินการเปรียบเทียบ(Comparison Operators)

Operator Meaning Example Result

> more than a > b false

< Less then a < b true

>= More than and equal a >= b false

<= Less than and equal a <= b true

== Equal a == b false

!= Not equal a != b true

int a = 0, b = 1;

Page 32: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Logical Operators

เปน operat0rs ที่ใชกับ operands ที่มีชนิดขอมูลเปน boolean

เทาน้ัน และใหผลลัพธเปน boolean แบงเปน 3 กลุม

Boolean Logical Operators

◦ ไดแก & (AND), | (OR), ^ (XOR), ! (NOT)

Short-circuit Logical Operators

◦ ไดแก && (short-circuit AND) , || (short-circuit OR)

Assignment Logical Operators

◦ ไดแก &= , |=, ^=

Page 33: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

ตัวดําเนินการตรรกะ (Logical Operators)

Boolean Logical Operator& b = false & true false| b = false | true true^ b = false ^ true true! b = !true false

Short-circuit logical Operator&& b = false && true false|| b = true || true true

boolean b;

Page 34: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

ทดสอบโปรแกรม

1. System.out.println(1<2 & 4==1);

2. System.out.println(1<2 | 4==1);

3. System.out.println(!true ^ 1==1);

4. System.out.println(!(4!=1));

Page 35: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

• !(2==1) & (2 > 4) ……………False……….• (2==4) | (1 == 1) …………. True ……

Page 36: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Conditional Operators

Operators ? ใชรวมกับ : โดยมีรูปแบบดังน้ี

ถาคาของ <condition> เปน true คาที่ไดจะเปน <expression 1>

แตถาเปน false คาที่ไดจะเปน <expression 2>

เชน System.out.println((a<b)? "aนอยกวาb":"aมากกวาหรือเทากับb" );

(<condition>)? <expression 1> : <expression 2>;

Page 37: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

ลําดับความสําคัญของ operators

Precedence of Operators[],(), op++, op--

++op,--p, +op, -op, ~, !

New, (type)op

*,/,%

+,-

<<,>>,>>>

<,>,>=,<=,instanceof

==,!=

&

^

|

&&

||

?:

=,+=,-=,*=,/=,%=,&=,^=,|=,<<=,>>=,>>>=

สาํคญัมาก

สาํคญันอ้ย

Page 38: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Associativity of Operators

ลําดบัการกระทําของ operators ท่ีมีลําดบัความสําคญัเท่ากนั มีทัง้การทําจากซ้ายไปขวา และขวาไปซ้าย เรียกวา่ associativityขึน้อยูก่บัชนิดของ operator เช่น

operators = มี associativity ทางขวา คือจะทําจากขวามาซ้าย เช่น

a = b = c = 1 ; ทํางานดงันี ้ a = (b = (c = 1))operators + , - มี associativity ทางซ้าย คือจะทําจากซ้ายมาขวา

a + b – c + d ; ทํางานดงันี ้ ((a + b) – c) + d

Page 39: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

ทดสอบโปรแกรม

System.out.println(1 + 2 * 3 - 2);System.out.println((1 + 2) * (3 -2));System.out.println(2 * -5 - 17 % 3/ 2 + 26 * 2 + 4);

ทดลองใสว่งเล็บใหถ้กูตอ้งตามลําดบัของ Operator

Page 40: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

การแปลงชนิดขอมูล (Type Conversions)

เมื่อตองการดําเนินการทางคณิตศาสตรระหวาง operands ทีม่ีชนิด

ขอมูลที่แตกตางกัน จะตองแปลงชนิดขอมูลใหเปนชนิดเดียวกันกอน แบง

การแปลงออกเปน 2 ประเภท คือ

Implicit type conversion

◦ เปนการแปลงชนดิขอมูลท่ีภาษาจาวาทําใหโดยอัตโนมัติตามความเหมาะสม

Explicit type conversion (หรือ Casting)

◦ เปนการแปลงชนดิขอมูลท่ีผูเขียนโปรแกรมตองทําดวยตนเอง

Page 41: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Implicit type conversion

Java จะทําการแปลงใหโดยอัตโนมัติOperand byte char short int long float double

byte int int int int long float double

char int int int int long float double

short int int int int long float double

int int int int int long float double

long long long long long long float double

float float float float float float float double

double double double double double double double double

ผลลัพธของการใชOperators รวมกัน Operand ชนิดตาง ๆ

Page 42: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Explicit type conversion (หรือ Casting)

เปนการแปลงชนิดขอมูลที่ผูเขยีนกําหนดเอง

รูปแบบ

เชน a = (int)(c + b);

*** ควร casting ชนิดขอมูลจากคาที่เล็กกวาไปเปนคาที่ใหญกวา เพ่ือลดการสูญหายของขอมูล

(<type>)<operand>

ชนิดข้อมูล ขนาด

ข้อมูล

double

float

long

int

short

byte

ขนาดใหญ่

ขนาดเลก็

Page 43: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

ทดสอบโปรแกรม

float a = 1.0F, b = 2.5F;

int c;

double d;

d = a + b;

System.out.println("d = " + d);

c = (int)(a + b);

System.out.println("c = " + c);

Page 44: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

Casting

• เปนการแปลงชนิดของขอมูล (Type) จากชนิดหนึง่เปนอีกชนิดหนึง่

• รูปแบบ คือ

(target_type)variable;

target_type หมายถึง ชนิดขอมูลของตัวแปรที่ใชเปนตัว

แปรปลายทาง

variable หมายถึง ตัวแปร

Page 45: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

การ Casting (2)

- การแปลงจากชนิดขอมูลทีมี่ขนาดเล็กกวาไปเปนชนิดขอมูลที่มีขนาด

ใหญกวา

Page 46: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

- การแปลงจากชนิดขอมูลที่มีขนาดที่ใหญกวาไปเปนชนิดขอมูลทีม่ีขนาดเล็ก

กวา

การ Casting (3)

Page 47: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

public class Ex_cast{

public static void main(String args[]){

int n = 5; double m = 3.5;short p = (short)n;System.out.println((int)m);System.out.println((double)n ); System.out.println(p);

}}

3

5.0

5

Page 48: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

การรับขอมลูดวยคลาส Scanner

คลาส Scanner อยูใน package java.util.Scanner จึงตองมีการ import กอน

จากนั้นทําการสรางวัตถุจากคลาส Scanner โดยมีรูปแบบดังนี้

Scanner keyboard = new Scanner(System.in);

ตัวอยางการใชงาน

int number;

Scanner keyboard = new Scanner(System.in);

System.out.print(“Enter an interger value: ”);

number = keyboard.nextInt();

Page 49: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ
Page 50: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ
Page 51: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

เมธอดในคลาส Scanner

เมธอด การทํางาน

nextByte() รับขอมูลเลขจํานวนเต็มชนิด Byte ทางแปนพิมพ

nextDouble() รับขอมูลเลขทศนิยมชนิด Double ทางแปนพิมพ

nextFloat() รับขอมูลเลขทศนิยมชนิด Float ทางแปนพิมพ

nextInt() รับขอมูลเลขจํานวนเต็มชนิด Int ทางแปนพิมพ

nextLine() รับขอมูลแบบ String ทางแปนพิมพ

nextLong() รับขอมูลตัวเลขชนิด Long ทางแปนพิมพ

nextShort() รับขอมูลตัวเลขชนิด Short ทางแปนพิมพ

Page 52: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

ทดสอบโปรแกรมรับขอมูลโดยใชคลาส Scanner

import java.util.Scanner; //เรยีกใชค้ลาส Scannerpublic class calnum {

public static void main(String[] args){int x,y; //ประกาศตัวแปร x และ y สําหรับเก็บเลขจํานวนเต็มScanner in = new Scanner(System.in); //สรา้งออบเจ็กต ์in สําหรับรับขอ้มลูSystem.out.print("Input Number 1 : ");x = in.nextInt(); //รับตัวเลขจํานวนเต็มมาเก็บในตัวแปร xSystem.out.print("Input Number 2 : ");y = in.nextInt(); //รับตัวเลขจํานวนเต็มมาเก็บในตัวแปร ySystem.out.println(x + " + " + y + " = " + (x+y) ); //แสดงผลการบวก

} }

Page 53: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

ทดสอบการหาพื้นที่สามเหลี่ยม

import java.util.Scanner;public class FindTriangle {public static void main(String[] args) {

double height = 0 , base = 0 , result = 0;Scanner input = new Scanner(System.in);System.out.println("โปรแกรมหาพืน้ทีส่ามเหลีย่ม");

System.out.println("กรณุาป้อนความสงู "); height = input.nextDouble();

System.out.println("กรณุาป้อนความยาวฐาน "); base = input.nextDouble();

result = 0.5 * height * base;System.out.println("พืน้ทีส่ามเหลีย่ม = " + result );}

}

Page 54: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

เครื่องหมายทางคณิตศาสตร

(Arithmetic Operators)

เคร่ืองหมาย ความหมาย ตวัอย่าง

+

-

*

/

%

การบวก

การลบ

การคูณ

การหาร

การหารเอาแต่

เศษ

x+y

x-y

x*y

x/y

x%y

Page 55: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

ลาํดบัความสําคญัของตวัดาํเนินการ

ลาํดับที่ เคร่ืองหมาย

12345

( )++,--*, /, %+, -+=, -=, /=, %=

Page 56: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

public class Ex_arit{

public static void main(String args[]){

int n = 6; int m = 34;

double p,q;p = m / n;q = m%n;System.out.println(n+m);System.out.println(n-m);System.out.println(n*m);System.out.println(p);System.out.println(q);System.out.println(m/n);System.out.println(m%n);

}}

40, -28, 204, 5.0, 4.0

Page 57: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

การคํานวณแบบยอ

เคร่ืองหมาย ตวัอย่าง ความหมาย

+=-=*=/=

%=++

--

x+=5x-=5x*=5x/=5

x%=5x++++xx----x

x=x+5x=x-5x=x*5x=x/5

x=x%5x=x+1x=x+1x=x-1x=x-1

Page 58: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

public class Ex_short{

public static void main(String args[]){

int n = 10,m = 5,o=4,p=15;n++; o = --o;m+=5; p *= 3;System.out.println(n);System.out.println(o);System.out.println(m);System.out.println(p);

}}

n = 11

o = 3

m = 10

p= 45

Page 59: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

public class Ex_short{

public static void main(String args[]){

int n = 10,m = 5,o,p,q;n++; m+=5;

o = n*m;p = n*m++; q = n*++m;

System.out.println(n);System.out.println(m);System.out.println(o);System.out.println(p);System.out.println(q);

}} n = 11 , m = 12 , o = 110 , p= 110 ,q = 132

// n = 11// m = 10

// before m = 10 , after m = 11// m = 12

Page 60: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

เครื่องหมายเปรียบเทียบ

เครื่องหมาย ความหมาย ตัวอยาง

>

>=

<

<=

==

!=

มากกวา

มากกวาหรือเทากับ

นอยกวา

นอยกวาหรือเทากับ

เทากับ

ไมเทากับ

x>y

x>=y

x<y

x<=y

x==y

x != y

Page 61: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

เครื่องหมายตรรก (Logical Operators)

เคร่ืองหมาย && (AND)

Page 62: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

เครื่องหมาย || (OR)

Page 63: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

เครื่องหมาย ! (NOT)

Page 64: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

public class Ex_double

{

public static void main(String args[])

{

int n = 5;

int m = 3;

System.out.println(n>m);

System.out.println(n<=m);

System.out.println(n>= m&&m<n);

System.out.println(!(n<=m || n<m));

}

true

false

true

true

Page 65: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

String

เปน class หนึ่ง ใน Package ของ java ชื่อ java.lang ทํา

หนาที่ในการเก็บขอมูลที่เปน “ชุดของตัวอักษร” ซ่ึงสามารถเก็บ

ขอมูลไดมากกวา 1 ตัวอักษร

7.1 การสราง String มีหลายรูปแบบ แตที่ใชสะดวกคือ

การกําหนดคาลงไปในตัวแปร เชน String mess = “Gozzila”;

7.2 การใช Length เปนการหาความยาวของขอมูลที่

เก็บในตัวแปร ไดโดยใช Method ชือ่ “length()” เชน

int n = fname.length();

Page 66: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

ตัวอยาง

class Ex_string

{

public static void main(String[] args)

{

String fname = “Kingdom";

int n = fname.length();

System.out.println(n);

}

}

Page 67: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

String

7.3 การใช charAt เปนการหาคาของขอมูล ณ ตําแหนง

ตัวอักษรที่ระบุของขอมูลที่เก็บในตัวแปร ไดโดยใช Method ชื่อ

“charAt()” เชน

fname.charAt(4);

7.4 การใช toLowerCase เปนการเปล่ียนตัวอักษรใหเปนตัว

เล็กทั้งหมด ไดโดยใช Method ชื่อ “toLowerCase()” เชน

fname.toLowerCase();7.5 การใช toUpperCase เปนการเปล่ียนตัวอกัษรใหเปนตัว

ใหญทั้งหมด ไดโดยใช Method ชือ่ “toUpperCase()” เชน

fname.toUpperCase();

Page 68: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

7.6 การใช Substring

เปนการดึงขอความเพียงบางสวนที่เกบ็ในตัวแปรแบบ String มาใชงานโดยใช Method “substring()” ตัวอยาง

String mess = “Gozzila”;

String sub = mess.substring(0,4);

คําตอบคือ Gozz (0,4) คือ เริ่มต้ังแตตัวแรกจนถึงตัวที่ 4

Page 69: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

7.3 การเชื่อมตอขอความ (Concatenation)

การเชื่อมตอขอความโดยใชเครื่องหมาย +

ตัวอยาง

String mess = “Hello”;

String mess1 = “Gozzila”;

String name = mess + “ “ + mess1;

System.out.println(name.length());

Page 70: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

การรับขอมูลทางจอภาพ

1. การใช System.in.read

- เปนการรบัขอมูลที่ปอนทางจอภาพไดเพียง 1 ตัวอกัษรเทานัน้ ซ่ึง

คําส่ังที่ใชคือ “System.in.read()”

- การเขียนโปรแกรมเพื่อรับขอมูลทางจอภาพนั้น จะตองใชคั่ง

“throws IOException” และ Package ชื่อ “java.io” รวมดวย

เสมอ เพื่อใชในการตรวจจับความผิดพลาดในการรับขอมูล

Page 71: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

import java.io.*;public class Ex_read {

public static void main (String args [] ) throws IOException {

char ch;System.out.print(“ Input 1 character : ”);

ch = (char)System.in.read();System.out.println(ch);

}}

Page 72: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

2. การใช BufferedReader รวมกับ InputStreamReader

การรับขอมูลในรูปแบบของ String โดยใชคําสั่ง 2 คําสั่ง ไดแก

- InputStreamReader reader = new InputStreamReader(System.in);

- BufferedReader stdin = new BufferedReader(reader);

แบบเขียนรวมกัน

BufferedReader stdin = new BufferedReader (new InputStreamReader (System.in))

Method ที่ใชรวมกัน

ช่ือ readLine ในการรบัขอมูลทางจอภาพดังน้ี

Input = stdin.readLine();

Page 73: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

import java.io.*;

public class Ex_read {

Public static void main (String args [] ) throws IOException{

BufferedReader stdin = new BufferedReader (new InputStreamReader (System.in));

String Input = “”;

System.out.print(“ Input message : ”);

Input = stdin.readLine();

System.out.println(“Your message is ”+ Input);

}

}

Page 74: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

การรับขอมลูเปนตัวเลข

Input = stdin.readLine();

int num = Integer.parseInt(Input);

Page 75: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

3. การใช Scanner

• เปน Class หนึ่งที่สามารถเรยีกใชไดใน JDK 1.5.0 ซึ่งเก็บอยูใน java.util

• รูปแบบการสรางการอานขอมูลจาก keyboard คือ

Scanner keyboard = new Scanner(System.in);

• รูปแบบการนําไปใชคือ

String input = keyboard.nextLine();

byte input = keyboard.nextByte();

short input = keyboard.nextShort();

int input = keyboard.nextInt();

long input = keyboard.nextLong();

double input = keyboard.nextDouble();

float input = keyboard.nextFloat();

Page 76: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

ตัวอยางโปรแกรมimport java.util.Scanner;public class hw3_1

{public static void main (String args [] ) {

int num1,num2,sum;Scanner keyboard = new Scanner(System.in);

System.out.print("Input Number1 : ");num1 = keyboard.nextInt();

System.out.print("Input Number2 : ");num2 = keyboard.nextInt();

sum = num1+num2;System.out.println("Sum : "+sum);

}}

Page 77: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

การกําหนดตําแหนงของทศนิยม

java.text.DecimalFormat dfm = new java.text.DecimalFormat("0.00");

dfm.format(ตัวแปล)

ตัวอยาง

double pi=3.1414;

java.text.DecimalFormat dfm = new java.text.DecimalFormat("0.00");

System.out.println(dfm.format(pi));

Page 78: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

แบบฝกหัด

1. กําหนดให

- short a = 350, int b=245, c=165

double d,h,f,g

- d = a/b , h = b%c , f = b-c , g = a-(b+c)

จงหาคําตอบตอไปนี้

1.1) d+f > h+g

1.2) d / h <= f % g

1.3) d <= h || f > g

1.4) d-h <= h || !(f == g) && f*g !=g*f

Page 79: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

2. จงแปลงขอมูลตอไปนี้

2.1) byte b=67; // จงแปลงเปน int, double และ

float

2.2) double c=7.346 // จงแปลงเปน byte, short

และ float

3. เขียนโปรแกรมรับชื่อและนามสกุล

- รับชือ่และนามสกุลเปนตัวเล็ก

- หาความยาวท้ังหมด

- ใหพิมพชื่อและนามสกุลพรอมกัน โดยใหอักษรตัวแรกของชื่อ

และนามสกุลเปนตัวใหญ

Page 80: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

4. เขียนโปรแกรมหาพื้นทีว่งกลมและเสนรอบวง

- รับคา รัศมี

- สูตรพื้นที่ คือ ¶r2

- สูตรเสนรอบวง คือ 2 ¶ r

Page 81: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

5. เขียนโปรแกรมหาเงินเดือนสุทธิหลังจากหักภาษีแลว

- รับคา เงินเดือนและจํานวนช่ัวโมง

- OT ช่ัวโมงละ 150 บาท

- รวมเงินเดือนและคา OT แลวคิดภาษี 7%

- แสดงเงินเดือน,จํานวนช่ัวโมง,จํานวน OT ,ภาษี

และเงินเดือนสุทธิ

Page 82: บทที่ 4. ตัวดําเนินการ (Operators)siam2dev.net/E_Learning/Java_Programming/Lec04_Operators_Last_… · บทที่ 4. ตัวดําเนินการ

ขอ 6.

สรางโปรแกรมแปลงหนวย โดยรบั Input ทาง

Keyboard ตั้งชื่อ Project และ Class วา DataConv

ดูอัตราการแปลงหนวยไดท่ีเว็บไซต

http://navy.in.th/dataconv.html

โดยเลือกแปลงหนวยอะไรก็ไดคนละ 1 หนวย