ข้ามไปยังเนื้อหา

การใช้วัตถุและวิธีการ

AP Computer Science A · หัวข้อ 1

ดูสไลด์ ฝึกฝน
บทเรียนวิดีโอสำหรับหัวข้อนี้ เปิดหน้าวิดีโอ
15:05

การใช้วัตถุและวิธีการ

นี่คือโปรแกรม Java สองตัว. ตัวแรกขาดเครื่องหมายจุดกึ่งวรรค. ตัวที่สองหารเจ็ดด้วยสองและเก็บคำตอบลงในจำนวนเต็ม. คอมไพเลอร์หยุดการ…

การบรรยายภาษาอังกฤษ · คำบรรยายภาษาอังกฤษ + 中文 ลอยตัวบนภาพ

1.1

บทนำเกี่ยวกับอัลกอริทึม การเขียนโปรแกรม และคอมไพเลอร์

หลักสูตร

จุดประสงค์การเรียนรู้ 1.1.A: แสดงรูปแบบและอัลกอริทึมที่พบในชีวิตประจำวันโดยใช้ภาษาเขียนหรือแผนภาพ

  • 1.1.A.1 อัลกอริทึม กำหนดขั้นตอนทีละขั้นตอนที่ต้องปฏิบัติตามเมื่อทำงานหรือแก้ปัญหา อัลกอริทึมเหล่านี้สามารถแสดงได้ด้วยภาษาเขียนหรือแผนภาพ
  • 1.1.A.2 การเรียงลำดับ กำหนดลำดับสำหรับการดำเนินการขั้นตอนต่าง ๆ ในกระบวนการ ขั้นตอนในกระบวนการจะดำเนินการทีละขั้นตอน

จุดประสงค์การเรียนรู้ 1.1.B: อธิบายกระบวนการคอมไพล์และรันโค้ด

  • 1.1.B.1 โค้ดสามารถเขียนได้ในโปรแกรมแก้ไขข้อความใดก็ได้ แต่มักใช้ สภาพแวดล้อมการพัฒนาแบบบูรณาการ (IDE) ในการเขียนโปรแกรม เพราะมันมอบเครื่องมือให้ผู้พัฒนาโค้ดสามารถเขียน คอมไพล์ และรันโค้ดได้
  • 1.1.B.2 คอมไพเลอร์ ตรวจสอบโค้ดหาข้อผิดพลาดบางประเภท ข้อผิดพลาดที่คอมไพเลอร์ตรวจจับได้ต้องได้รับการแก้ไขก่อนที่โปรแกรมจะถูกรันได้

จุดประสงค์การเรียนรู้ 1.1.C: ระบุประเภทของข้อผิดพลาดในการเขียนโปรแกรม

  • 1.1.C.1 ข้อผิดพลาดทางไวยากรณ์ (syntax error) คือความผิดพลาดในโปรแกรมที่ไม่ปฏิบัติตามกฎของภาษาการเขียนโปรแกรม ข้อผิดพลาดเหล่านี้ถูกตรวจจับโดยคอมไพเลอร์
  • 1.1.C.2 ข้อผิดพลาดทางตรรกะ (logic error) คือความผิดพลาดในอัลกอริทึมหรือโปรแกรมที่ทำให้มันทำงานผิดหรือผิดปกติไปจากที่คาด ข้อผิดพลาดเหล่านี้ถูกตรวจจับด้วยการทดสอบโปรแกรมด้วยข้อมูลเฉพาะเพื่อดูว่ามันให้ผลลัพธ์ตามที่คาดหวังหรือไม่
  • 1.1.C.3 ข้อผิดพลาดขณะรัน (run-time error) คือความผิดพลาดในโปรแกรมที่เกิดขึ้นระหว่างการรันโปรแกรม ข้อผิดพลาดขณะรันมักทำให้โปรแกรมหยุดทำงานอย่างไม่ปกติ
  • 1.1.C.4 ข้อยกเว้น (exception) เป็นประเภทหนึ่งของข้อผิดพลาดขณะรันที่เกิดขึ้นเป็นผลจากความผิดพลาดที่ไม่คาดคิดซึ่งไม่ถูกตรวจจับโดยคอมไพเลอร์ มันขัดขวางการไหลตามปกติของการรันโปรแกรม

แหล่งที่มา: คำอธิบายหลักสูตรและข้อสอบ College Board AP

โค้ดโปรแกรมบนเครื่องทำงาน — โปรแกรมถูกเขียน编译 และรันตามคำสั่งที่แม่นยำ
โค้ดต้นฉบับบนเครื่องทำงาน – โปรแกรมถูกเขียน คัดแปลง และรันเป็นคำสั่งที่แม่นยำ

อัลกอริทึม คือขั้นตอนที่มีจำกัดและทำทีละขั้นเพื่อแก้ปัญหา โปรแกรม แสดงอัลกอริทึมในรูปแบบภาษาที่คอมพิวเตอร์รันได้ Java เป็น ** compiled**: คอมไพเลอร์ แปลงโค้ดต้นฉบับของคุณเป็น bytecode ซึ่ง Java Virtual Machine (JVM) รัน ข้อผิดพลาดด้านไวยากรณ์ (การละเมิดกฎไวยากรณ์) ถูกจับโดยคอมไพเลอร์; ข้อผิดพลาดด้านตรรกะ (ผลลัพธ์ผิด) ไม่ถูกจับ – โปรแกรมรันได้แต่ behaving ผิดพลาด

คอมไพล์อร์แปลทั้งโปรแกรมพร้อมกัน อินเตอร์พรีเตอร์รันทีละบรรทัด
คอมไพเลอร์แปลทั้งโปรแกรมพร้อมกัน; อินเทอร์พรีเตอร์รันทีละบรรทัด
ชิปประมวลผลคอมพิวเตอร์หลายตัวมองจากด้านล่าง
โปรแกรม Java ของคุณถูก compile เป็นคำสั่งที่ CPU อย่างหนึ่งจากเหล่านี้รันจริง
คำศัพท์ ฝึกฝน
English ไทย
compiled/kəmˈpaɪld/ รวบรวมแล้ว
compiler/kəmˈpaɪlə/ compiler
syntax error/ˈsɪntæks ˈerə/ ข้อผิดพลาดด้านไวยากรณ์
logic error/ˈlɒdʒɪk ˈerə/ ข้อผิดพลาดด้านตรรกะ
1.2

ตัวแปรและชนิดข้อมูล

หลักสูตร
Learning ObjectiveEssential Knowledge

1.2.A
ระบุหมวดหมู่ประเภทข้อมูลที่เหมาะสมที่สุดสำหรับการกำหนดค่า某一个特定

  • 1.2.A.1 Type ข้อมูล คือชุดของค่าและชุดของการดำเนินการที่สอดคล้องกับค่านั้น ประเภทข้อมูลสามารถแบ่งออกเป็นแบบ primitive หรือ reference
  • 1.2.A.2 Types ข้อมูล primitive ที่ใช้ในหลักสูตรนี้กำหนดชุดของค่าและการดำเนินการที่สอดคล้องกับค่านั้นสำหรับตัวเลขและค่า Boolean
  • 1.2.A.3 Reference type ใช้สำหรับกำหนด objects ที่ไม่ใช่ primitive types

