ตวแปร ชนดขอมล นพจน และตวด ำเนนกำร(Variable, Data Type, Expression and Operator)
ตวแปร (Variable) คอ ชอหรอสญลกษณทก ำหนดขนเพอกำรอำงองต ำแหนงหนวยควำมจ ำทใชเกบขอมล
สำมำรถเกบขอมลทมชนดของขอมลแตกตำงกนได สำมำรถเปลยนแปลงคำขอมลไดตลอดเวลำ
2
ตวแปรนนตองขนตนดวยตวอกษรหำมตงชอตวแปรขนตนดวยตวเลข, เครองหมำย, สญลกษณอนใด
ถดจำกตวอกษรแรกของตวแปรจะตำมดวยตวอกษร หรอตวเลข หรอเครองหมำย $ หรอเครองหมำย _ กได หำมเปนเครองหมำยอนๆ และหำมเวนชองวำง
ตวแปรในภำษำ Java เปน Case Sensitive นนคอ กำรตงชอดวยภำษำองกฤษตวพมพเลกจะแตกตำงจำกกำรตงชอดวยภำษำองกฤษตวพมพใหญ
หำมตงชอตวแปรทตรงกบคยเวรด (Keyword) ค ำสงวน (Reserved Word) ในภำษำ Java
3
4
รปแบบกำรประกำศตวแปร (Variable Declaration)
โดยทdataType เปนชนดขอมลของตวแปรทตองกำรVarName เปนชอตวแปรโดยตงตำมกฎกำรตงชอ Value เปนคำของตวแปร
5
dataType VarName [= Value];
ตวอยำง เชน String name; //ประกำศตวแปร name แทนขอมลชอ เปนชนดขอควำมfloat score; //ประกำศตวแปร score แทนขอมลคะแนนสอบ เปนชนดเลข
ทศนยมchar grade; //ประกำศตวแปร grade แทนขอมลเกรด เปนชนดขอมลตวอกขระ
กำรประกำศตวแปรพรอมกบกำรก ำหนดคำเรมตนString name = “Boy”; //ประกำศตวแปร name มคำเรมตนเทำกบ Boyfloat score = 20.0f; //ประกำศตวแปร score มคำเรมตนเทำกบ 20.0char grade = ‘A’; //ประกำศตวแปร grade มคำเรมตนเทำกบ A
6
แบงเปน 3 กลม ตำมรปแบบกำรใชงำน ไดแก Primitive Data Types ชนดของขอมลพนฐำนของภำษำ
Integer (จ ำนวนเตม) Floating point (เลขทศนยม) Textual (อกขระ) Logical (ตรรกะ/คำควำมจรง)
Class Types ชนดของขอมลทถำยทอดมำกจำกคลำสหรอ Interface
Array Types ชนดของขอมลทเปนอำรเรย หรอขอมลเปนชดๆ
7
เปนขอมลตวเลขทไมมคำเปนทศนยม ใชเปนคำคงท ตวแปร และนพจนได
8
ชนดขอมล ขนำด (ไบต) ชวงกำรเกบขอมล (คำทเปนไปได)byteshortintlong
1248
-128 ถง +127-32,768 ถง +32,767-2,147,483,648 ถง +2,147,483,647-9,223,372,036,854,775,808 ถง+9,223,372,036,854,775,807
Tip : ขอมลเลขจ ำนวนเตมชนด long จะใชอกษร L หรอ l ไวทำยคำตวเลข
เชน 2147483648L แสดงวำขอมลเลขนจะเกบในตวแปรชนด long
ในกรณทไมมตวอกษร L หรอ l ตอทำยคำตวเลข คอมไพเลอรจะรบรวำเลขดงกลำวเปนเลขจ ำนวนเตมชนด int เชน
long D = 2147483648; คอมไพเลอรจะมอง 2147483648 เปนเลขจ ำนวนเตมชนด intซงมคำเกนชวงกำรเกบขอมลของชนด intจงท ำใหเกด compiler error: integer number too large: 2147483648
9
กำรก ำหนดตวแปรเพอเกบขอมลเลขจ ำนวนเตมทมำกกวำ 32767เปนขอมลชนด short integer ท ำใหเกดปญหำ overflow ของขอมล
10
short เกบขอมลขนำด 2 ไบตชวงขอมลคอ -32,768 ถง +32,767
เปนขอมลตวเลขทมคำเปนทศนยม สำมำรถเขยนใหอยในรปตวเลขยกก ำลงได
11
ชนดขอมล ขนำด (ไบต) ชวงกำรเกบขอมล (คำทเปนไปได)
float
double
4
8
-3.40292347E+38 ถง+3.40292347E+38-1.79769313486231570E+308 ถง +1.79769313486231570E+308
12
Tip : ขอมลชนดตวทศนยมจะใชอกษร F หรอ f ไวทำยคำตวเลขทศนยม เชน
0.07F แสดงวำขอมลเลขทศนยมนจะเกบในตวแปรชนด float ใชตวอกษร D หรอ d ไวทำยคำตวเลขทศนยม เชน
3.14D แสดงวำขอมลเลขทศนยมนจะเกบในตวแปรชนด double สำมำรถก ำหนดคำตวเลขจ ำนวนเตมเพอเกบในตวแปรชนด float หรอ
double ได โดยไมตองมใชตวอกษรตอทำยคำตวเลข เชน float A = 200;double B = 200;
เปนขอมลทมควำมยำวหนงตวอกขระ ใชพนทหนวยควำมจ ำ 2 ไบตตอ 1 ตวอกขระ เกบขอมลไดถง 65,536 ตวอกษร ขอมลในกลมน ไดแก ตวอกษร (A ถง Z, a ถง z) ตวเลข (0 ถง 9) สญลกษณพเศษตำง ๆ เชน + - = $ * ฯลฯ
13
กำรใชงำนตวอกขระตองอยภำยในเครองหมำย single quote เชน ’J’, ’m’, ‘9’ เปนตน
สำมำรถเรยงล ำดบตวอกขระตำมคำของรหสแอสก (ASCII: American Standard Code for Information Interchange) ได ตวอยำงเชน
14
อกขระ รหสแอสก ‘0’ 48‘1’ 49‘A’ 65‘B’ 66‘a’ 97‘b’ 98
15
เปนขอมลทมคำควำมจรงเปนจรงหรอเปนเทจเทำนน แทนคำดวย true หรอ false ไมใชเลขจ ำนวนเตมหรอคำอนๆ แทนคำควำมจรง
16
ใชตวแปรเกบขอมลชนดขอควำมในรปแบบของคลำส กำรใชงำนขอควำมตองอยภำยในเครองหมำย double
quote เชน “JAVA”, “Program” เปนตน ตวอยำงเชนString strProvice = “Bangkok”;String strMonth = “May”;
17
คำคงท (Constant) ท ำหนำทเกบขอมลทตองกำรก ำหนดไวไมใหมกำรเปลยนแปลงตลอดเวลำ เชน คำ PI เปนตน
กำรประกำศคำคงทเหมอนกบกำรประกำศตวแปรทมกำรก ำหนดคำ เพยงแตจะมกำรใชคยเวรด final น ำหนำ
รปแบบกำรใชงำน
โดยท dataType เปนชนดขอมลของคำคงททตองกำรVarName เปนชอตวแปรโดยตงตำมกฎกำรตงชอ Value เปนคำของคำคงท
18
final dataType VarName [= Value];
เลขทศนยม1. double เปน default2. float ตองระบ f หรอ F หลงเลข
เลขจ ำนวนเตม1. int เปน default2. long ตองระบ l หรอ L หลงเลข
public class variable {public static void main(String[] args) {char c = ‘Y’; int i = 1; double d = 2.5;float f = 1.2f; boolean b = true;final double SALES_TAX_RATE = 0.07d;String s = “Hello”;System.out.println("c = "+ c);System.out.println("i ="+ i);System.out.println("d ="+ d);System.out.println("f ="+ f);System.out.println("b ="+ b);System.out.println(“SALES_TAX_RATE = ” + SALES_TAX_RATE);System.out.println("s ="+ s);
}
19
c = Yi =1d = 2.5f = 1.2b = trueSALES_TAX_RATE = 0.07s = Hello
ท ำหนำทจดกำรหรอด ำเนนกำรใด ๆ ระหวำงตวแปร หรอตวถกกระท ำ (Operand) Operand Operand Expression
นพจน (Expression) หมำยถง ขอควำมหรอประโยคทเขยนอยในรปสญลกษณ โดยน ำขอมล, ตวแปร, ฟงกชนหรอคำคงท มำสมพนธกบ
ตวด ำเนนกำร (Operator) อยำงใดอยำงหนง นพจน 1 นพจน จะตองมตวถกกระท ำ (Operand) และ
ตวด ำเนนกำร (Operator) อยำงนอย 1 ตว20
Operator
21
ใชส ำหรบก ำหนดคำขอมลใหกบตวแปรทำงดำนซำยของตวด ำเนนกำร =
22
ตวด ำเนนกำร ค ำอธบำย ตวอยำง= ก ำหนดคำ x = y คอ น ำคำ b มำใสใน x
+=เพมคำแลวใหคำใหม
x += y คอ x = x + y หรอน ำ x + y แลวใหคำใหมกบ x
-=ลดคำแลวใหคำใหม
x -= y คอ x = x - y หรอน ำ x – y แลวใหคำใหมกบ x
*=คณแลวใหคำใหม
x *= y คอ x = x * y หรอน ำ x * y แลวใหคำใหมกบ x
/=หำรแลวใหคำใหม
x /= y คอ x = x / y หรอน ำ x / y แลวใหคำใหมกบ x
ก ำหนดใหตวแปร A เปนชนดเลขจ ำนวนเตม และ A = 25นพจน กำรแทนคำนพจน คำของนพจนA += 5 A = A + 5 30A -= 25 A = A - 25 0A *= 10 A = A * 10 250A /= 25 A = A / 25 1A %= 5 A = A % 5 0
23
24
ตวด ำเนนกำร ค ำอธบำย ตวอยำง+ บวก x + y ผลลพธคอ x บวก y- ลบ x – y ผลลพธคอ x ลบ y* คณ x * y ผลลพธคอ x คณ y/ หำร x / y ผลลพธคอ x หำร y
% เศษจำกกำรหำรx % y ผลลพธคอ เศษทไดจำก x หำร y (เชน 13 % 5 เทำกบ 3)
ขอสงเกต ผลกำรท ำงำนของตวด ำเนนกำร +, -, * และ / ทมตวแปรเปน
ขอมลชนดเลขทศนยม จะไดเปนคำทศนยมเสมอ ผลกำรท ำงำนของตวด ำเนนกำร +, -, * และ / ทมตวแปรเปน
ขอมลชนดเลขจ ำนวนเตม จะไดเปนคำจ ำนวนเตมเสมอ โดยทผลลพธจำกกำรหำร จะไดคำจ ำนวนเตมทปดทศนยมทง
ผลกำรท ำงำนของตวด ำเนนกำร % จะไดเปนคำจ ำนวนเตมเสมอ
25
ก ำหนดใหตวแปร A, B และ C เปนชนดเลขจ ำนวนเตม และ A = 11 และ B = 5
นพจน A B CC = A + B 11 5 16
C = A - B 11 5 6
C = A * B 11 5 55
C = A / B 11 5 2
C = A % B 11 5 1
26
ก ำหนดใหตวแปร A, B และ C เปนชนดเลขจ ำนวนทศนยม และ A = 10.5 และ B = 2.5
นพจน A B CC = A + B 10.5 2.5 13.0
C = A - B 10.5 2.5 8.0
C = A * B 10.5 2.5 26.25
C = A / B 10.5 2.5 4.2
27
ใชส ำหรบเปรยบเทยบขอมลระหวำงตวถกกระท ำทำงดำนซำยและดำนขวำของตวด ำเนนกำร ไดผลทมคำเปนจรง (true) หรอเทจ (false)
ใชในกำรตดสนใจก ำหนดทศทำงของกำรท ำงำนของโปรแกรม
ตวด ำเนนกำร ค ำอธบำย ตวอยำง== เทำกนหรอไม x == y จะเปนจรงเมอ x เทำกบ y!= ไมเทำกนหรอไม x != y จะเปนจรงเมอ x ไมเทำกบ y< นอยกวำ x < y จะเปนจรงเมอ x นอยกวำ y<= นอยกวำหรอเทำกบ x <= y จะเปนจรงเมอ
x นอยกวำหรอเทำกบ y> มำกกวำ x > y จะเปนจรงเมอ x มำกกวำ y>= มำกกวำหรอเทำกบ x >= y จะเปนจรงเมอ
x มำกกวำหรอเทำกบ b28
ก ำหนดใหตวแปร A, B เปนชนดเลขจ ำนวนทศนยม ตวแปร C, D เปนขอมลชนดตวอกขระ และ A = -3, B = 5, C = ‘t’ และ D = ‘s’
นพจน A BA <= 10 -3 <= 5 trueA+B > 0 (-3)+5 < 0 false
A-(-3) = B-5 (-3)-(-3) = 5-5 trueC == ‘t’ 't' == 't' trueC == ‘T’ 't' == 'T' falseC < D 't' < 's' falseD > ‘a’ 's' > ‘a’ true
29
ใชส ำหรบก ำหนดเงอนไขใหกบขอมลทจะน ำมำประมวลผลในทำงตรรกศำสตร ในกรณทมเงอนไขมำกกวำ 1 เงอนไข ไดผลทมคำเปนจรง (true) หรอเทจ
ใชในกำรตดสนใจก ำหนดทศทำงของกำรท ำงำนของโปรแกรม เชนกน
30
ตวด ำเนนกำร ควำมหมำย ตวอยำง ค ำอธบำย&& and x && y มคำเปนจรง กตอเมอ
x และ y มคำเปนจรง|| or x || y มคำเปนจรง กตอเมอ x หรอ y หรอ
ทง x และ y มคำเปนจรง! not ! y มคำเปนจรง กตอเมอ x มคำเปนเทจ
เมอน ำมำเปรยบเทยบคำควำมจรงของนพจน โดยก ำหนดให x และ y เปนตวถกด ำเนนกำรทำงตรรกศำสตร จะไดผลกำรท ำงำนดงตำรำง
31
x y x && y x || y !x !ytrue true true true false falsetrue false false true false truefalse true false true true falsefalse false false false true true
ก ำหนดใหตวแปร A เปนชนดเลขจ ำนวนทศนยม และ ตวแปร B เปนขอมลชนดตวอกขระ และ A = 10 และ B = ‘X’
32
นพจน กำรแทนคำนพจน คำของนพจน(A > 0) && (A < 15) T && T true
(A > 0) && (A < 10) T && F false
(A > 0) || (A < 5) T || F true
(A <> 5) || (B == ‘X’) T || T true
! (A != 10) ! (F) true
! (B > ‘c’) ! (F) true
ตวด ำเนนกำรทม operand (ตวถกกระท ำ) เพยง 1 ตว เชน กำรเพมคำ/ลดคำ
33
ตวด ำเนนกำร ควำมหมำย ตวอยำง กำรท ำงำน ขอสงเกต
++เพมคำหนงคำใหกบตวแปร
A = B++A = BB = B + 1
ก ำหนดคำ ใหกบตวแปร A กอน เพมคำ ตวแปร B
A = ++BB = B + 1A = B
เพมคำ ใหตวแปร Bกอน ก ำหนดคำ ใหกบตวแปร A
- -ลดคำลงหนงคำใหกบตวแปร
A = B- -A = BB = B - 1
ก ำหนดคำ ใหกบตวแปร A กอน ลดคำ ตวแปร B
A = - -BB = B - 1A = B
ลดคำ ใหตวแปร Bกอน ก ำหนดคำ ใหกบตวแปร A
ก ำหนดใหตวแปร A, B เปนชนดเลขจ ำนวนเตม และ A = 5
34
นพจน A BB = A++ 6 5B = ++A 6 6B = A-- + 4 4 9B = ++A + 4 6 10B = 5 * A-- 4 25
public class increment {public static void main(String[] args) {
int x, y;x=10;y=x++;System.out.println("x = "+x+" y= "+y);y=++x;System.out.println("x = "+x+" y= "+y);
}}
35
x = 11 y= 10x = 12 y= 12
สงคำ x ไปใหตวแปร y กอน แลวจงเพมคำ x
เพมคำ x แลว จง สงคำ x ไปใหตวแปร y
ตวด ำเนนกำรจะกระท ำกบทกๆ บตของตวถกด ำเนนกำรทมชนดขอมลในตระกลเลขจ ำนวนเตม (ไดแก byte, short, int และ long) หรอเปนตวอกษร
36
ตวด ำเนนกำร ค ำอธบำย
<<left shift หรอเลอนบตมำทำงซำย และเตมเลข 0 ทำงขวำ เทำกบจ ำนวนบตทเลอนไป
>>>Unsigned right shift หรอเลอนบตมำทำงขวำ และเตมเลข 0 ทำงซำยเทำกบจ ำนวนบตทเลอนไป
>>Signed right shift หรอเลอนบตมำทำงขวำ โดยพจำรณำเครองหมำย +/- ของขอมล คอจะเตมเลข 0 ทำงซำยเทำกบจ ำนวนบตทเลอนไป เมอขอมลเปนคำบวก และจะเตมเลข 1 ทำงซำยเทำกบจ ำนวนบตทเลอนไปเมอขอมลเปนคำลบ
& bitwise AND| bitwise OR
bitwise XOR
กำรด ำเนนกำร and ผลลพธจะเปน 1 ถำตวถกด ำเนนกำรตวทหนงและตวถกด ำเนนกำรตวทสองมคำเปน 1 ทงค นอกนนใหผลลพธเปน 0
กำรด ำเนนกำร or ผลลพธจะเปน 1 ถำตวถกด ำเนนกำรตวตวใดตวหนงมคำเปน 1 นอกนนใหผลลพธเปน 0
กำรด ำเนนกำร xor ผลลพธจะเปน 1 ถำตวถกด ำเนนกำรทงสองมคำตำงกน และผลลพธจะเปน 0 เมอตวถกด ำเนนกำรทงสองมคำเหมอนกน
A B(Bitwise AND)
A & B(Bitwise OR)
A| B(Bitwise XOR)
A B0 0 0 0 00 1 0 1 11 0 0 1 11 1 1 1 0
37
ก ำหนดใหขนำดเนอทส ำหรบเกบคำตวแปร A และ B เทำกบ 8 บต A = 01000001, B = 00100001 และ C = 11111000A & B = 00000001 A | B = 01100001 B << 2 = 10000100
A >>> 3 = 00001000 C >> 2 = 11111110
38
39
ล ำดบท ตวด ำเนนกำร กำรกระท ำ1 ( ), [ ] ซำยไปขวำ2 ++, --, !, ~ ขวำไปซำย3 *, /, % ซำยไปขวำ4 +, - ซำยไปขวำ5 <<, >>, >>> ซำยไปขวำ6 <, <=, >, >= ซำยไปขวำ7 ==, != ซำยไปขวำ8 & ซำยไปขวำ9 ^ ซำยไปขวำ10 | ซำยไปขวำ11 && ซำยไปขวำ12 || ซำยไปขวำ13 ?: ซำยไปขวำ14 =, +=, -=, *=, /=, %=, <<=, >>=, >>>=, &=, ^=, != ขวำไปซำย
(2 + 3) * 5 = 25 2 + 3 * 5
(7 + 3) * (10 - 2) (5 + 2) * 15 % 4
40
int x;
x=5+2*4+15*2/7;
double x;
x=5+2*4+15*2/7;
double x;
x=5+2*4+15*2.0/7;
double x;
x=5.0+2*4+15*2/7;
41
X=17
X=17.0
X=17.285714285714285
X=17.0
Implicit Type Conversion เปนกำรแปลงชนดของขอมลในกรณทขอมลมชนดตำงกน กระท ำอตโนมต โดยคอมไพเลอร ซงมเงอนไขดงน
ขอมลใด ๆ จะตองมชนดของขอมลทเขำกนได (compatible type) คอ มชนดเปนตวเลขเหมอนกน
เปนกำรแปลงจำกชนดของขอมลทมขนำดเลกไปเปนชนดของขอมลทมขนำดใหญกวำเทำนน
42
Explicit Type Conversion (casting) เปนกำรแปลงโดยผเขยนโปรแกรมvalNameResult = (dataType) valName
โดยท valNameResult เปนชอตวแปรทรบคำจำกกำรแปลงขอมล
ตองมชนดขอมลเดยวกนกบ dataTypedataType เปนชนดขอมลทตองกำรแปลงvalName เปนชอตวแปรหรอขอมลทตองกำรแปลงชนดขอมล
43
เปนกำรแปลงคำชนดขอมลสำยอกขระใหเปนตวเลข หรอ เปลยนคำชนดขอมลตวเลขใหเปนสำยอกขระได ใชเมธอดในคลำส Wrapper ซงเปนคลำสทสมพนธกบขอมลชนดพนฐำน
(Primitive data type) เรยกผำนชอคลำส Wrapper ทสมพนธกบชนดขอมลทตองกำร
44
คลำส Wrapper
Primitive Data Type
เมธอดทใชเปลยนเปนตวเลข
เมธอดทใชเปลยนเปนสำยอกขระ
Integer int Integer.parseInt() Integer.toString()Float float Float. parseFloat() Float.toString()
Double double Double.parseDouble() Double.toString()
45
46
47
Type mismatch: cannot convert from double to int
public class changeVar {public static void main(String[] args) {
int a;double b= 3;int c = 5;a =b+c;System.out.println("a ="+a);
}}
Top Related