พื้นฐานโปรแกรมภาษาจาวา (overview of java programming...

Post on 11-Feb-2016

63 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

พื้นฐานโปรแกรมภาษาจาวา (Overview of Java Programming Language). Nerissa Onkhum. วัตถุประสงค์. แนะนำสัญลักษณ์และคำต่าง ๆ ที่ใช้ในภาษาจาวา แนะนำข้อมูลค่าคงที่และชนิดข้อมูลแบบพื้นฐานที่ใช้ในภาษาจาวา แนะนำการประกาศและคำสั่งกำหนดค่าตัวแปร แนะนำตัวดำเนินการประเภทต่าง ๆ - PowerPoint PPT Presentation

TRANSCRIPT

LOGO

พนฐานโปรแกรมภาษาจาวา

(Overview of Java Programming

Language)

Nerissa Onkhum22/04/23 1

วตถประสงค แนะนำาสญลกษณและคำาตาง ๆ ทใชในภาษาจาวา แนะนำาขอมลคาคงทและชนดขอมลแบบพนฐานทใช

ในภาษาจาวา แนะนำาการประกาศและคำาสงกำาหนดคาตวแปร แนะนำาตวดำาเนนการประเภทตาง ๆ อธบายการแปลงชนดขอมล แนะนำาชนดขอมลแบบอางอง แนะนำาคำาสงทใชในการรบขอมลและคำาสงทใชในการ

แสดงผล

ไวยากรณภาษาจาวา(Java Syntax)

คำ�หรอขอคว�มทส�ม�รถเขยนในโปรแกรมภ�ษ�จ�ว�จะตอง เปนคำ�

หรอขอคว�มในรปแบบใดรปแบบหนงของประเภทต�งๆเหล�น คอมเมนต (Comment) Identifier คยเวรด (Keywords) สญลกษณแยกคำ� (Separators) ชองว�ง (White space) ขอมลค�คงท (Literals)

คอมเมนต (Comment)

คอมเมนตคอขอคว�มทแทรกอยใน โปรแกรม

คอมเมนตเขยนไวเพอ อธบ�ยโปรแกรม ใหผอ�นเข�ใจโปรแกรมง�ยยงขน ชวยทำ�ใหก�รแกไขและปรบปรงโปรแกรม

เปนไปไดง�ยขน

คอมเมนต (Comment)

คอมเมนตในภาษาจาวาแบงออกเปน 3ประเภท ดงน

1. คอมเมนตแบบบรรทดเดยว (One line comment)

- ใชเครองหม�ย // - โดยขอคว�มทอยหลงเครองหม�ยน

ไปจนสดบรรทดนน จะกล�ยเปนคอมเมนต เชน

// This is one line comment

คอมเมนต (Comment)

2. คอมเมนตแบบหลายบรรทด (many line comment)

- ใชเครองหม�ย */ รวมกบ */- โดยใสเครองหม�ย * ไวหน�ขอคว�มท

ตองก�รใหเปน คอมเมนตและใสเครองหม�ย * ไวหลงขอคว�มทตองก�รใหเปนคอมเมนต เชน /*This is

may linecomment*/

คอมเมนต (Comment)

3. คอมเมนตสำาหรบสรางเอกสารประกอบโปรแกรม (documentation comment)

- ใชเครองหม�ย ** รวมกบ */- คอมเมนตสำ�หรบขอคว�มทตองก�รสร�ง

เปนไฟลเอกส�ร ทเปนไฟลประเภท HTML

ตวอยางโปรแกรม/* This program is to show how to write comments */public class ShowComments {

// Main methodpublic static void main(String args[]) {

/** This is a comment for documentation */ System.out.println("Document");

}}

Identifieridentifier คอชอทตงขนในภ�ษ�จ�ว� ซงอ�จเปนชอของคล�ส

ชอของตวแปร ชอของเมธอด ชอของแพกเกจ หรอชอของอนเตอรเฟส

identifier จะตองเปนไปต�มกฎก�รตงชอดงน identifier จะตองขนตนดวยอกขระ A-Z, a-z, _ หรอ $

เท�นน identifier ทประกอบไปดวยตวอกขระม�กกว�หนงตว ตวอกขระ

หลงจ�กตวแรกนนจะตองเปนตวอกขระข�งตน หรอเปนตวเลข 0 ถง 9 เท�นน

identifier จะตองไมตรงกบคยเวรด และไมประกอบดวยชองว�ง

Identifier identifier ในภ�ษ�จ�ว�เปน case sensitive

case sensitive หม�ยถง ตวอกษรตวใหญกบตวอกษรเลกถอว�เปนคนละตวกน เชน •hello•Hello•hELLo

ตวอยางของIdentifier

ถกตอง MyVariable _MyVariable $x This_is_also_a_variable

ไมถกตอง My Variable 9pns a+c Hello'World public

หลกการตงชอทปฏบตกนโดยทวไป

การตงชอของคลาส จะขนตนดวยตวอกษรพมพใหญแลวต�มดวยตวอกษร

พมพเลกหรอตวเลข โดยจะใชตวอกษรพมพใหญเฉพ�ะ อกษรนำ�ของแตละคำ� ทต�มม�ในชอ

ควรเปนคำ�น�ม ตวอย�งเชน

•Sample•HelloWorld •Student •GraduateStudent

หลกการตงชอทปฏบตกนโดยทวไป

การตงชอของตวแปร จะขนตนดวยตวอกษรพมพเลก โดยจะใชตวอกษรพมพ