1.2.B
เขียนโค้ดเพื่อประกาศตัวแปรเพื่อจัดเก็บตัวเลขและค่า Boolean

  • 1.2.B.1 Type ข้อมูล primitive สามชนิดที่ใช้ในหลักสูตรนี้คือ int, double, และ boolean. ค่า int เป็นจำนวนเต็ม ค่า double เป็นจำนวนจริง ค่า boolean เป็นeither true หรือ false
    • Exclusion statement: Type ข้อมูล primitive อีกห้าชนิด (long, short, byte, float, และ char) อยู่ Ngoàiขอบเขตของหลักสูตรและข้อสอบ AP Computer Science A
  • 1.2.B.2 Variable คือสถานที่จัดเก็บที่ถือค่าซึ่งสามารถเปลี่ยนแปลงได้ขณะโปรแกรมทำงาน ทุก variable มีชื่อและ type ข้อมูลที่เกี่ยวข้อง Variable ของ primitive type จะถือค่า primitive จาก type นั้น

แหล่งที่มา: คำอธิบายหลักสูตรและข้อสอบ College Board AP

ตัวแปร คือกล่องที่มีชื่อเพื่อจัดเก็บค่าที่มี ประเภท ที่ตายตัว ประเภทพื้นฐานหลักของ Java ได้แก่ int (จำนวนเต็ม), double (ทศนิยม), และ boolean (true/false). ประกาศโดยระบุประเภทไว้ก่อน:

ประเภทข้อมูลพื้นฐานของ Java แต่ละชนิดจัดเก็บค่าประเภทที่แตกต่างกัน
ชนิดข้อมูลพื้นฐานของ Java เก็บค่าประเภทต่างๆ
int score = 90;
double price = 4.99;
boolean passed = true;
สำรวจ

สำรวจว่าตัวแปรเก็บค่าเพียงค่าเดียวในแต่ละเวลาได้อย่างไร

ตัวแปรคือกล่องที่มีชื่อซึ่งเก็บค่าเพียงค่าเดียวของ ประเภท ที่กำหนดไว้ ก้าวผ่านบรรทัดแต่ละบรรทัดและสังเกตว่าแต่ละกล่องรับค่าของตน; ระวังว่าการกำหนดค่าใหม่ score จะ ทับ ค่าเก่าแทนที่จะสร้างกล่องใหม่

คำศัพท์ ฝึกฝน
English ไทย
type/taɪp/ ตัวอักษร
1.3

นิพจน์และการแสดงผล

หลักสูตร
Learning ObjectiveEssential Knowledge

1.3.A
เขียนโค้ดเพื่อสร้าง output และระบุผลลัพธ์ที่จะแสดงบนหน้าจอ

  • 1.3.A.1 System.out.print และ System.out.println แสดงข้อมูลบนหน้าจอคอมพิวเตอร์ System.out.println ย้ายเคอร์เซอร์ไปบรรทัดใหม่หลังจากแสดงข้อมูลแล้ว ในขณะที่ System.out.print ไม่ทำ如此

1.3.B
เขียนโค้ดเพื่อใช้ string literals และระบุผลลัพธ์ของการใช้ string literals

  • 1.3.B.1 Literal คือการแทนค่าโค้ดของค่าคงที่
  • 1.3.B.2 String literal คือลำดับของตัวอักษรที่ห่อหุ้มด้วยเครื่องหมายคำพูดคู่
  • 1.3.B.3 Escape sequences คือลำดับพิเศษของตัวอักษรที่สามารถรวมอยู่ใน string ได้它们เริ่มด้วย \ และมีความหมายพิเศษใน Java Escape sequences ที่ใช้ในหลักสูตรนี้รวมถึงเครื่องหมายคำพูดคู่ \", backslash \\, และ newline \n

1.3.C
เขียนโค้ดสำหรับ arithmetic expressions และระบุผลลัพธ์ของ expressions เหล่านี้

  • 1.3.C.1 Arithmetic expressions ซึ่งประกอบด้วยค่าตัวเลข ตัวแปร และ operators รวมถึง expressions ของ type int และ double
  • 1.3.C.2 Arithmetic operators ประกอบด้วยบวก +, ลบ -, คูณ *, หาร /, และเศษเหลือ %. การดำเนินการทางคณิตศาสตร์ที่ใช้ค่า int สองค่าจะประเมิน结果为 int. การดำเนินการทางคณิตศาสตร์ที่ใช้ค่า double อย่างน้อยหนึ่งค่าจะประเมิน结果为 double
    • Exclusion statement: Expressions ที่ให้ผลลัพธ์เป็นค่า double พิเศษ (เช่น无穷大和 NaN) อยู่Outside ขอบเขตของหลักสูตรและข้อสอบ AP Computer Science A
  • 1.3.C.3 เมื่อหารด้วยค่าตัวเลขที่เป็น int ทั้งคู่ ผลลัพธ์จะเป็นเพียงส่วนจำนวนเต็มของผลหารเท่านั้น เมื่อหารด้วยค่าตัวเลขที่มีอย่างน้อยหนึ่ง double ผลลัพธ์จะเป็นผลหาร
  • 1.3.C.4 ตัวดำเนินการเศษเหลือ % ใช้เพื่อคำนวณเศษเมื่อเลข a หนึ่งตัวถูกหารด้วยเลข b อีกตัว
    • ข้อความยกเว้น: การใช้ค่าน้อยกว่า 0 สำหรับ a และการใช้ค่าน้อยกว่าหรือเท่ากับ 0 สำหรับ b ไม่อยู่ในขอบเขตของหลักสูตรและข้อสอบ AP Computer Science A
  • 1.3.C.5 ตัวดำเนินการสามารถนำไปสร้างนิพจน์ที่ซับซ้อนได้ ในช่วงการคอมไพล์ ค่าตัวเลขจะถูกจับคู่กับตัวดำเนินการตามลำดับความสำคัญเพื่อกำหนดวิธีการจัดกลุ่ม สามารถใช้วงเล็บเพื่อแก้ไขลำดับความสำคัญของตัวดำเนินการ การคูณ การหาร และเศษเหลือมีลำดับความสำคัญมากกว่าการบวกและการลบ ตัวดำเนินการที่มีลำดับความสำคัญเท่ากันจะประเมินจากซ้ายไปขวา
  • 1.3.C.6 ความพยายามในการหารจำนวนเต็มด้วยศูนย์ (integer zero) จะส่งผลให้เกิด ArithmeticException
    • ข้อความยกเว้น: การใช้การหารด้วยศูนย์เมื่อค่าตัวเลขหนึ่งเป็น double ไม่อยู่ในขอบเขตของหลักสูตรและข้อสอบ AP Computer Science A

