1. ขั้นตอนการเขียนโปรแกรม
    1. Create Project
      1. New > Project
        1. Java Project
          1. New > Class
          2. Name Class
    2. Codeing
    3. Compile
    4. Test
      1. run
        1. run แบบธรรมดา
        2. run configuration
    5. Save Finish Project
  2. Variable
    1. Declaration หรือ การประกาศตัวแปร
      1. <ชนิดข้อมูล> <ชื่อตัวแปร>
        1. ประกาศตัวแปร
      2. <ชื่อตัวแปร> = <ค่าตัวแปร>
        1. กำหนดค่าตัวแปร
      3. <ชนิดข้อมูล> <ชื่อตัวแปร> = <ค่าตัวแปร>
        1. ประกาศตัวแปร พร้อม กำหนดค่าตัวแปร
    2. ชนิดของ Variable
      1. Instance Variable หรือ Non-Static Field
        1. ตัวแปรที่ถูกสร้างขึ้นมาจาก Class
      2. Class Variable หรือ Static Field
        1. เป็นตัวแปรที่กำหนดขึ้นไว้ใน Class ถือเป็นส่วนประกอบของ Class ตัวแปร Instance สามารถนำไปใช้ได้
      3. Local Variable
        1. ต้วแปรที่อยู่ทั่วไป ใน method
    3. การตั่งชื่อ ตัวแปร
      1. ต้องขึ้นต้นด้วยตัวอักษร
        1. ขึ้นต้นด้วย _ ได้
        2. ขึ้นต้นด้วย $ ได้
      2. ห้ามขึนต้นด้วย
        1. ตัวเลข
        2. เครื่องหมายต่างๆ ยกเว้น $ และ _
      3. ภายใน
        1. ตัวอักษร
        2. ตัวเลข
        3. เครื่องหมาย $ และ _ เครื่องหมายอื่นๆห้าม
        4. ห้ามมีช่องว่าง
      4. Case Sensitive
        1. ตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก มีความหมายแตกต่างกัน
      5. Reserved Word
      6. ข้อแนะนำในการ ตั่งชื่อตัวแปร
        1. เป็นคำเดี่ยว ให้ใช้อักษรตัวเล็กทั้งหมด เช่น name, surname, age
        2. เป็นคำประกอบ ให้ขึ้นต้นคำแรกด้วยตัวเล็ก และ ตัวใหญ่สำหรับคำต่อไป เช่น firstName , lastName
        3. ไม่ใช้ภาษาไทยในการตั่งชื่อ
        4. หลีกเลี่ยงการใช้อักษาเดี่ยว เช่น a,b,x,y,xx,yy
  3. Data
    1. ชนิดข้อมูล
      1. Primitive Data Types
        1. ข้อมูลพื้นฐาน
        2. ข้อมูลที่แบ่งไม่ได้อีกแล้ว
        3. มักจะเก็บเป็นค่าเดี่ยวๆ
        4. ชนิดของ Primitive Data
          1. Integer หรือ จำนวนเต็ม
          2. จำนวนเต็มขนาดเล็ก
          3. byte
          4. ขนาดไม่เกิน 8 บิต หรือ 1 ไบต์
          5. ครอบคลุมค่า -127 ถึง 127
          6. short
          7. ขนาดไม่เกิน 16 บิต หรือ 2 ไบต์
          8. จำนวนเต็มทัวไป หรือ ขนาดใหญ่ขึ้น
          9. int
          10. ใช้พื้นที่จัดเก็บ 32 บิต หรือ 4 ไบต์
          11. long
          12. ใช้พื้นที่เก็บ 64 บิต หรือ 8 ไบต์
          13. จำนวนทศนิยม
          14. float
          15. ตัวเลขทศนิยมทัวไป
          16. ใช้พื้นที่จัดเก็บ 32 บิต หรือ 4 ไบต์
          17. double
          18. ตัวเลขทศนิยมขนาดใหญ่
          19. ใช้พื้นที่เก็บ 64 บิต หรือ 8 ไบต์
          20. char
          21. เก็บตัวอักษร ตามมาตรฐาน 16-bit Unicode
          22. boolean
          23. ตรรกะ
          24. พื้นที่เก็บ 1 บิต
        5. การแปลงชนิดของข้อมูล
          1. การใช้ cast
      2. Class Types
      3. Array Types
  4. Operator
    1. Assignment Operator
      1. /=
        1. นำมาหารกัน แล้ว กำหนดค่า
      2. *=
        1. นำมาคูณกัน แล้ว กำหนดค่า
      3. -=
        1. ลดค่า แล้ว กำหนดค่า
        2. a -= b
        3. นำค่า a - b ไปไว้ที่ตัวแปร a
      4. +=
        1. เพิ่มค่า แล้ว กำหนดค่า
        2. a += b
        3. นำค่า a + b มาไว้ในตัวแปร a
      5. =
        1. กำหนดค่า
        2. a = b
        3. การนำค่า b มาไว้ที่ตัวแปร a
    2. Arithmetic Operator
      1. a+b
      2. a-b
      3. a*b
      4. a/b
      5. a%b
        1. การหาเศษจากการหาร
    3. Comparison Operator
      1. จะให้ผลเป็น boolean
        1. true
        2. false
      2. a==b
        1. เป็น true เมื่อเท่ากัน
      3. a!=b
        1. เป็น true เมื่อไม่เท่ากัน
      4. a<b
      5. a<=b
      6. a>b
      7. a>=b
    4. Logical Operator
      1. จะให้ผลเป็น boolean
        1. true
        2. false
      2. !a
        1. Negation หรือ นิเสธ
      3. a && b
        1. and และ
        2. เป็น true เมื่อ a และ b เป็น true
      4. a || b
        1. or หรีอ
        2. เป็น true เมื่อ a หรือ b ตัวใดตัวหนึ่งเป็น true
    5. อื่นๆ หาพวกไม่ได้
      1. aaa + bbb
        1. ถ้า aaa และ bbb เป็น String จะได้ aaabbb
      2. x++
        1. เป็นการนำค่า x + 1 ไปไว้ที่ตัวแปร x
      3. x--
        1. เป็นการนำค่า x - 1 ไปเก็บที่ตัวแปร x
  5. Constant
    1. ค่าคงที่
    2. final <ชนิดข้อมูล> <ชื่อค่าคงที่> = <ค่าคงที่ที่กำหนด>
    3. ชื่อค่าคงที่ แนะนำ ให้เขียนเป็นอักษรตัวใหญ่ เพื่อที่จะไม่ไปสับสนกับ ตัวแปร
  6. Comment
    1. //
      1. ข้อความ อธิบายต้องจบภายในหนึ่งบรรทัด
    2. /* ข้อความ อธิบายโปรแกรม ยาวๆ และต้องปิดด้วย */
  7. Statement
    1. คำสั่ง
    2. เป็นคำสั่งเดี่ยว หรือ กลุ่ม (ต้องอยู่ในเครื่องหมาย {})
    3. จบคำสั่งด้วย เครื่องหมาย ;
  8. Expression
    1. การกระทำที่เสร็จสิ้นแล้ว ได้ผลลัพธ์ออกมา
  9. Control Statement
    1. คำสั่งที่ใช้ใน Control Statement
      1. if (เงื่อนไข) {สิ่งที่ทำเมื่อเงื่อนไขเป็น trun} else {สิ่งที่ต้องทำเมื่อเงื่อนไขเป็น false}
        1. ตัวอย่างการใช้ if statement
          1. codding
          2. เมื่อกำหนด argument [0] = 35 จะได้แบบนี้
          3. เอาใหม่ กำหนด argument [0] = 60 จะได้แบบนี้
      2. switch (ค่าของ case) case 0: สิ่งที่ต้องทำ ; case 1: สิ่งที่ต้องทำ ;
        1. switch
          1. codding
          2. excule
      3. while คือการวนลูป มาทำจนเงื่อนไขเป็น false
        1. while
          1. codding
          2. ผลที่ได้
      4. for (กำหนดค่าเริ่มต้น ; เงื่อนไขให้ทำต่อ true เลิกทำ false ; แก้ไขตัวแปรเริ่ม)
        1. ตัว flowChart
          1. SourceCode
      5. do
    2. Branching
      1. การแตกกิ่งของการ เข้าเงื่อนไข เลื่อกการทำงาน
    3. Iteration
      1. การทำงานซ้ำ การวนลูป
    4. การทำงานแบบ block
      1. จะมีคำสั่งเดียว หรือ หลายคำสั่งก็ได้ แต่ต้องอยู่ในเครื่องหมาย { คำสั่งต่างๆ }
  10. Array
    1. เป็นการเก็บข้อมูลชนิดเดียวกัน ไว้ในตัวเองมากกว่า 1 ค่า
    2. มิติของ อาร์เรย์
      1. อาร์เรย์ 1 มิติ
      2. อาร์เรย์หลายมิติ
    3. index ของ array
      1. จำนวนเต็มเริ่มจาก 0 จนถึงตัวสุดท้าย
      2. อาร์เรย์ 1 มิติ
        1. name[0], name[1], name[2]
      3. อาร์เรย์ 2 มิติ
        1. name[0][0], name[0][1], name[1][1]
    4. การใช้งาน Single Dimension Arrays
      1. จะมองการเก็บข้อมูลเป็น 1 แถว
      2. มีคอลัมน์เท่ากับจำนวนข้อมูล
      3. การประกาศตัวแปรอาร์เรย์ 1 มิติ
        1. ชนิดข้อมูล ชื่ออาร์เรย์ [];
        2. Sting nameCity[];
      4. การสร้าง อาร์เรย์
        1. ชื่ออาร็เรย์ = new ชนิดข้อมูล [ขนาดของอาร์เรย์]
        2. nameCity = new Sting [3];
      5. การแทนค่าข้อมูลใน อาร์เรย์
        1. ชื่ออาร์เรย์ [อินเด็กซ์] = ค่าของข้อมูล
        2. nameCity [0] = "Bangkok";
        3. nameCity [1] = "Jakatar";
        4. nameCity [2] = "changmai";
      6. เราสามารถย่อได้เป็น
        1. Sting nameCity [] = {"Bangkok", "Jakatar", "changmai"};
    5. การใช้งาน Two-Dimension Arrays
      1. จะเก็บข้อมูลเป็น แถว (แนวแกน x) และ คอลั่มน์(แนวแกน y)
      2. การประกาศตัวแปรอาร์เรย์ 2 มิติ
        1. ชนิดของข้อมูล ชื่ออาร์เรย์ [][] = new ชนิดของข้อมูล [จำนวนแถม][จำนวนคอลัมน์]
        2. int iTest [][] = new int [2][2]
      3. การแทนค่าในอาร์เรย์ 2 มิติ
        1. ชื่ออาร์เรย์ [ตำแหน่งของแถว][ตำแหน่งของคอลัมน์] = ค่าของข้อมูล;
        2. iTest [1][2] = 15;
  11. โปรแกรมเชิงวัตถุ
    1. Object Orienter Programing OOP
      1. ยกตัวอย่างรถยนต์ BMW
        1. เครื่องยนต์ (Object)
        2. ตัวถัง (Object)
        3. กระจก (Object)
        4. เบาะ (object)
        5. การสตาร์ดรถยนต์ (method)
        6. การขับรถยนต์ (method)
        7. การเลี้ยวรถยนต์ (method)
        8. การหยุดรถยนต์ (method)
    2. ตรงข้ามกับ Structure Programing
      1. การทำงานตามลำดับขั้นตอน
      2. ทำงานตามลำดับบรรทัด
    3. องค์ประกอบพื้นฐานของ OOP
      1. Object
        1. ความเป็น Object ถูกแบ่งแยกด้วย
          1. Attribute หรือ คุณสมบัติเฉพาะ
          2. Method ความสามารถในการทำงาน
        2. สามารถถอด Object หรือ เปลื่ยนสลับ Object ได้
        3. การสร้าง และ ใช้งาน Object
          1. การสร้าง Object จาก class
          2. ชื่อคลาส ชื่อออบเจ็กต์ ; ชื่อตัวแปรออบเจ็กต์ = new ชื่อคลาส ();
          3. ชื่อคลาส ชื่อตัวแปรออบเจ็กต์ = new ชื่อคลาส();
          4. เบื้องหลังการทำงานของ object
          5. มีการจองพื้นที่หน่วยความจำ เพื่อเก็บ object
          6. มีการเรียกใช้ method พิเศษ ที่มีชื่อเหมือนคลาส (Constructor)
          7. กำหนดค่าเริ่มต้นให้ตัวแปร object
          8. การกำหนดสิทธิ การเข้าถึงข้อมูล
          9. public
          10. สามารถเข้าถึง ข้อมุลได้จากทุกที่
          11. protect
          12. จากคลาสเดียวกัน , แพ็คเกจเดียวกัน , ต่างแพ็คเกจแต่เป็นคลาสแม่ลูกัน พูดง่ายๆ ต่างแพ็คเกจไม่ได้
          13. package
          14. ต้องคลาสเดียวกัน , แพ็คเกจเดียวกัน สามารถเข้าถึงกันได้
          15. private
          16. คลาสเดียวกันเท่านั้นที่ สามารถเข้าถึงกันได้
      2. Class
        1. ก่อนที่จะสร้าง Object ต้องสร้าง class ขึ้นมาก่อน
        2. Object ที่ถูกสร้างมาจาก Class เดียวกัน จะมีความสามารถเหมือนๆกัน แต่จะต่างกันที่ คุณสมบัติ
        3. การสร้าง Class
          1. การตั่งชื่อ class ส่วนใหญ่จะใช้อักษรตัวใหญ่
          2. โครงสร้างของ class
      3. Method
        1. ความสามารถในการทำงาน ของ Object แต่ละตัว ที่ถูกสร้างขึ้นมากับ Object แต่ละตัว
        2. ส่วนใหญ่จะเป็น Function หรือ โปรแกรมย่อยที่ อยู่ใน Class
        3. ฟังก์ชัน กับ เมธอด
          1. ฟังก์ชัน คือ โปรแกรมย่อย ที่อยู่ใน โปรแกรมหลัก ทำให้เรา สามารถเรียกใช้ ได้ไม่จำกัด
          2. เมธอด ก็เหมือนกับ ฟังก์ชัน แต่ เมธอดสามารถ อยู่ได้ทั้งใน โปรแกรมที่เรียก เมธอดใช้ หรือ อยู่ใน คลาส คนละไฟร์ ที่ เรียกใช้ เมธอด
        4. อาร์กิวเมนต์ และ พารามิเตอร์
          1. Arguments ค่าคงที่ หรือ ตัวแปร ต่างๆ ที่เราส่งให้ เมธอด ในการเป็น พาหะ ให้นำค่าไปประมวลผล
          2. ตอนส่งค่า ไปที่เมธอด
          3. Parameter ตัวแปรที่ทำหน้าที่รับค่า จาก Arguments ที่ส่งมาจากเมธอด
          4. ตอนรับค่า จากเมธอด
    4. การสร้างซอฟต์แวร์ที่ดี คือ การสร้างซอฟต์แวร์ ที่เกิดจากการต่อยอด ซอฟต์แวร์เวอร์ชั่นเดิม โดยไม่ต้องเริ่มใหม่ทั้งหมด
    5. คุณสมบัติพื้นฐานของ OOP
      1. Inheritance การสืบทอดคลาส
        1. SuperClass , Base Class หรือที่เรียกว่า คลาสแม่
          1. คือคลาสที่เป็นต้นแบบ เพื่อใช้สำหรับการสืบทอด
        2. SubClass Derived Class หรือที่เรียกว่า คลาสลูก
          1. คือคลาสที่ถูกถ่ายทอดมา
      2. Encapsulation การซ่อนรายละเอียดไว้ภายใน
        1. ผู้สร้างคลาส สามารถจำกัดสิทธิ์ ในการใช้งานฟิลด์ และ เมธอดได้
      3. Polymorphism รูปแบบการใช้ที่หลากหลาย
    6. ข้อดีของ OPP
      1. ง่ายในการแก้ไข
      2. ง่ายต่อการพัฒนาความสามารถเพิ่ม
      3. สะดวกต่อการนำมาใช้ใหม่
      4. ไม่ต้องระวังชื่อซ้ำ