ใหญ เฉพ�ะอกษรนำ�ของแตละคำ�ทต�มม�ในชอ ควรเปนคำ�น�มหรอเปนชอสนๆ ตวอย�งเชน

•x• i• name•id •gpa

หลกการตงชอทปฏบตกนโดยทวไป

การตงชอเมธอด จะใชหลกก�รเดยวกบก�รตงชอตวแปร แตควรเปนคำ�กรย� ตวอย�งเชน getName, setName หรอ showDetails

เปนตนการตงชอคาคงท

จะใชตวอกษรพมพใหญทงหมด และจะแยกคำ�โดยใช เครองหม�ย _ (underscore)

ควรเปนคำ�น�ม ตวอย�งเชน MIN_GPA เปนตน

คยเวรด คยเวรดคอชอทมคว�มหม�ยพเศษในภ�ษ�จ�ว� คยเวรดทกตวจะเปนตวอกษรตวพมพเลก คยเวรด goto และ const

เปนคยเวรดทไมไดตรงกบคำ�สงใดในภ�ษ�จ�ว� คำ�ว� true และ false

ไมไดเปนคยเวรดในภ�ษ�จ�ว� แตจะเปนขอมลค�คงทชนด ตรรกะ

คำ�ว� null ไมไดเปนคยเวรดในภ�ษ�จ�ว� แตจะเปนขอมลค�คงทของ

ตวแปรทมชนดขอมลเปนประเภทอ�งอง

คยเวรดทใชในภาษาจาวา

สญลกษณแยกคำา

ชองวาง (white space)

โปรแกรมภ�ษ�จ�ว�ส�ม�รถทจะมชองว�งเพอทแยกคำ� ประโยค หรอคำ�สงต�ง ๆ ภ�ยในโปรแกรมได

white space หม�ยถงตวอกษรทไมมรปร�งหน�ต� เปนตวอกษรทมองไมเหน

จ�ว�แบง white space ออกเปน 5 ชนดไดแก Space character คอ ชองว�ง Horizontal tab คอ ตวอกษรแนวนอนแทบ (\t) Form feed คอ ตวอกษรขนหน� ใหม (\f) Carriage return คอ ตวอกษรเลอนเคอรเซอรไปซ�ยสด (\r) linefeed หรอ newline คออกษรขนบรรทดใหม (\n)

ชองวาง (white space)

white space มหน�ทชวยแยกคำ�ใหอ�นง�ยขนwhite space มอยเปนจำ�นวนเท�ไรระหว�งคำ� จะ

ไมสงผลตอก�รตคว�มของคอมไพเลอรหลกการของ white space มอย 2 ขอ คอ

1. หามม white space ระหวางชอเมธอดและเครองหมายวงเลบเปด เชนตวอยางทถก ตวอยางทผด

getSalary(5000);

getSalary (5000);

ชองวาง (white space)

2. ตองใส white space ไวหลง reserved word เสมอ เชนpublic static void

main(String arg[ ])

เพราะ public, static, void ลวนเปน reserved word จงตองม white space ระหวางคำาเหลาน

publicstaticvoidmain(String arg[ ])

เพราะไมม white space ระหวาง reserved word ทำาใหคอมไพเลอรไมสามารถทำางานไดอยางถกตอง

public static void main(String

arg[ ])

การเวนชองวาง (ชองวางเปน white space ประเภท space character) ระวาง reserved word แตละคำามากกวา 1 ชองวางไมถอวาผด เพราะคอมไพเลอรตองการเพยงแคใหเวนวรรคระหวาง reserved word แตจะเวนทชองวางกได

ขอมลคาคงท (Literal)

ขอมลคาคงท คอ คำ�ทใชแสดงขอมลทเปน ตวเลข ตวอกขระ ขอคว�ม หรอค�ท�งตรรกะ

ขอมลค�คงทแบงออกเปน 5 ประเภทดงน ตรรกะ (boolean) ตวอกขระ (character) ตวเลขจำ�นวนเตม (integral) ตวเลขทศนยม (floating point) ขอคว�ม (string)

ชนดขอมลแบบพนฐานชนดขอมลในภ�ษ�จ�ว�แบงเปนสองประเภทใหญๆคอ

ชนดขอมลแบบพนฐาน (primitive data type) ชนดขอมลแบบอางอง (reference data type)

ชนดขอมลแบบพนฐ�นแบงออกเปน 4 ประเภทดงน ชนดขอมลตรรกะ (Logical) คอชนด boolean ชนดขอมลอกขระ (Textual) คอชนด char ชนดขอมลตวเลขจำ�นวนเตม (Integral) คอชนด

byte,short,int และ long ชนดขอมลตวเลขทศนยม (Floating point) คอชนด float

และ double

ขนาดและชวงคาของชนดขอมลแบบพนฐาน

ขอมลชนดตรรกะ (Logical)

ขอมลชนดตรรกะ (boolean) มขอมลค�คงทอย 2 ค�คอ

true และ false ตวอย�งเชน คำ�สง

boolean flag = true;

เปนก�รกำ�หนดตวแปรทชอว� flag ใหมชนดขอมล เปน boolean

โดยกำ�หนดใหมค�เปน true

ขอมลชนดตวอกขระ (Character)

Char เปนชนดขอมลแบบตวอกษร (Character) ซงถกเกบอยในรปของม�ตรฐ�น Unicode ม ขน�ด

16 บตใชสำ�หรบเกบขอมลทมคว�มย�วไมเกน 1 ตวอกษร

เท�นนโดยก�รเขยน Character literals จะตอง

ครอบคลมดวยเครองหม�ย ' ' (Single Quote) โดยจะมค�ตงแต '\u0000' ถง '\uFFFF'