แหล่งที่มา: คำอธิบายหลักสูตรและข้อสอบ College Board AP

นิพจน์ รวมค่าและ ออปারেเตอร์ เพื่อคำนวณผลลัพธ์: + - * / และ % (modulus, ส่วนเหลือ) การหารจำนวนเต็ม ตัดทอน: 7 / 2 คือ 3, ในขณะที่ 7 % 2 คือ 1. ลำดับความสำคัญของออปারেเตอร์ ตามคณิตศาสตร์ (*,/,% ก่อน +,-) พิมพ์ด้วย:

System.out.print("no newline");
System.out.println("with newline");

การหารจำนวนเต็มด้วย 0 (เช่น 7 / 0) ไม่ได้และจะ crash运行时 ด้วย ArithmeticException ภายใน string backslash ทำหน้าที่เป็น escape sequence: \" พิมพ์เครื่องหมายคำพูดคู่, \\ พิมพ์ backslash เดียว, และ \n เริ่มบรรทัดใหม่ – ดังนั้น System.out.println("She said \"hi\""); จะพิมพ์ She said "hi"

สำรวจ

สำรวจลำดับขั้นตอนการคำนวณทีละขั้น

Java นำ *, /, % ไปใช้ ก่อน + และ - โดยทำงานจากซ้ายไปขวา สังเกตทุกขั้นตอนเพื่อดูว่าทำไม 2 + 3 * 4 จึงได้ค่าเป็น $14$ ไม่ใช่ $20$ — เพราะการคูณเกิดขึ้นก่อน

คำศัพท์ ฝึกฝน
English ไทย
modulus/ˈmɒdjʊləs/ โมดูลัส
escape sequence/eˈskeɪp ˈsiːkwəns/ ลำดับการหลบหลีก (escape sequence)
assignment/əˈsaɪnmənt/ การกำหนดค่า (assignment)
1.4

คำสั่งการกำหนดค่าและการรับข้อมูล

หลักสูตร

วัตถุประสงค์การเรียนรู้ 1.4.A: เขียนโค้ดสำหรับคำสั่งการกำหนดค่าพร้อมนิพจน์ และระบุค่าที่จะเก็บไว้ในตัวแปรซึ่งเป็นผลลัพธ์ของคำสั่งเหล่านี้

  • 1.4.A.1 ตัวแปรทุกตัวต้องได้รับค่าก่อนนำไปใช้ใน expression ค่าที่ได้รับต้องมาจาก data type ที่เข้ากันได้ ตัวแปรจะถูก initialize ครั้งแรกเมื่อได้รับค่า Reference types สามารถรับ object ใหม่หรือ null ได้หากไม่มี object_value_literal null เป็นค่าพิเศษที่ใช้บ่งชี้ว่า reference ไม่ได้เชื่อมโยงกับ object ใด
  • 1.4.A.2 ตัวดำเนินการกำหนดค่า = ช่วยให้โปรแกรมสามารถเริ่มต้นหรือเปลี่ยนแปลงค่าที่เก็บไว้ในตัวแปรได้ ค่าของนิพจน์ทางขวาจะถูกเก็บไว้ในตัวแปรทางซ้าย
    • ข้อความยกเว้น: การใช้ตัวดำเนินการกำหนดค่าภายในนิพจน์ (เช่น a = b = 4; หรือ a[i += 5]) ไม่อยู่ในขอบเขตของหลักสูตรและข้อสอบ AP Computer Science A
  • 1.4.A.3 ระหว่างการประมวลผล นิพจน์จะถูกประเมินเพื่อสร้างค่าเดียว ค่าของนิพจน์จะมีชนิดขึ้นอยู่กับผลการประเมินนิพจน์นั้น

วัตถุประสงค์การเรียนรู้ 1.4.B: เขียนโค้ดเพื่อรับข้อมูลเข้า

  • 1.4.B.1 ข้อมูลเข้าสามารถมาจากหลายรูปแบบ เช่น แบบสัมผัส เสียง ภาพ หรือข้อความ Class Scanner เป็นหนึ่งในวิธีรับข้อมูลข้อความจากคีย์บอร์ด
    • ข้อความยกเว้น: รูปแบบเฉพาะใด ๆ ของข้อมูลเข้าจากผู้ใช้งานไม่อยู่ในขอบเขตของหลักสูตรและข้อสอบ AP Computer Science A

แหล่งที่มา: คำอธิบายหลักสูตรและข้อสอบ College Board AP

การกำหนดค่า x = expr; คำนวณฝั่งขวาและเก็บไว้ในตัวแปรฝั่งซ้าย อ่านข้อมูลด้วย Scanner:

Scanner in = new Scanner(System.in);
int age = in.nextInt();
String name = in.next();
1.5

การ cast และช่วงของตัวแปร

หลักสูตร

วัตถุประสงค์การเรียนรู้ 1.5.A: เขียนโค้ดเพื่อแปลงค่า primitive เป็นชนิด primitive อื่น ๆ ในนิพจน์ทางคณิตศาสตร์ และระบุค่าที่จะเกิดขึ้นเป็นผลลัพธ์

  • 1.5.A.1 ตัวดำเนินการแปลงชนิด (int) และ (double) สามารถใช้ในการแปลงจากค่า double เป็นค่า int (หรือในทางกลับกัน)
  • 1.5.A.2 การแปลงค่า double เป็นค่า int จะทำให้ตัวเลขทางขวาของจุดทศนิยมถูกตัดออก
  • 1.5.A.3 โค้ดบางอย่างทำให้ค่า int ถูกแปลงอัตโนมัติ (widened) เป็นค่า double
  • 1.5.A.4 ค่าชนิด double สามารถปัดเศษให้เป็นจำนวนเต็มใกล้เคียงที่สุดโดย (int)(x + 0.5) สำหรับจำนวนที่ไม่ติดลบ หรือ (int)(x - 0.5) สำหรับจำนวนติดลบ

วัตถุประสงค์การเรียนรู้ 1.5.B: อธิบายเงื่อนไขที่นิพจน์จำนวนเต็มประเมินออกมาเป็นค่าที่อยู่นอกระยะ

  • 1.5.B.1 ค่าคงที่ Integer.MAX_VALUE เก็บค่าสูงสุดที่เป็นไปได้ของค่า int ค่าคงที่ Integer.MIN_VALUE เก็บค่าต่ำสุดที่เป็นไปได้ของค่า int
  • 1.5.B.2 ค่าจำนวนเต็มใน Java แทนด้วยค่าชนิด int ซึ่งเก็บโดยใช้หน่วยความจำจำกัด (4 ไบต์) ดังนั้น ค่า int ต้องอยู่ในช่วงตั้งแต่ Integer.MIN_VALUE ถึง Integer.MAX_VALUE รวมทั้งสองข้าง
  • 1.5.B.3 ถ้านิพจน์ประเมินออกมาเป็นค่า int ที่อยู่นอกระยะที่ยอมรับได้ จะเกิดการล้นของจำนวนเต็ม (integer overflow) ผลลัพธ์จะเป็นค่า int ในช่วงที่ยอมรับได้แต่อาจไม่ใช่ค่าที่ต้องการ

วัตถุประสงค์การเรียนรู้ 1.5.C: อธิบายเงื่อนไขที่จำกัดความแม่นยำของนิพจน์

  • 1.5.C.1 คอมพิวเตอร์จัดสรรหน่วยความจำที่กำหนดไว้เพื่อเก็บข้อมูลตามชนิดข้อมูล ถ้านิพจน์ประเมินออกมาเป็น double ที่มีความละเอียดมากกว่าที่จัดสรรไว้จะเกิดข้อผิดพลาดจากการปัดเศษ (round-off error) ผลลัพธ์จะถูกปัดเศษให้เป็นค่าที่แทนได้ เพื่อหลีกเลี่ยงข้อผิดพลาดจากการปัดเศษที่เกิดขึ้นเอง ให้ใช้ค่า int
    • ข้อความยกเว้น: ชนิดข้อมูลทศนิยมพิเศษอื่น ๆ ที่สามารถใช้เพื่อหลีกเลี่ยงข้อผิดพลาดจากการปัดเศษไม่อยู่ในขอบเขตของหลักสูตรและข้อสอบ AP Computer Science A

แหล่งที่มา: คำอธิบายหลักสูตรและข้อสอบ College Board AP

ช่วง int, overflow และการตัดทอน

แต่ละประเภทมีช่วงที่กำหนดไว้; occurrence int จะล้นออกไปเกินประมาณ 2.1 พันล้าน. Casting เปลี่ยนแปลงระหว่างประเภท การขยาย (int ไปยัง double) ทำอัตโนมัติ; การลดขนาดต้องใช้ Casting อย่างชัดเจน ซึ่งจะ ตัดทอน (ไม่ปัดเศษ):

double avg = (double) total / count;   // force real division
int whole = (int) 3.9;                 // 3, truncated

ทักษะการสอบ: ระวังการหารจำนวนเต็มที่ให้ผลลัพธ์ตัดทอนเมื่อคาดหวังทศนิยม – cast ตัวประกอบข้างหนึ่งเป็น double ก่อน

ตัวอย่างคำนวณ. ติดตามแต่ละนิพจน์:

  • 7 / 2 → 3 (ทั้งสอง int, ดังนั้นการหาร truncates);
  • 7.0 / 2 → 3.5 (one double บังคับให้หารจริง);
  • 7 % 2 → 1 (ส่วนที่เหลือ);
  • (double) 7 / 2 → 3.5 (การแปลงชนิดข้อมูลมีความสำคัญมากกว่า / ดังนั้นจึง 7.0 / 2);
  • (double) (7 / 2) → 3.0 (วงเล็บจะคำนวณ 7 / 2 = 3 ใน int ก่อน แล้วจึงขยายขนาด)

สองข้อสุดท้ายดูคล้ายกันแต่ต่างกัน – ตำแหน่งของการแปลงชนิดข้อมูลจะกำหนดว่าค่าตัดทอนจะเกิดขึ้นเมื่อไหร่

สำรวจ

เหตุผลที่ int และ double เก็บตัวเลขต่างกัน

int เก็บได้เฉพาะจำนวนเต็มในช่วงที่กำหนดเท่านั้น; ส่วน double เก็บ mantissa และ exponent ซึ่งแลกเปลี่ยนความแม่นยำกับช่วงค่าที่ใหญ่โต การแปลงชนิด double→int จะทิ้งส่วนทศนิยม และหากค่าเกินช่วงของ int จะเกิดภาวะล้น

คำศัพท์ ฝึกฝน
English ไทย
Casting/ˈkæstɪŋ/ การแปลงชนิดข้อมูล (Casting)
library/ˈlaɪbrəri/ ไลบรารี (library)
abstraction/əbˈstrækʃn/ การห่อหุ้ม (abstraction)
Comments/ˈkɒments/ ความคิดเห็น (Comments)
1.6

ตัวดำเนินการกำหนดค่าแบบผสม

หลักสูตร
Learning ObjectiveEssential Knowledge

1.6.A
Develop code for assignment statements with compound assignment operators and determine the value that is stored in the variable as a result.

  • 1.6.A.1 Compound assignment operators +=, -=, *=, /=, and %= can be used in place of the assignment operator in numeric expressions. A compound assignment operator performs the indicated arithmetic operation between the value on the left and the value on the right and then assigns the result to the variable on the left.
  • 1.6.A.2 The post-increment operator ++ and post-decrement operator -- are used to add 1 or subtract 1 from the stored value of a numeric variable. The new value is assigned to the variable.
    • Exclusion statement: The use of increment and decrement operators in prefix form (e.g., ++x) is outside the scope of the AP Computer Science A course and exam. The use of increment and decrement operators inside other expressions (e.g., arr[x++]) is outside the scope of the AP Computer Science A course and exam.

แหล่งที่มา: คำอธิบายหลักสูตรและข้อสอบ College Board AP

รูปแบบย่อรวมการดำเนินการเข้ากับการกำหนดค่า: x += 5 หมายถึง x = x + 5; เช่นเดียวกันกับ -=, *=, /=, %=. ตัวดำเนินการ เพิ่ม และ ลด x++ และ x-- จะบวกหรือลบหนึ่ง

1.7

อินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน (API) และไลบรารี

หลักสูตร

วัตถุประสงค์การเรียนรู้ 1.7.A: ระบุคุณสมบัติและพฤติกรรมของคลาสที่พบในไลบรารีที่มีอยู่ใน API

  • 1.7.A.1 ไลบรารี คือกลุ่มของคลาส อินเตอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน (API) ให้ข้อมูลแก่ผู้เขียนโปรแกรมเกี่ยวกับวิธีใช้คลาสนั้น เอกสารที่ปรากฏในสเปก/API และไลบรารีมีความสำคัญอย่างยิ่งต่อการเข้าใจคุณสมบัติและพฤติกรรมของคลาสที่กำหนดโดย API คลาส กำหนดประเภทอ้างอิงเฉพาะเจาะจง คลาสใน API และไลบรารีจะถูกจัดกลุ่มเป็นแพ็กเกจ คลาสและไลบรารีคลาสที่มีอยู่สามารถนำไปใช้เพื่อสร้างออบเจกต์ได้
  • 1.7.A.2 คุณสมบัติ หมายถึงข้อมูลที่เกี่ยวข้องกับคลาสและเก็บไว้ในตัวแปร พฤติกรรม หมายถึงสิ่งที่อิมพลีเมนต์ของคลาสสามารถทำได้ (หรือสิ่งที่จะทำกับมันได้) ซึ่งกำหนดโดยเมทოდ

แหล่งที่มา: คำอธิบายหลักสูตรและข้อสอบ College Board AP