ขอมลชนดตวอกขระ (Character)

ตวอย�งเชน คำ�สงchar letter = '\u0041';

เปนก�รประก�ศตวแปรทชอว� letter ใหเปนขอมลชนด char โดยมค�เปน \u0041 ซงมค�เท�กบตวอกษร A

ตวอย�งเชน คำ�สงchar letter = 'A';

เปนก�รประก�ศตวแปรทชอว� letter ใหเปนขอมลชนด char โดยมค�เปนตวอกษร A เชนเดยวกบคำ�สงกอนหน�น

อกขระพเศษทนยมใชทวไป

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

มชนดขอมลพนฐ�น 4 ชนดคอ byte, short, int, long

โดยทวไปขอมลชนดตวเลขจำ�นวนเตมจะถกกำ�หนดใหมชนดขอมลเปน int ขอมลค�คงทส�ม�รถเขยนไดส�มแบบดงน

เลขฐ�นสบคอก�รเขยนเลขจำ�นวนเตมทวไป เชน -121 และ 75362 เปนตน

เลขฐ�นแปดคอก�รเขยนเลขจำ�นวนเตมทขนตนดวยเลข 0 แลวต�มดวย ตวเลขตงแต 0 ถง 7 อ�ทเชน 016 ( มค�เท�กบ 14 ในเลขฐ�นสบ)

เลขฐ�นสบหกคอก�รเขยนเลขจำ�นวนเตมทขนตนดวย 0x หรอ 0X แลวต�มดวยตวเลขตงแต 0 ถง 9 หรอตวอกษร A ถง F อ�ท

เชน 0xA2 ( มค�เท�กบ 162 ในเลขฐ�นสบ)

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

ขอมลค�คงทของเลขจำ�นวนเตมทเปนชนดlong จะมตวอกษร l หรอ L ตอท�ย เชน2l หม�ยถง เลขฐ�นสบทมค�เปน 2 ซง

เปนขอมลชนด long 077L หม�ยถง เลขฐ�นแปดทเปนขอมล

ชนด long0xBAACL หม�ยถง เลขฐ�นสบหกทเปน

ขอมลชนด long

ขอมลชนดตวเลขทศนยม(floating point)

ขอมลชนดตวเลขทศนยมจะเปนเลขทมเครองหม�ย จดทศนยม เชน

3.14 หรอ 3.0 มชนดขอมลพนฐ�น 2 ชนด คอ double และ floatโดยทวไปขอมลชนดตวเลขทศนยมจะถกกำ�หนดใหมชนด

ขอมลเปน double ส�ม�รถเขยนในรปแบบของเลขยกกำ�ลงสบ (exponential

form) ได โดยใชตวอกษร E หรอ e ระบจำ�นวนท เปนเลขยกกำ�ลงสบ เชน

6.02E23 หรอ 2e-7

ขอมลชนดตวเลข ทศนยม

ขอมลชนดตวเลขทศนยมทมชนดขอมลเปนfloat จะมตวอกษร F หรอ f ตอท�ย เชน 2.718F หรอ 3.14f

ขอมลชนดตวเลขทศนยมทมชนดขอมลเปนdouble จะมตวอกษร D หรอ d ตอท�ย เชน 2.718D ( โดยทวไปไมจำ�เปนตองใสตวอกษร

D เพร�ะขอมลชนดตวเลขทศนยมจะกำ�หนดให เปน double อยแลว)

ตวแปร (Variable)ตวแปรคอขอมลทส�ม�รถเปลยนแปลงค�ไดใน

โปรแกรม โดยใชคำ�สงกำ�หนดค�คำ�สงในก�รประก�ศตวแปรของภ�ษ�จ�ว�มรปแบบดงน

dataType [variableName]; ตวอย�งเชน คำ�สง

int amount; double x,y;float price,wholeSalePrice;

คำาสงกำาหนดคา(Assignment Statement)

คำ�สงกำ�หนดค�จะเปนคำ�สงทใชในก�รเปลยนแปลงค�ของตวแปร

คำ�สงกำ�หนดค� (assignment statement) ซงมรปแบบดงน

variableName = expression;ตวอย�งเชน

x = 1;radius = 3.14;c = ‘a’;y = x+4*3;amount = 121+14;

คำาสงประกาศและกำาหนดคาตวแปร

เร�ส�ม�รถทจะประก�ศและกำ�หนดค�เรมตนของตวแปรภ�ยใน คำ�สงเดยวกน โดยมรปแบบคำ�สงดงน

dataType variableName = expression

ตวอยางเชนint amount = 123; float price = 12.0f;double x = 4.0, y = 2.5;

ตวอยางโปรแกรมpublic class VariableAssignDemo { public static void main(String args[]) {

int x,y;boolean b1;float z = 3.414f; /* The program will not be

compiled successfully if a character f is missing */

double w;x = 5;y = 4;b1 = (x > y);w = x * 3.2;System.out.println("x = " + x + " y = " + y);System.out.println("b1 = " + b1);System.out.println("z = " + z + " w = " + w);

}}

คาคงทก�รประก�ศค�คงทในภ�ษ�จ�ว�ทำ�ไดโดยก�รใส

คยเวรด final หน�คำ�สงประก�ศช อ โดยมรปแบบดงน

final dataType CONSTANT_NAME = expression;

ตวอย�งเชน คำ�สงfinal int MINIMUM = 4;final double MIN_GPA = 2.00;