API (Application Programming Interface) คือรายการคลาสและเมทოდที่คุณสามารถใช้ที่เผยแพร่ไว้ ไลบรารี คือกลุ่มของคลาสสำเร็จรูป (เช่น Math, String, Scanner). คุณอ่านเอกสาร API เพื่อเรียนรู้ว่าเมทอดต้องการอะไร (พารามิเตอร์) และส่งกลับอะไร โดยไม่ต้องเห็นโค้ดภายใน – ตัวอย่างของ การนามธรรม

คำศัพท์ ฝึกฝน
English ไทย
algorithm/ˈælɡərɪθəm/ อัลกอริทึม
program/ˈprəʊɡræm/ โปรแกรม
Interface/ˈɪntəfeɪs/ อินเตอร์เฟซ
1.8

เอกสารประกอบด้วยคอมเมนต์

หลักสูตร

วัตถุประสงค์การเรียนรู้ 1.8.A: อธิบายฟังก์ชันการใช้งานและการใช้งานโค้ดผ่านคอมเมนต์

  • 1.8.A.1 คอมเมนต์ เขียนขึ้นเพื่อให้ผู้เขียนโค้ดต้นฉบับและผู้เขียนโค้ดคนอื่นเข้าใจโค้ดและฟังก์ชันการทำงาน แต่ถูกข้ามโดยคอมไพเลอร์และไม่被执行เมื่อโปรแกรมทำงาน มีคอมเมนต์สามชนิดใน Java ได้แก่ /* */, ซึ่งสร้างบล็อกคอมเมนต์; //, ซึ่งสร้างคอมเมนต์บนบรรทัดเดียว; และ /** */, ซึ่งเป็นคอมเมนต์ Javadoc ใช้สำหรับสร้างเอกสาร API
  • 1.8.A.2 เงื่อนไขก่อน (precondition) เป็นเงื่อนไขที่ต้องเป็นจริงทันทีก่อนการเรียกใช้เมทอด เพื่อให้เมทอดทำงานตามความคาดหวัง ไม่มีการคาดหวังว่าเมทอดจะตรวจสอบว่าเงื่อนไขก่อนถูกตอบสนองหรือไม่
  • 1.8.A.3 เงื่อนไขหลัง (postcondition) เป็นเงื่อนไขที่ต้องเป็นจริงเสมอหลังจากการเรียกใช้เมทอด เงื่อนไขหลังอธิบายผลลัพธ์ของการดำเนินการในแง่ของสิ่งที่ถูกส่งกลับหรือค่าปัจจุบันของคุณสมบัติของออบเจกต์

แหล่งที่มา: คำอธิบายหลักสูตรและข้อสอบ College Board AP

คอมเมนต์会被编译器忽略但向人类解释代码://用于单行,/* ... */用于块,/** ... */用于记录方法目的、参数和返回值的 Javadoc 注释。精确的 前置条件 和 后置条件 会写在这里。

1.9

เมทอดซิกเนเจอร์

หลักสูตร

วัตถุประสงค์การเรียนรู้ 1.9.A: ระบุเมทอดที่ถูกต้องที่จะเรียกใช้โดยอิงจากเอกสารและลายเซ็นเมทอด

  • 1.9.A.1 เมทอด คือบล็อกโค้ดที่มีชื่อซึ่งจะทำงานก็ต่อเมื่อถูกเรียกใช้ บล็อกโค้ด คือส่วนใดส่วนของโค้ดที่ถูกห่อหุ้มด้วยวงเล็บ {}. การนามธรรมเชิงขั้นตอน (procedural abstraction) ช่วยให้ผู้เขียนโปรแกรมสามารถใช้เมทอดได้โดยรู้เพียงว่าเมทอดทำอะไร แม้จะไม่รู้ว่าเขียนเมทอดอย่างไรก็ตาม
  • 1.9.A.2 พารามิเตอร์ คือตัวแปรที่ประกาศในหัวเมทอดหรือคอนสตรัคเตอร์และสามารถใช้ภายในตัวเมทอดได้ สิ่งนี้ช่วยให้สามารถส่งค่าหรืออาร์กูเมนต์เข้ามา并使用โดยเมทอดหรือคอนสตรัคเตอร์ ลายเซ็นเมทอด สำหรับเมทอดที่มีพารามิเตอร์ประกอบด้วยชื่อเมทอดและรายการลำดับของประเภทพารามิเตอร์ ลายเซ็นเมทอดสำหรับเมทอดที่ไม่มีพารามิเตอร์ประกอบด้วยชื่อเมทอดและรายการพารามิเตอร์ว่างเปล่า

วัตถุประสงค์การเรียนรู้ 1.9.B: อธิบายวิธีการเรียกใช้เมทอด

  • 1.9.B.1 เมทอด void ไม่มีค่าส่งกลับดังนั้นจึงไม่ถูกเรียกใช้เป็นส่วนหนึ่งของนิพจน์
  • 1.9.B.2 เมทอด non-void ส่งคืนค่าที่มีประเภทเดียวกับประเภทการส่งกลับในหัวเมทอด เพื่อใช้ค่าส่งกลับเมื่อเรียกใช้เมทอด non-void ต้องเก็บค่าไว้ในตัวแปรหรือใช้เป็นส่วนหนึ่งของนิพจน์
  • 1.9.B.3 อาร์กูเมนต์ คือค่าที่ถูกส่งเข้าไปในเมทอดเมื่อเมทอดถูกเรียกใช้อาร์กูเมนต์ที่ถูกส่งไปยังเมทอดต้องมีจำนวนและลำดับที่สอดคล้องกับประเภทที่ระบุไว้ในรายการพารามิเตอร์ของลายเซ็นเมทอด ในการเรียกใช้เมทอด อาร์กูเมนต์จะถูกส่งโดยใช้ call by value Call by value จะเริ่มต้นพารามิเตอร์ด้วยสำเนาของอาร์กูเมนต์
  • 1.9.B.4 เมทอดถูกเรียกว่า ถูกโอเวอร์โหลด (overloaded) เมื่อมีเมทอดหลายตัวที่มีชื่อเดียวกันแต่มีลายเซ็นต่างกัน
  • 1.9.B.5 การเรียกใช้เมทอด ขัดจังหวะการดำเนินการแบบลำดับของคำสั่ง ทำให้โปรแกรมดำเนินการคำสั่งภายในเมทอดก่อนแล้วจึงดำเนินต่อไป เมื่อคำสั่งสุดท้ายในเมทอดถูกดำเนินการหรือคำสั่ง return ถูกดำเนินการ การไหลของควบคุมจะถูกส่งกลับไปยังจุดทันทีหลังจากตำแหน่งที่เมทอดถูกเรียกใช้

แหล่งที่มา: คำอธิบายหลักสูตรและข้อสอบ College Board AP

ลายมือชื่อเมทดอด (method signature) คือชื่อบริการเมทดอดบวกกับประเภทพารามิเตอร์ เช่น nextInt() หรือ substring(int, int). ในการเรียกเมทดอด คุณต้องส่งอาร์กิวเมนต์ที่ตรงกับพารามิเตอร์ในจำนวน ประเภท และลำดับ หัวข้อเมทดอด (คำประกาศเต็ม) ยังระบุชนิดค่าที่ส่งกลับ (return type) – ซึ่งเป็นชนิดของค่าที่เมทดอดให้กลับมา (void หากไม่มี) – แต่ชนิดค่าที่ส่งกลับไม่ใช่ส่วนหนึ่งของลายมือชื่อ นั่นคือเหตุผลว่าทำไมเมทดอดสองตัวจึงไม่สามารถแตกต่างกันเพียงด้วยชนิดค่าที่ส่งกลับเท่านั้น

คำศัพท์ ฝึกฝน
English ไทย
method signature/ˈmeθəd ˈsɪɡnɪtʃə/ ลายมือชื่อเมทดอด
arguments/ˈɑːɡjuːmənts/ อาร์กิวเมนต์
class (static) method/klæs ˈmeθəd/ เมทดอดคลาส (เมทดอดแบบสถิต)
1.10

การเรียกใช้เมทอดของคลาส

หลักสูตร

วัตถุประสงค์การเรียนรู้ 1.10.A: เขียนโค้ดเพื่อเรียกใช้เมทอดของคลาสและระบุผลลัพธ์ของการเรียก使用该 those calls.

  • 1.10.A.1 เมทอดของคลาส (Class methods) เชื่อมโยงกับตัวคลาส ไม่ใช่ instances ของคลาส เมทอดของคลาสจะรวมถึง keyword static ใน header ก่อนชื่อเมทოდ
  • 1.10.A.2 เมทอดของคลาสโดยทั่วไปจะถูกเรียกใช้โดยใช้ชื่อคลาสพร้อมกับ dot operator เมื่อการเรียกใช้เมทอดเกิดขึ้นภายในคลาสที่กำหนด การใช้ชื่อคลาสใน call นั้นเป็นทางเลือกได้

แหล่งที่มา: คำอธิบายหลักสูตรและข้อสอบ College Board AP

เมทดอดคลาส (class method) เป็นของตัวคลาสเอง ดังนั้นคุณจึงเรียกมันผ่านชื่อคลาส: ClassName.method(args). ไม่จำเป็นต้องใช้วัตถุ

สำรวจ

ติดตามการเรียกใช้เมทόδของคลาสบนส택

การเรียกใช้ เมทόδของคลาส เช่น Math.max จะเพิ่ม เฟรม ใหม่ลงบนสักการเรียกเมื่อเมทόδ ส่งคืน ค่า เฟรมนั้นจะถูกนำออกและควบคุมจะกลับไปยังผู้เรียก ก้าวผ่านเพื่อดูว่าสักขยายและหดตัวอย่างไร

คำศัพท์ ฝึกฝน
English ไทย
class/klæs/ class
1.11

Math Class

หลักสูตร
Learning ObjectiveEssential Knowledge

1.11.A
Develop code to write expressions that incorporate calls to built-in mathematical libraries and determine the value that is produced as a result.

  • 1.11.A.1 The Math class is part of the java.lang package. Classes in the java.lang package are available by default.
  • 1.11.A.2 The Math class contains only class methods. The following Math class methods—including what they do and when they are used—are part of the Java Quick Reference:
    • static int abs(int x) returns the absolute value of an int value.
    • static double abs(double x) returns the absolute value of a double value.
    • static double pow(double base, double exponent) returns the value of the first parameter raised to the power of the second parameter.
    • static double sqrt(double x) returns the nonnegative square root of a double value.
    • static double random() returns a double value greater than or equal to 0.0 and less than 1.0.
  • 1.11.A.3 The values returned from Math.random() can be manipulated using arithmetic and casting operators to produce a random int or double in a defined range based on specified criteria. Each endpoint of the range can be inclusive, meaning the value is included, or exclusive, meaning the value is not included.

แหล่งที่มา: คำอธิบายหลักสูตรและข้อสอบ College Board AP

คลาส Math ให้บริการเมทดอดทางคณิตศาสตร์: Math.abs(x), Math.pow(base, exp), Math.sqrt(x), และ Math.random() (ซึ่ง double ใน $[0,1)$). เพื่อรับจำนวนเต็มแบบสุ่มตั้งแต่ 0 ถึง n-1: (int)(Math.random() * n).

1.12

Objects: Instances of Classes

หลักสูตร

วัตถุประสงค์การเรียนรู้ 1.12.A: อธิบายความสัมพันธ์ระหว่างคลาสและวัตถุ

  • 1.12.A.1 วัตถุ (Object) คือ instance เฉพาะของคลาสที่มี attributes ที่กำหนดไว้ คลาส (Class) คือการนำไปใช้แบบทางการ หรือ blueprint ของ attributes และ behaviors ของวัตถุ
  • 1.12.A.2 Class hierarchy สามารถพัฒนาได้โดยการนำ common attributes และ behaviors ของ classes ที่เกี่ยวข้องมาอยู่ใน single class ที่เรียกว่า superclass. Classes ที่ขยาย superclass ซึ่งเรียกว่า subclasses สามารถดึงข้อมูลจาก existing attributes และ behaviors ของ superclass โดยไม่ต้องแทนที่สิ่งเหล่านี้ในโค้ด สิ่งนี้สร้าง inheritance relationship จาก subclasses ไปยัง superclass
    • Exclusion statement: การออกแบบและดำเนินการ inheritance relationships อยู่นอกขอบเขตของหลักสูตรและข้อสอบ AP Computer Science A
  • 1.12.A.3 ทุก class ใน Java เป็น subclass ของ Object คลาส

วัตถุประสงค์การเรียนรู้ 1.12.B: เขียนโค้ดเพื่อ_declare variables เพื่อเก็บ reference types

  • 1.12.B.1 ตัวแปรของ reference type จะเก็บ object reference ซึ่งสามารถคิดว่าเป็น memory address ของวัตถุนั้น

แหล่งที่มา: คำอธิบายหลักสูตรและข้อสอบ College Board AP

= copies the reference, not the object

คลาส (class) คือแบบร่าง; วัตถุ (object) คือ**-instance** ที่จับต้องได้ซึ่งสร้างจากมัน คลัสส์รวมข้อมูล (ฟิลด์) กับพฤติกรรม (เมทดอด) – ซึ่งเป็นหัวใจสำคัญของการเขียนโปรแกรมเชิงวัตถุ. String, Scanner, และ ArrayList ล้วนเป็นคลาสที่คุณสามารถสร้าง instance ได้