ตวอยางโปรแกรมpublic class ConstantDemo { public static void main(String args[]) {

final int MAXIMUM = 10;final double MIN_GPA;

System.out.println("Maximum is " + MAXIMUM);MIN_GPA = 2.00;System.out.println("Minimum GPA is " + MIN_GPA);

// MIN_GPA = 3.00; //illegal }}

ขอบเขตของตวแปรและคาคงท

ตวแปรและค�คงทซงประก�ศขนจะส�ม�รถใชง�น ภ�ยในบลอกคำ�สง ({ }) ทประก�ศเท�นน

ภ�ษ�จ�ว�แบงตวแปรและค�คงทเปนสองประเภทคอ ตวแปรหรอค�คงททเปนคณลกษณะของออปเจ

คหรอคณลกษณะของคล�ส ตวแปรหรอค�คงททอยในบลอกของเมธอดทเรยก

ว�ค�คงทภ�ยใน (local constant) หรอตวแปร ภ�ยใน (local variable)

คาเรมตนอตโนมตของตวแปร

ตวแปรทเปนคณลกษณะของออปเจคหรอคณลกษณะของคล�สจะถกกำ�หนดค�เรมตนใหโดยอตโนมต

ตวอยางโปรแกรมpublic class VariableScopeDemo { public int i; // object variable

public void method1() {int j = 4; // local variableint k = 2; // another local variable

} public void method2() {

int j = 0; // local variableSystem.out.println(i);

// calling an object variable i// System.out.println(k); // illegal }}

ตวดำาเนนการ(Operator)

นพจนภ�ษ�จ�ว�อ�จจะประกอบดวยขอมลค�คงท ตวแปร หรอค�คงทต�งๆ โดยจะมตวดำ�เนนก�รต�งๆไวเพอ

คำ�นวณห�ผลลพธทเปนชนดขอมลต�งๆ ตวดำ�เนนก�รในภ�ษ�จ�ว�แบงออกเปน 4 ประเภทคอ

ตวดำ�เนนก�รท�งคณตศ�สตร (Arithmetic Operator)

ตวดำ�เนนก�รแบบสมพนธ (Relational Operator) ตวดำ�เนนก�รท�งตรรกศ�สตร (Logical Operator) ตวดำ�เนนก�รแบบบต (Bitwise Operator)

ตวดำาเนนการ(Operator)การดำาเนนการทางคณตศาสตร

ตวอย�งของก�รดำ�เนนก�รท�งคณตศ�สตร เชน

a + b * c นพจน (Expression) คอ ก�รนำ�เอ�โอเปอเรเตอรและโอเปอ

แรนดหล�ย ๆ ตว ม�รวมเข�เปนประโยคเดยวกน ซงจ�กด�นบน จะเรยก a + b * c วา นพจน“ ”

โอเปอเรเตอร (Operator) คอ ตวดำ�เนนก�ร ซงอ�จเปนก�รดำ�เนนก�รท�งคณตศ�สตรหรอท�งตรรกศ�สตรกได ซงจ�กนพจนด�นบน จะเรยก + และ * วา โอเปอเรเตอร“ ”

โอเปอแรนด (Operand) คอ ตวถกดำ�เนนก�ร ซงอ�จเปน literals, ตวแปร หรอนพจนกได ซงจ�กนพจนด�นบน จะเรยก a, b และ c วา โอเปอแรนด“ ”

ตวดำาเนนการทางคณตศาสตร

ตวดำาเนนการทาง คณตศาสตรแบบยอ

ตวดำาเนนการเพมคาและลดคา

ตวดำ�เนนก�รเพอบวกค�ทละ 1 หรอลดค�ทละ 1 เครองหม�ย ++ หรอ --ตวอย�ง

x++ คอ x = x+1 ++x คอ x = x+1 x-- คอ x = x-1 --x คอ x = x-1

ถ�ว�งเครองหม�ยไวข�งหน� โปรแกรมจะคำ�นวณค�กอนแลวจงทำ�คำ�สง

ถ�ว�งเครองหม�ยไวข�งหลง โปรแกรมจะคำ�นวณค�หลงจ�กทำ�คำ�สง

ตวดำาเนนการเพมคาและลดคาx++ มคว�มหม�ยเหมอนกบ ++x คอ

เปนก�รเพมค�ของ x ขน 1 แตเมอนำ�ไปใชรวมกบนพจนอน ๆ ลำ�ดบก�รทำ�ง�นของ x++ และ ++x จะแตกต�งกน

y = x++;z = ++x;

ลำาดบการทำางานจะเปน ดงนy = x++ => 1. y = x จะเหนวาทง x++ และ ++x ตางกทำา x = x + 1 2. x = x + 1; เหมอนกน แตลำาดบการทำางานตางกน กลาวคอ

z = ++x => 1. x = x + 1; ++x จะทำาการเพมคาของ x ขน 1 กอนทจะนำาคาของ x 2. z = x ไปใชในนพจน แต x++ จะนำาคาของ x ไปใชในนพจนกอนแลวคอยเพมคาของ x ขน 1

ตวอยางโปรแกรมpublic class IncrementDemo { public static void main(String args[]) {

int x; int y; x = 5;

y = x++; System.out.println("x = "+x" y = "+y);

y = ++x; System.out.println("x = "+x" y = "+y);

}}

ผลลพธทไดจากการรนโปรแกรมx = 6 y = 5x = 7 y = 7

ตวดำาเนนการแบบสมพนธ

ตวอยางโปรแกรมpublic class BooleanDemo { public static void main(String args[]) {

int x = 5; int y = 4;

boolean b1; b1 = (x!=y);

System.out.println("x not equal to y is "+b1); System.out.println("y less than 0 is "+(y<0));

} }

ตวดำาเนนการทางตรรกศาสตร

ตวอยางการใชตวดำาเนนการทางตรรกศาสตร

นพจน ผลลพธ

(7>6) && (2<1) false

(7>6) || (2<1) true

!(7>6) false

ผลลพธของการกลบคาทางตรรกะ

ผลลพธของการ AND คาทางตรรกะ

ผลลพธของการ OR คาทางตรรกะ

ผลลพธของ Exculsive OR คาทางตรรกะ

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

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

ตวอยาง คำ�สง x = 2+3*4-(7+2); คำ�นวณห�ผลลพธต�ม

ลำ�ดบดงน คำ�นวณห�ผลลพธค� 7+2 ทำ�ใหได

x = 2+3*4-9 คำ�นวณห�ผลลพธค� 3*4 ทำ�ใหได

x = 2+12-9 คำ�นวณห�ผลลพธค� 2+12 ทำ�ใหได

x = 14-9 คำ�นวณห�ผลลพธค� 14-5 ทำ�ใหได

x = 5

22/04/23 59

ใชวงเลบเพอจดกลมการคำานวณ

22/04/23 60

เปรยบเทยบผลการคำานวณ

int a =2 + (3 *4);

int a = (2 + 3) * 4;

ตวดำาเนนการแบบบต(Bitwise Operator)โอเปอเรเตอรระดบบต หรอ Bitwise Operator

เปนโอเปอเรเตอรทใชดำ�เนนก�รกบขอมลในลกษณะบตตอบต ซงถอว�เปนก�รดำ�เนนก�รทคอนข�งละเอยดม�ก เนองจ�กบต (bit ยอม�จ�ก binary digit) คอ หนวยขอมลทเลกทสดของคอมพวเตอรโอเปอเร

เตอรชอ คำาอธบาย

& Bitwise And

ถ�บตทนำ�ม�ดำ�เนนก�รกน มค�เปน 1 ทงค ผลของก�รดำ�เนนก�รจะเปน 1 สวนกรณอน ๆ ทเหลอจะใหผลของก�รดำ�เนนก�รเปน 0

| Bitwise OR

ถ�บตทนำ�ม�ดำ�เนนก�รกน มค�เปน 0 ทงค ผลของก�รดำ�เนนก�รจะเปน 0 สวนกรณอน ๆ ทเหลอจะใหผลของก�รดำ�เนนก�รเปน 1

^ Bitwise XOR

Exclusive OR

ถ�บตทนำ�ม�ดำ�เนนก�รกนมค�เหมอนกน ผลของก�รดำ�เนนก�รจะเปน 0 แตถ�บตทนำ�ม�ดำ�เนนก�รมค�ต�งกน ผลจะเปน 1

“เหมอน 0 ตาง 1”

~ Bitwise Not

โอเปอเรเตอรนตองก�รโอเปอแรนดเพยงตวเดยว (เปน unary operator) โดยจะใหผลเปนบตตรงกนข�มกบค�ของแตละบตของโอเปอแรนดนน (ถ�บต 0 จะใหผลเปนบต 1 แตถ�บต 1 จะใหผลเปนบต 0 )

ตวดำาเนนการแบบบต(Bitwise Operator)

โอเปอเรเตอร

ชอ คำาอธบาย

>> Right Shift

เลอนบตไปท�งขว�เปนจำ�นวนครงเท�กบค�ของตวถกดำ�เนนก�รท�งขว�มอโดยห�กขอมลเปนค�ลบ จะเตมบต 1 เข�ม�ท�งซ�ยเท�กบจำ�นวนบตทเลอน แตห�กขอมลเปนค�บวก จะเตม 0 เข�ม�ท�งซ�ยเท�กบจำ�นวนบตทเลอน

<< Left Shift

เลอนบตไปท�งซ�ยเปนจำ�นวนครงเท�กบค�ของตวถกดำ�เนนก�รท�งขว�มอโดยจะเตม 0 เข�ม�ท�งขว�เท�กบจำ�นวนบตทเลอน ไมว�ขอมลจะเปนค�บวกหรอค�ลบกต�ม

>>> Unsigned

Right Shift

เลอนบตไปท�งขว�เปนจำ�นวนครงเท�กบค�ของตวถกดำ�เนนก�รท�งขว�มอ โอเปอเรเตอรนจะทำ�ง�นกบขอมลโดยไมคดเครองหม�ย (unsign) คอ ไมว�ขอมลจะเปนค�ลบหรอค�บวก จะเตม 0 เข�ม�ท�งซ�ยเท�กบจำ�นวนบต ทเลอนเสมอ

ตวดำาเนนการแบบบต(Bitwise Operator)

bit1>>3bit1bit1

bit1

bit1

0000 0000 0000 0000 0000 0000 0100 0010

0000 0000 0000 0000 0000 0000 0100 0010

0000000 0000 0000 0000 0000 0000 0100 0010

0000 0000 0000 0000 0000 0000 0000 1000

ตวดำาเนนการแบบบต(Bitwise Operator)bit3 = - 4

bit3>>3bit3bit3

bit3

bit3

1111 1111 1111 1111 1111 1111 1110 0010

1111 1111 1111 1111 1111 1111 1110 0010

1111111 1111 1111 1111 1111 1111 1110 0010

1111 1111 1111 1111 1111 1111 1111 1100

การแปลงชนดขอมล ในกรณทตวถกดำ�เนนก�รทงสองมชนดขอมลทต�งกน ภ�ษ�จ�ว�จะม

หลกก�รแปลงชนดขอมล (type conversion) ดงน ถ�ตวถกดำ�เนนก�รตวหนงมชนดขอมลเปน double ตวถกดำ�เนน

ก�รอกตวหนงจะถกแปลงใหมชนดขอมลเปน double โดยอตโนมต

ถ�ตวถกดำ�เนนก�รทงสองไมไดมชนดขอมลเปน double แตมตว ถกดำ�เนนก�รตวหนงทมชนดขอมลเปน float ตวถกดำ�เนนก�รอก

ตวหนงจะถกแปลงใหมชนดขอมลเปน float โดยอตโนมต ถ�ตวถกดำ�เนนก�รทงสองไมไดมชนดขอมลเปน double หรอ

float แตมตวถกดำ�เนนก�รตวหนงทมชนดขอมลเปน long ตว ถกดำ�เนนก�รอกตวหนงจะถกแปลงใหมชนดขอมลเปน long โดย

อตโนมต

การแปลงชนดขอมล กรณอนๆ ตวถกดำ�เนนก�รทงสองจะแปลงใหมชนด

ขอมลเปน int ตวอย�ง

byte b1, b2, b3;b1 = 2;b2 = 4;b3 = b1+b2; //illegal คำ�สงกำ�หนดค� b3 ไมถกตองเนองจ�ก b1+b2 จะ

ใหค�ขอมลทมชนดขอมลเปน int

การแปลงชนดขอมลก�รแปลงชนดขอมลมสองรปแบบคอ

ก�รแปลงขอมลทกว�งขน (widening conversion) คอก�รแปลงจ�กชนดขอมลทมขน�ดเลกกว�ไปเปนชนดขอมลทมขน�ดใหญกว�

ก�รแปลงขอมลทแคบลง (narrowing conversion) คอก�รแปลงจ�กชนดขอมลทม

ขน�ดใหญกว�ไปเปนชนดขอมลทมขน�ดเลกลง ซงอ�จมผลใหเสยคว�มละเอยดของขอมลบ�งสวนไป

หลกการการแปลงชนดขอมล

ชนดขอมลตวเลขจำ�นวนเตมส�ม�รถแปลงใหเปนชนดขอมลตวเลขทศนยมได

ชนดขอมล float ส�ม�รถแปลงใหเปนชนดขอมล double ไดชนดขอมลตวเลขจำ�นวนเตมมขน�ดเรยงกนจ�กนอยไปม�ก

ดงนbyte short int long

ชนดขอมล char ส�ม�รถแปลงใหเปนชนดขอมล int ได ชนดขอมล boolean จะไมมคว�มสมพนธกบชนดขอมลแบบ

พนฐ�นอนๆ

ตวอยางของการแปลงชนดขอมล ภ�ษ�จ�ว�จะปรบชนดขอมลใหอตโนมต ในกรณตอไปน

กำ�หนดค�ชนดขอมลทเลกกว�ใหกบตวแปรชนดขอมลทใหญกว�อ�ทเชนint i = 4;long l = i;

นพจน i จะถกปรบชนดขอมลจ�ก int ใหเปน long โดยอตโนมตกำ�หนดค�ชนดขอมลจำ�นวนเตมใหกบจำ�นวนเลขทศนยมอ�ทเชน

double x = 3; นพจน 3 จะถกปรบชนดขอมลจ�ก int ใหเปน double โดย

อตโนมต

ตวอยางของการแปลงชนดขอมล

ตวอย�งทไมถกตองint amount = 123L; //illegal

float f = 4.0; //illegal

ตวอยางโปรแกรม public class PromotionDemo {

public static void main(String args[]) { int i;

long l; float fl = 4.2f; i = 4; l = i; fl = i; double x = fl; fl = 4.2; //illegal}

}

Typecasting เร�ส�ม�รถแปลงชนดขอมลขน�ดใหญ ให

เปนชนดขอมลทเลกกว�ไดโดยวธก�รทเรยก ว� typecasting

รปแบบคำ�สง(target_type)expression;

จะทำ�ใหโปรแกรมส�ม�รถคอมไพลผ�นไดบ�งกรณอ�จทำ�ใหขอมลบ�งสวนสญห�ยไป

ตวอยางของTypecasting ตวอย�ง

int amount = (int) 3.0; แปลงนพจนทมค� 3.0 ขอมลชนด double ใหเปนชนดint

ตวอย�งทมก�รตดขอมลออกint x;double y = 1.25;x = (int) y;

ตวอยางโปรแกรม public class TypecastingDemo {

public static void main(String args[]) { byte b1 = 4; byte b2 = 3; byte b3; b3 = (byte)(b1+b2); float fl; fl = (float)3.2;}

}

ชนดขอมลแบบอางอง ชนดขอมลแบบอ�งองคอออปเจคในภ�ษ�จ�ว� โดยแบงออก

เปนสองแบบคอ ชนดขอมลทเปนคล�ส ชนดขอมลทเปนอะเรย

ชนดขอมลแบบอ�งองจะมวธก�รเกบขอมลในหนวยคว�มจำ�ท แตกต�งจ�กก�รเกบขอมลของชนดขอมลแบบพนฐ�นอ�ทเชน

คำ�สง

int x = 7;String s = new String("Thana");

การประกาศตวแปรและจองเนอทในหนวยความจำา

อ�ทเชนคำ�สง int x;

Date d; d = new Date(16,8,2002);

คลาส StringString เปนคล�สทกำ�หนดไวใน Java API ตวแปรทมชนดขอมลเปน

String กคอออปเจคชนดหนง ซง String มขอแตกต�งจ�กออปเจคทวๆไปดงน String เปนออปเจคทมค�คงทขอมลซงกคอขอคว�มใดๆ ทอย

ภ�ยในเครองหม�ย double quote (“ ”) ตวอย�งเชน“This is a java course”

String เปนออปเจคทส�ม�รถสร�งหรอกำ�หนดค�ไดโดยไมจำ�เปน ตองใชคำ�สง new ตวอย�งเชน เร�ส�ม�รถใชคำ�สง

String s = “Thana”; โดยไมจำ�เปนทจะตองใชคำ�สง

String s = new String(“Thana”);

ตวอยางโปรแกรมpublic class StringDemo { public static void main(Stirng args[]){

String s1 = "Thana"; String s2 = "Thana"; String s3 = new String("Thana");}

}

คำาอธบายโปรแกรม กรณทไมใชคำ�สง new ภ�ษ�จ�ว�จะ

พจ�รณ�จ�ก String Pool ว�มขอคว�มเดมอยหรอไม

กรณทใชคำ�สง new ภ�ษ�จ�ว�จะสร�งขอคว�มใหมและจองเนอทในหนวยคว�มจำ�

เสมอ

String เปนออปเจคท เปลยนคาไมได

ตวอย�งเชน คำ�สงString s1;s1 = “Thanachart";s1 = “Somchai";

ตวดำาเนนการทใชกบ ขอมลชนด String

String เปนออปเจคทมตวดำ�เนนก�รทใชในก�รเชอมขอคว�ม สองขอคว�มเข�ดวยกน โดยใชเครองหม�ย + อ�ทเชน

String s1 = “Hello” + “ World”; ตวดำ�เนนก�รในก�รเชอมขอคว�มส�ม�รถใชเชอมขอมลชนด

String กบตวถกดำ�เนนก�รทเปนชนดขอมลอนๆ ภ�ษ�จ�ว� จะแปลงชนดขอมลดงกล�วใหเปนชนด String โดยอตโนมต

อ�ทเชน คำ�สงString s1 = “This";String s2 = s1 + “ is a test ”;String s3 = s1+4;

คำาสงอนพตและเอาทพต

ออปเจค System.in เปนออปเจคทมเมธอดสำ�หรบ ก�รอ�นขอมลท�งอปกรณอนพตม�ตรฐ�น ซงโดยทวไป

กคอคยบอรด ออปเจค System.out เปนออปเจคทมเมธอดสำ�หรบ

ก�รแสดงขอมลออกท�งอปกรณเอ�ทพตม�ตรฐ�นซงโดยทวไปคอจอภ�พ

ออปเจค System.err เปนออปเจคทมเมธอดสำ�หรบ ก�รแสดงขอผดพล�ด (error) ออกท�งอปกรณทใชใน ก�รแสดงขอผดพล�ด ซงโดยทวไปจะกำ�หนดเปนจอภ�พ

System.out.println

ออปเจค System.out หม�ยถงออปเจคท ชอ out ซงเปนคณลกษณะของคล�สทชอ

System ออปเจคทชอ out เปนออปเจคของคล�สPrintStream ทมเมธอดทนยมใชทวไปคอprint(String s)และ println(String s)

ตวอยางโปรแกรมpublic class ShowPrint { public static void main(String args[]) {

int x = 3, y = 4, z = 5;System.out.print("x = "+x);System.out.println(" y = "+y);System.out.println("z = "+z);

}}

ผลลพธทไดจากการรนโปรแกรมx = 3 y = 4z = 5

การรบขอมลเขามาทางCommand Line

เมธอดทชอ main() จะม argument เปน String args[] ซง ส�ม�รถทจะรบ argument ทสงผ�นม�จ�ก command line ได

ตวอย�งเชนpublic class Sample { public static void main(String args[]) {

System.out.println(“My name is ” + args[0] + “ and I am a ” + args[1]);

} } ถ�ปอนอนพตตรง command line เปน java Sample

Tommy boy จะไดผลลพธคอ My name is Tommy and I am a boy

สรปเนอหาของบท คอมเมนต คอขอคว�มทแทรกอยภ�ยในโปรแกรมซงคอมไพเลอรจะ

ไมแปลขอคว�มนใหเปนสวนหนงของโปรแกรมidentifier คอชอทตงขนในภ�ษ�จ�ว� ซงอ�จเปนชอของคล�ส ชอ

ของ ตวแปร ชอของเมธอด หรอชอของค�คงท ซงจะตองเปนไปต�มกฎก�รตงชอ

ก�รตงชอในภ�ษ�จ�ว� สำ�หรบคล�ส นยมขนตนดวยตวอกษรพมพใหญ สำ�หรบเมธอดและตวแปร นยมขนตนดวยตวอกษรพมพเลก ถ�ชอทตงขนมม�กกว� 1 คำ� นยมขนตนคำ�ใหมดวยตวอกษร

พมพใหญ ตองไมตรงกบคยเวรด

สรปเนอหาของบท คยเวรดคอชอทมคว�มหม�ยพเศษในภ�ษ�จ�ว� คอมไพเลอ

รของภ�ษ� จ�ว�จะเข�ใจคว�มหม�ยและคำ�สงทจะตองดำ�เนนก�รสำ�หรบคยเวรดแตละตว

ขอมลค�คงทคอคำ�ทใชแสดงขอมลทเปนตวเลข ตวอกขระ ขอคว�ม หรอค�ท�งตรรกะ

ชนดขอมลในภ�ษ�จ�ว�แบงเปนสองประเภทคอ ชนดขอมลแบบพนฐ�นและชนดขอมลแบบอ�งอง

ชนดขอมลแบบพนฐ�นทใชในภ�ษ�จ�ว�มทงหมด 8 ชนด คอ char,byte, short,int,long,float,double และ

boolean

สรปเนอหาของบทขอมลทเกบอยในโปรแกรมแบงเปนสองประเภทคอตวแปรและค�

คงท ซงตวแปรคอขอมลทส�ม�รถเปลยนแปลงค�ไดในโปรแกรม โดยใชคำ�สงกำ�หนดค� สวนค�คงทคอขอมลทกำ�หนดค�ไดเพยง

ครงเดยวและไมส�ม�รถเปลยนแปลงค�ไดในโปรแกรมตวแปรทมก�รประก�ศชนดขอมลแลวส�ม�รถทจะกำ�หนดหรอ

เปลยนแปลงค�ไดโดยใชคำ�สงกำ�หนดค� ก�รประก�ศค�คงทในภ�ษ�จ�ว�ทำ�ไดโดยก�รใสคยเวรด final

หน�คำ�สงประก�ศชอ ค�คงทหรอตวแปรทอยภ�ยในบลอกของเมธอด จะมขอบเขตก�ร

ใชง�นอยภ�ยในบลอกเท�นน

สรปเนอหาของบทตวดำ�เนนก�รทใชในภ�ษ�จ�ว�มทงหมด 4 แบบคอ

ตวดำ�เนนก�รท�งคณตศ�สตร - - *: +, , , /, %, +=, =, *=, /=, %=, ++ และ --

ตวดำ�เนนก�รท�งตรรกศ�สตร : <, <=, >, >=, ==และ !=

ตวดำ�เนนก�รแบบสมพนธ : !, &&, &, || และ | ตวดำ�เนนก�รแบบบต

กรณทนพจนใดๆมตวดำ�เนนก�รม�กกว�หนงตว ภ�ษ�จ�ว�จะจดลำ�ดบคว�มสำ�คญของตวดำ�เนนก�ร เพอคำ�นวณห�ผลลพธต�มลำ�ดบคว�ม สำ�คญของตวดำ�เนนก�ร

สรปเนอหาของบท คว�มแตกต�งระหว�งก�รแปลงขอมลโดยอตโนมตและ

Typecasting ก�รแปลงขอมลโดยอตโนมตคอ ก�รทชนดขอมลทมขน�ดเลกกว�

ถกแปลงใหเปนชนดขอมลทมขน�ดใหญกว�โดยอตโนมต Typecasting คอก�รทจะตองระบชนดขอมลทมขน�ดใหญกว�ให

กบนพจนทมชนดขอมลขน�ดเลกกว� ชนดขอมลแบบอ�งองซงกคอออปเจคในภ�ษ�จ�ว� โดยแบงออกเปน

สองแบบคอชนดขอมลทเปนคล�ส และชนดขอมลทเปนอะเรย ขอมลทเกบในหนวยคว�มจำ�ของชนดขอมลแบบอ�งอง จะเปนตำ�แหนง

อ�งองทเกบขอมลในหนวยคว�มจำ� แตในกรณของชนดขอมลแบบพน ฐ�น ขอมลทเกบในหนวยคว�มจำ�จะเปนค�ของขอมลจรงๆ

สรปเนอหาของบทString เปนชนดขอมลแบบคล�ส ไมใชชนด

ขอมลแบบพนฐ�นคำ�สงทใชในก�รแสดงผลลพธของขอมลในภ�ษ�

จ�ว�คอคำ�สง System.out.println() เมธอดทชอ main() จะม argument เปน

String args[] ซงส�ม�รถทจะรบ argument ทสงผ�นม�จ�ก command line ได

22/04/23 92

แบบทดสอบท 31. จงพจ�รณ�คอมเมนตดงตอไปนว�ถกหรอผดอย�งไร

จงใหเหตผล 11. // /* comment1 */

1.2 /* comment1 /* comment2*/*/1.3 /*comment1 comment2 comment3*/1.4 /* comment1 *//* comment2 *//* comment3 comment4*/1.5 /**//*comment1*//**/

22/04/23 93

แบบทดสอบท 32. จงพจ�รณ�ชอตอไปนว�เปนชอทตงขนถกตองต�มกฎ

ก�รตงชอ ของภ�ษ�จ�ว�หรอไมอย�งไร

21. TRUE 2.6 $var#2.2 me&you 2.7 _1_2_32.3 1_2_3var 2.8 v1var v22.4 $_test 2.9 _ native _2.5 volaile

22/04/23 94

แบบทดสอบท 3 3. จงเขยนโปรแกรมทใชเครองหม�ยตอไปนครบทก

เครองหม�ย +, += , ++ , - , -= , * , % (บนทกไฟลชอ Operator.java) 4. จงเขยนโปรแกรมคำ�นวณค�ตอไปน 2X3 + 4X2 + 5X + 1 โดยกำ�หนดค� X = 5 (Expression.java) 5. จงเขยนโปรแกรมห�ค�เฉลยของ 1420212732, , , , (Average.java)

22/04/23 95

แบบทดสอบท 3 6. สเหลยมค�งหมมด�นคขน�นย�ว 10

และ 20 และเสนคขน�นทงสองห�งกนเท�กบ 6 จงเขยนโปรแกรมเพอห�พนทของสเหลยมค�งหมดงกล�ว โดยสตรก�รห�พนทสเหลยมค�งหมมดงนพนทสเหลยมคางหม = 12/ คณ ผลบวกดานคขนาน คณ ระยะหางระหวางเสนคขนาน (Trapezium.java)

LOGO

22/04/23 96

top related