คลาสสามารถจัดระเบียบเป็นลำดับชั้นได้ superclass เก็บคุณสมบัติและพฤติกรรมที่หลาย subclasses ที่ extend与之共享 – ความสัมพันธ์ของการสืบทอด (inheritance). ทุกคลาสใน Java ในที่สุดแล้วจะเป็น subclass ของคลาส built-in Object ซึ่งเป็นเหตุผลว่าทำไมวัตถุทุกตัวจึงมีเมทดอด toString อยู่แล้ว; การเขียนเมทดอดของ subclass ที่มีลายมือชื่อเดียวกับ superclass คือการแทนที่เมทดอด (method overriding). (การออกแบบความสัมพันธ์การสืบทอดของคุณเองอยู่นอกขอบเขตของรายวิชานี้ แต่คุณควรรู้จักคำศัพท์เหล่านี้)

A class diagram: private attributes and public methods
A class diagram: private attributes and public methods
คลาสคือแบบร่าง; วัตถุแต่ละตัวเป็น one instance ที่สร้างจากมัน
คลาสคือแบบร่าง; วัตถุแต่ละตัวเป็น one instance ที่สร้างจากมัน
คำศัพท์ ฝึกฝน
English ไทย
object/ˈɒbdʒekt/ 物体本身
instance/ˈɪnstəns/ instance object
object-oriented programming/ˈɒbdʒekt ˈɔːrɪəntɪd ˈprəʊɡræmɪŋ/ การเขียนโปรแกรมเชิงวัตถุ
superclass/ˈsuːpəklæs/ superclass
subclasses/ˈsʌbklæsɪz/ คลาสลูก
inheritance relationship/ɪnˈherɪtəns rɪˈleɪʃənʃɪp/ ความสัมพันธ์การสืบทอด
method overriding/ˈmeθəd ˌəʊvəˈraɪdɪŋ/ การทวนเมทดอด
reference/ˈrefrəns/ กรอบอ้างอิง
1.13

Object Creation and Storage (Instantiation)

หลักสูตร

วัตถุประสงค์การเรียนรู้ 1.13.A: ระบุ constructor ที่ถูกต้องโดยใช้ signature ของมัน

  • 1.13.A.1 คลาสมี constructors ที่ถูกเรียกใช้เพื่อสร้างวัตถุ They have the same name as the class.
  • 1.13.A.2 Constructor signature ประกอบด้วยชื่อของ constructor ซึ่งเป็นชื่อเดียวกับชื่อคลาส และรายการลำดับของ parameter types Parameter list ใน header ของ constructor จะระบุ types ของ values ที่ส่งเข้าและ variable names ของมัน
  • 1.13.A.3 Constructors ถูกเรียกว่า overloaded เมื่อมี multiple constructors ที่มี signatures ต่างกัน

วัตถุประสงค์การเรียนรู้ 1.13.B: เขียนโค้ดเพื่อ_declare variables ของประเภทที่ถูกต้องเพื่อเก็บ object references

  • 1.13.B.1 ตัวแปรของ reference type จะเก็บ object reference หรือ, ถ้าไม่มีวัตถุ, null

วัตถุประสงค์การเรียนรู้ 1.13.C: เขียนโค้ดเพื่อสร้างวัตถุโดยการเรียกใช้ constructor

  • 1.13.C.1 วัตถุมักจะถูกสร้างโดยใช้ keyword new ตามด้วยการเรียกใช้ one of the class's constructors
  • 1.13.C.2 Parameters ช่วยให้ constructors ยอมรับ values เพื่อตั้งค่าเริ่มต้นของ attributes ของวัตถุ
  • 1.13.C.3 constructor argument คือค่าที่ถูกส่งเข้าไปใน constructor เมื่อ constructor ถูกเรียก arguments ที่ส่งไปยัง constructor ต้องมีความเข้ากันได้ทั้งลำดับและจำนวนกับประเภทที่กำหนดไว้ในรายการพารามิเตอร์ใน signature ของ constructor เมื่อเรียก构造函数 arguments ถูกส่งโดยใช้ call by value Call by value เริ่มต้นพารามิเตอร์ด้วยสำเนาของ arguments
  • 1.13.C.4 การเรียกใช้ constructor จะหยุด execution แบบลำดับของ statements ทำให้โปรแกรม execute statements ใน constructor ก่อนก่อนจะต่อจากนั้น Once the last statement in the constructor has been executed, flow of control จะถูกส่งกลับไปยังจุดทันทีหลังจากที่ constructor ถูกเรียกใช้

แหล่งที่มา: คำอธิบายหลักสูตรและข้อสอบ College Board AP

Instantiation สร้างวัตถุโดยใช้คีย์เวิร์ด new ซึ่งจะเรียกconstructor:

Scanner in = new Scanner(System.in);
String s = new String("hi");   // or just "hi"

The variable holds a reference (the object's address), not the object itself. Two references can point to the same object; comparing them with == compares addresses, not contents.

A reference can also point to nothing: the special value null means "not attached to any object". Calling a method on a null reference crashes at run time with a NullPointerException. Guard against it by testing with ==/!= and checking null first, so && short-circuits before the method runs: if (s != null && s.length() > 0).

A primitive variable holds its value directly, a reference holds an arrow to the object
A primitive variable holds its value directly, a reference holds an arrow to the object
คำศัพท์ ฝึกฝน
English ไทย
variable/ˈveərɪəbl/ ตัวแปร
Instantiation/ˌɪnstænʃɪˈeɪʃn/ การสร้าง实例 (Instantiation)
constructor/kənˈstrʌktə/ constructor
null/nʌl/ null
1.14

Calling Instance Methods

หลักสูตร

วัตถุประสงค์การเรียนรู้ 1.14.A: เขียนโค้ดเพื่อเรียกใช้เมทอดของอินสแตนซ์และระบุผลลัพธ์ของการเรียก使用该 those calls

  • 1.14.A.1 เมทอดของอินสแตนซ์ (Instance methods) ถูกเรียกใช้บน objects ของคลาส Dot operator ใช้ร่วมกับชื่อ object เพื่อเรียกใช้メธอดของอินสแตนซ์
  • 1.14.A.2 การเรียกใช้メธอดบน null reference จะ resulting in a NullPointerException

แหล่งที่มา: คำอธิบายหลักสูตรและข้อสอบ College Board AP

An instance method acts on a specific object, so you call it on the object reference: object.method(args). Example: in.nextInt(), word.length().

คำศัพท์ ฝึกฝน
English ไทย
instance method/ˈɪnstəns ˈmeθəd/ วิธีในอินสแตนซ์
1.15

String Manipulation

หลักสูตร

วัตถุประสงค์การเรียนรู้ 1.15.A: เขียนโค้ดเพื่อสร้าง string objects และระบุผลลัพธ์ของการสร้างและรวม strings

  • 1.15.A.1 A String object แทนลำดับของตัวอักษรและสามารถสร้างได้โดยใช้ string literal หรือโดยการเรียก constructor ของ class String
  • 1.15.A.2 Class String เป็นส่วนหนึ่งของแพ็กเกจ java.lang Classes ในแพ็กเกจ java.lang จะถูกโหลดโดยอัตโนมัติ
  • 1.15.A.3 A String object เป็น immutable หมายความว่าเมื่อสร้าง String object แล้ว attribute ของมันไม่สามารถเปลี่ยนได้ Method ที่เรียกบน String object ไม่เปลี่ยนแปลง content ของ String object
  • 1.15.A.4 Object String สองตัวสามารถนำมารวมกันหรือใช้รวมกันด้วย operator + หรือ += เพื่อสร้าง object String ใหม่ ค่า primitive สามารถนำมารวมกับ object String ได้ ซึ่งจะทำให้เกิดการแปลงค่า primitive tersebutเป็น object String แบบอ้อม
  • 1.15.A.5 Object String สามารถนำมารวมกับ object อื่นใดก็ได้ ซึ่งจะเรียกใช้ method toString ของ object นั้นโดยอ้อม (พฤติกรรมนี้รับประกันได้ว่ามีอยู่จริงผ่านความสัมพันธ์การสืบทอด (inheritance) ที่ทุก class มีต่อ class Object) Method toString ของ object จะคืนค่า string ที่แสดงถึง object นั้น Subclasses ของ Object มักจะ Override method toString ด้วย implementation เฉพาะของคลาสนั้น Method overriding เกิดขึ้นเมื่อบน subclass มี public method ที่มี method signature เดียวกับ public method ใน superclass แต่พฤติกรรมของ method นั้นเฉพาะเจาะจงสำหรับ subclass เท่านั้น
    • Exclusion statement: การ Override method toString ของ class หนึ่งอยู่นอกขอบเขตของหลักสูตรและข้อสอบ AP Computer Science A
Learning ObjectiveEssential Knowledge

1.15.B
เขียนโค้ดเพื่อเรียก methods บน string objects และระบุผลลัพธ์ที่จะเกิดขึ้นจากการเรียก methods เหล่านี้

  • 1.15.B.1 Object String มีค่า index ตั้งแต่ 0 ถึงความยาวของ string ลดลง 1 หากพยายามเข้าถึง indices นอกช่วงนี้จะเกิด StringIndexOutOfBoundsException
  • 1.15.B.2 Methods String ต่อไปนี้ รวมถึงหน้าที่และการใช้งานของแต่ละ方法是属于 Java Quick Reference:
    • int length() คืนจำนวนตัวอักษรใน object String
    • String substring(int from, int to) คืน substring ที่เริ่มต้นที่ index from และสิ้นสุดที่ index to - 1
    • String substring(int from) คืน substring(from, length())
    • int indexOf(String str) คืน index ของการปรากฏครั้งแรกของ str; คืน -1 หากไม่พบ
    • boolean equals(Object other) คืน true หาก this ตรงกับลำดับของตัวอักษรเดียวกับ other; คืน false ในกรณีอื่น
    • int compareTo(String other)/value < 0 if this is less than other; returns zero if this is equal to other; returns a value > 0 หาก this มีค่ามากกว่า other. Strings ถูกเรียงลำดับตามหลักพจนานุกรม
    • Exclusion statement: การใช้ method equals เพื่อเปรียบเทียบ object String กับ object ที่มี type อื่นนอกเหนือจาก String อยู่ ngoàiขอบเขตของหลักสูตรและข้อสอบ AP Computer Science A
  • 1.15.B.3 String ที่เหมือนกันกับ substring ที่มีองค์ประกอบเดียวที่ตำแหน่ง index สามารถสร้างได้โดยการเรียก substring(index, index + 1)

แหล่งที่มา: คำอธิบายหลักสูตรและข้อสอบ College Board AP

Strings are immutable

String objects are immutable – methods return a new string rather than changing the original. Key methods (all indices start at 0):

s.length();            // number of characters
s.substring(2, 5);     // chars at index 2,3,4 (5 excluded)
s.indexOf("ab");       // first position, or -1
s.equals(other);       // content comparison (never use == for Strings)
s.compareTo(other);    // <0, 0, >0 by dictionary order

Exam skill: substring(a, b) includes index a but excludes b, and String comparison must use .equals, not == – two of the most-tested String pitfalls.

ตัวอย่างวิธีทำ. ให้ String s = "COMPUTER"; (indices 0–7). จากนั้น s.length() คือ 8; s.substring(0, 4) คือ "COMP" (indices 0,1,2,3 – index 4 ถูกตัดออก); s.substring(4) คือ "UTER" (จาก index 4 ไปจนถึงสุด); s.indexOf("PU") คือ 3; และ s.indexOf("X") คือ -1 (ไม่พบ). การนับจุดสิ้นสุดที่ถูกตัดออกของ substring เป็นความผิดพลาดที่พบบ่อยที่สุดเพียงข้อเดียว.

Asking for an index outside 0 to length()-1 (a bad substring or charAt argument, e.g. s.substring(0, 20) here) crashes with a StringIndexOutOfBoundsException – the String cousin of the array-index error.

String indices start at 0
String indices start at 0
สำรวจ

สำรวจดัชนีและการตัดทอนของสตริง

ทุกตัวอักษรมี ดัชนี และการนับเริ่มต้นที่ 0 ลากจุดเริ่มต้นและจุดสิ้นสุดเพื่อดูว่า substring(from, to) จะดึงตัวอักษรตั้งแต่ from ขึ้นไปจนถึง (แต่ไม่รวม) to

คำศัพท์ ฝึกฝน
English ไทย
immutable/ɪˈmjuːtəbl/ immutable
1.15

ข้อแนะนำสำหรับการสอบ

  • Trace code by hand line by line, tracking each variable's value in a table — the exam rewards careful tracing over guessing.
  • Know Java's primitive types and that integer division truncates ($7/2$ gives $3$); use a cast or a double for real division.
  • แยกแยะข้อผิดพลาด compile-time (ไวยากรณ์, ประเภท) จากข้อผิดพลาด run-time – รู้ชื่อของข้อผิดพลาดที่มี: ArithmeticException (int ÷ 0), NullPointerException (การเรียกใช้ method บน null reference), StringIndexOutOfBoundsException / ArrayIndexOutOfBoundsException – และข้อผิดพลาด logic (ผลลัพธ์ที่ผิด)
  • ปฏิบัติตามลำดับความสำคัญของ operator และเริ่มต้นค่าตัวแปรทุกตัวก่อนนำไปใช้
  • ในส่วนคำตอบแบบเขียน ออกจาก Java ที่ สมบูรณ์และ compile ได้ – คืนค่าประเภทที่ถูกต้องและตรงกับ method header พอดี
คำศัพท์ ฝึกฝน
English ไทย
primitive types/ˈprɪmɪtɪv taɪps/ ประเภทพื้นฐาน
expression/ekˈspreʃn/ การแสดงออก

บทเรียนเชิงโต้ตอบสำหรับหัวข้อนี้

ทำทีละขั้นตอน พร้อมแบบฝึกหัดตรวจสอบผลทันที

ข้อสอบย้อนหลัง

หัวข้อเพิ่มเติมใน AP Computer Science A

เข้าสู่ระบบหรือสร้างบัญชี

IGCSE, A-Level & AP