ไวยากรณ์หน้า JSP โครงสร้างแบบมีเงื่อนไข
การเขียนโปรแกรมกำลังเขียนซอร์สโค้ดของโปรแกรมในภาษาโปรแกรมใดภาษาหนึ่ง มีมากมาย ภาษาที่แตกต่างกันการเขียนโปรแกรมด้วยโปรแกรมทุกประเภทที่สร้างขึ้นเพื่อแก้ปัญหาบางอย่าง ภาษาโปรแกรมคือชุดของคำสงวนที่ใช้เขียนซอร์สโค้ดของโปรแกรม ระบบคอมพิวเตอร์ยังไม่สามารถ (ยัง) เข้าใจภาษามนุษย์ และตรรกะของมนุษย์ (โดยเฉพาะผู้หญิง) ยิ่งกว่านั้น ดังนั้นโปรแกรมทั้งหมดจึงถูกเขียนขึ้นในภาษาโปรแกรม ซึ่งจะแปลเป็นภาษาคอมพิวเตอร์หรือรหัสเครื่องในเวลาต่อมา ระบบที่แปลซอร์สโค้ดของโปรแกรมเป็นรหัสเครื่องนั้นซับซ้อนมากและตามกฎแล้วระบบเหล่านี้ถูกสร้างขึ้นโดยโปรแกรมเมอร์มากกว่าหนึ่งโหลเดือนและมากกว่าหนึ่งโหล ระบบดังกล่าวเรียกว่าสภาพแวดล้อมหรือเครื่องมือการเขียนโปรแกรมแบบรวม
ระบบการเขียนโปรแกรมเป็นสภาพแวดล้อมการมองเห็นที่รอบคอบมาก ซึ่งคุณสามารถเขียนซอร์สโค้ดของโปรแกรม แปลเป็นรหัสเครื่อง ทดสอบ ดีบัก และอื่นๆ อีกมากมาย นอกจากนี้ยังมีโปรแกรมที่อนุญาตให้คุณดำเนินการดังกล่าวข้างต้นโดยใช้ บรรทัดคำสั่ง.
คุณอาจเคยได้ยินคำว่า "โปรแกรมเขียนขึ้นภายใต้ Windows หรือภายใต้ Linux, Unix" มากกว่าหนึ่งครั้ง ความจริงก็คือสภาพแวดล้อมการเขียนโปรแกรมสำหรับการแปลภาษาการเขียนโปรแกรมเป็นรหัสเครื่องสามารถเป็นได้สองประเภท - คอมไพเลอร์และล่าม การคอมไพล์หรือตีความโปรแกรมระบุว่าโปรแกรมจะทำงานบนอุปกรณ์ต่อไปอย่างไร โปรแกรมที่เขียนด้วยภาษา Java ทำงานบนพื้นฐานของการตีความเสมอ ในขณะที่โปรแกรมที่เขียนด้วย C / C ++ - การคอมไพล์ ความแตกต่างระหว่างสองวิธีนี้คืออะไร?
คอมไพเลอร์หลังจากเขียนซอร์สโค้ดในขณะที่คอมไพล์แล้ว จะอ่านซอร์สโค้ดทั้งหมดของโปรแกรมในครั้งเดียวและแปลเป็นรหัสเครื่อง หลังจากที่โปรแกรมมีอยู่โดยรวมและสามารถดำเนินการได้ในนั้นเท่านั้น ระบบปฏิบัติการที่มันเขียน ดังนั้น โปรแกรมที่เขียนภายใต้ Windows จึงไม่สามารถทำงานได้ภายใต้ Linux และในทางกลับกัน ล่ามจะก้าวผ่านหรือดำเนินการทีละบรรทัดของโปรแกรมทุกครั้งที่มีการดำเนินการ ในระหว่างการตีความ โค้ดที่รันไม่ได้จะถูกสร้างขึ้น แต่เป็นโค้ดเสมือน ซึ่งถูกรันโดยเครื่องเสมือน Java ในเวลาต่อมา ดังนั้นบนแพลตฟอร์มใด ๆ - Windows หรือ Linux โปรแกรม Java สามารถดำเนินการได้ในลักษณะเดียวกันหากมีเครื่อง Java เสมือนในระบบซึ่งเรียกอีกอย่างว่า Runtime System
การเขียนโปรแกรมเชิงวัตถุ
การเขียนโปรแกรมเชิงวัตถุขึ้นอยู่กับวัตถุซึ่งค่อนข้างคล้ายกับโลกของเรา หากคุณมองไปรอบ ๆ ตัวคุณ คุณจะพบบางสิ่งที่จะช่วยให้คุณเข้าใจรูปแบบการเขียนโปรแกรมดังกล่าวได้ชัดเจนยิ่งขึ้น ตัวอย่างเช่น ตอนนี้ฉันกำลังนั่งอยู่ที่โต๊ะและพิมพ์บทนี้บนคอมพิวเตอร์ที่ประกอบด้วยจอภาพ หน่วยระบบ แป้นพิมพ์ เมาส์ ลำโพง และอื่นๆ ทุกส่วนเหล่านี้เป็นวัตถุที่ประกอบขึ้นเป็นคอมพิวเตอร์ เมื่อทราบสิ่งนี้แล้ว มันง่ายมากที่จะกำหนดแบบจำลองทั่วไปบางประเภทสำหรับการทำงานของคอมพิวเตอร์ทั้งเครื่อง หากคุณไม่เข้าใจความซับซ้อนของคุณสมบัติซอฟต์แวร์และฮาร์ดแวร์ของคอมพิวเตอร์ เราสามารถพูดได้ว่าวัตถุหน่วยระบบดำเนินการบางอย่างที่แสดงโดยวัตถุตรวจสอบ ในทางกลับกัน อ็อบเจ็กต์ Keyboard สามารถแก้ไขหรือระบุการดำเนินการสำหรับออบเจ็กต์ System unit ที่ส่งผลต่อการทำงานของอ็อบเจ็กต์ Monitor ได้ กระบวนการที่นำเสนอนี้แสดงให้เห็นถึงลักษณะที่ดีของระบบการเขียนโปรแกรมเชิงวัตถุทั้งหมด
จินตนาการถึงพลังบางอย่าง ซอฟต์แวร์มีโค้ดหลายแสนบรรทัด โปรแกรมทั้งหมดจะดำเนินการทีละบรรทัด ทีละบรรทัด และโดยหลักการแล้ว แต่ละบรรทัดของโค้ดที่ตามมาจะต้องเชื่อมโยงกับโค้ดบรรทัดก่อนหน้า ถ้าคุณไม่ได้ใช้โปรแกรมเชิงวัตถุ และเมื่อคุณต้องการเปลี่ยนโค้ดของโปรแกรมนี้ เช่น หากคุณต้องการปรับปรุงองค์ประกอบบางอย่าง คุณจะต้องทำงานมากกับซอร์สโค้ดทั้งหมดของโปรแกรมนี้
การเขียนโปรแกรมเชิงวัตถุง่ายกว่ามาก กลับไปที่ตัวอย่างระบบคอมพิวเตอร์ สมมติว่าคุณไม่พอใจกับจอภาพขนาด 17 นิ้วอีกต่อไป คุณสามารถแลกเปลี่ยนเป็นจอภาพขนาด 20 นิ้วได้อย่างปลอดภัย หากคุณมีทรัพยากรบางอย่าง กระบวนการแลกเปลี่ยนเองจะไม่ก่อให้เกิดปัญหาใหญ่ เว้นแต่ว่าจะต้องเปลี่ยนไดรเวอร์ และฝุ่นจากใต้จอมอนิเตอร์เก่าควรถูกเช็ดออก แค่นั้นเอง การเขียนโปรแกรมเชิงวัตถุขึ้นอยู่กับหลักการทำงานโดยประมาณนี้ โดยที่โค้ดบางส่วนสามารถแสดงถึงคลาสของอ็อบเจ็กต์ที่เป็นเนื้อเดียวกันซึ่งสามารถปรับให้ทันสมัยหรือแทนที่ได้อย่างง่ายดาย
การเขียนโปรแกรมเชิงวัตถุอย่างง่ายดายและชัดเจนสะท้อนถึงแก่นของปัญหาที่กำลังได้รับการแก้ไข และที่สำคัญที่สุดคือทำให้สามารถลบวัตถุที่ไม่จำเป็นออกได้โดยปราศจากอคติต่อโปรแกรมทั้งหมดโดยแทนที่วัตถุเหล่านี้ด้วยวัตถุที่ใหม่กว่า ดังนั้น ความสามารถในการอ่านโดยรวมของซอร์สโค้ดของโปรแกรมทั้งหมดจึงง่ายขึ้นมาก สิ่งสำคัญคือต้องใช้รหัสเดียวกันในโปรแกรมที่ต่างกันโดยสิ้นเชิง
ชั้นเรียน
แกนหลักของโปรแกรม Java ทั้งหมดคือคลาสที่ใช้การเขียนโปรแกรมเชิงวัตถุ อันที่จริงคุณรู้อยู่แล้วว่าคลาสคืออะไร แต่คุณยังไม่รู้เกี่ยวกับคลาสนั้นเลย ในส่วนที่แล้ว เราได้พูดถึงวัตถุต่างๆ โดยยกตัวอย่างโครงสร้างของคอมพิวเตอร์ทั้งเครื่อง แต่ละอ็อบเจ็กต์ที่ประกอบคอมพิวเตอร์เป็นตัวแทนของคลาสของตัวเอง ตัวอย่างเช่น คลาส Monitors จะรวมมอนิเตอร์ทั้งหมดเข้าด้วยกัน โดยไม่คำนึงถึงประเภท ขนาด และความสามารถ และมอนิเตอร์หนึ่งตัวที่ยืนอยู่บนโต๊ะของคุณเป็นออบเจกต์ของคลาสมอนิเตอร์
วิธีนี้ทำให้ง่ายต่อการจำลองกระบวนการทุกประเภทในการเขียนโปรแกรม ทำให้ง่ายต่อการแก้ไขงานที่ได้รับมอบหมาย ตัวอย่างเช่น มีสี่อ็อบเจ็กต์จากสี่คลาสที่แตกต่างกัน: มอนิเตอร์ หน่วยระบบ คีย์บอร์ด และลำโพง ในการเล่นไฟล์เสียง ให้ใช้แป้นพิมพ์เพื่อให้คำสั่ง หน่วยระบบคุณจะสังเกตเห็นการกระทำของการให้คำสั่งด้วยสายตาบนจอภาพ และด้วยเหตุนี้ ลำโพงจะเล่นไฟล์เสียง นั่นคือ วัตถุใดๆ เป็นส่วนหนึ่งของคลาสใดคลาสหนึ่งและมีเครื่องมือและความสามารถทั้งหมดของคลาสนี้ สามารถมีอ็อบเจ็กต์ในคลาสเดียวกันได้มากเท่าที่จำเป็นในการแก้ปัญหา
วิธีการ
เมื่อได้รับตัวอย่างการเล่น ไฟล์เสียงจากนั้นมีการกล่าวถึงการให้คำสั่งหรือข้อความบนพื้นฐานของการดำเนินการบางอย่าง งานของการดำเนินการได้รับการแก้ไขโดยใช้วิธีการที่แต่ละวัตถุมี เมธอดคือชุดคำสั่งที่คุณสามารถดำเนินการบางอย่างกับอ็อบเจ็กต์ได้
แต่ละอ็อบเจ็กต์มีจุดประสงค์ของตัวเองและได้รับการออกแบบมาเพื่อแก้ปัญหาบางอย่างโดยใช้วิธีการ ตัวอย่างเช่น อ็อบเจ็กต์ Keyboard จะดีอย่างไรถ้าคุณไม่สามารถกดปุ่มและยังสามารถออกคำสั่งได้ ออบเจ็กต์ Keyboard มีคีย์จำนวนหนึ่งซึ่งผู้ใช้สามารถควบคุมอุปกรณ์อินพุตและสามารถออกคำสั่งที่จำเป็นได้ การประมวลผลคำสั่งดังกล่าวเกิดขึ้นโดยใช้วิธีการ
ตัวอย่างเช่น คุณกดแป้น Esc เพื่อยกเลิกการกระทำใดๆ และด้วยเหตุนี้จึงกำหนดคำสั่งให้กับวิธีการที่กำหนดให้กับแป้นนี้ ซึ่งจะแก้ปัญหานี้ในระดับโปรแกรม คำถามเกิดขึ้นทันทีเกี่ยวกับจำนวนวิธีของออบเจ็กต์ Keyboard แต่อาจมีการใช้งานที่แตกต่างกัน - ทั้งจากการกำหนดวิธีการสำหรับแต่ละคีย์ (ซึ่งโดยทั่วไปแล้วไม่สมเหตุสมผล) ไปจนถึงการสร้างวิธีหนึ่งที่จะตรวจสอบทั่วไป สถานะของแป้นพิมพ์ นั่นคือวิธีการนี้จะตรวจสอบว่ามีการกดปุ่มหรือไม่จากนั้นตัดสินใจว่าจะทำอย่างไรขึ้นอยู่กับคีย์ที่เกี่ยวข้อง
ดังนั้นเราจึงเห็นว่าแต่ละอ็อบเจ็กต์สามารถมีชุดวิธีการในการแก้ปัญหาต่างๆ ได้ และเนื่องจากแต่ละอ็อบเจ็กต์เป็นอ็อบเจ็กต์ของคลาสใดคลาสหนึ่ง ปรากฎว่าคลาสมีชุดของเมธอดที่ใช้โดยอ็อบเจ็กต์ต่างๆ ของคลาสเดียวกัน ใน Java เมธอดทั้งหมดที่คุณสร้างต้องเป็นเจ้าของหรือเป็นส่วนหนึ่งของคลาสเฉพาะ
ไวยากรณ์และความหมาย ภาษาจาวา
เพื่อที่จะพูดและอ่านภาษาต่างประเทศ จำเป็นต้องเรียนรู้ตัวอักษรและไวยากรณ์ของภาษานั้น เงื่อนไขที่คล้ายกันถูกสังเกตในการศึกษาภาษาโปรแกรมโดยมีความแตกต่างเพียงอย่างเดียวสำหรับฉันว่ากระบวนการนี้ค่อนข้างง่ายกว่า แต่ก่อนที่คุณจะเริ่มเขียนซอร์สโค้ดของโปรแกรม ก่อนอื่นคุณต้องแก้ปัญหาที่คุณพบในรูปแบบใดๆ ที่คุณสะดวก
มาสร้างคลาสที่รับผิดชอบกันเถอะ ตัวอย่างเช่น สำหรับโทรศัพท์ ซึ่งจะมีเพียงสองวิธี: การเปิดและปิดโทรศัพท์เครื่องนี้ เนื่องจากเราไม่รู้ไวยากรณ์ของภาษา Java ในตอนนี้ เราจะเขียนคลาส Phone เป็นภาษานามธรรม
คลาสโฟน
{
รวม () วิธีการ
{
// การดำเนินการเพื่อเปิดโทรศัพท์
}
ปิดการใช้งาน () วิธีการ
{
// การดำเนินการเพื่อปิดโทรศัพท์
}
}
คลาสโทรศัพท์อาจมีลักษณะเช่นนี้ โปรดทราบว่าวงเล็บปีกกาแสดงถึงจุดเริ่มต้นและจุดสิ้นสุดของเนื้อหาคลาส เมธอด หรือลำดับของข้อมูลตามลำดับ นั่นคือ วงเล็บระบุว่าเป็นของเมธอดหรือคลาส วงเล็บเปิดแต่ละวงเล็บต้องมีวงเล็บปิด เพื่อไม่ให้สับสน พวกเขามักจะใส่รหัสในระดับเดียวกัน
ตอนนี้ขอเขียนคลาสเดียวกันใน Java เท่านั้น
คลาสโทรศัพท์
{
เป็นโมฆะเมื่อ ()
{
// เนื้อหาของ on () วิธีการ
}
ถือเป็นโมฆะ ()
{
// เนื้อหาของ off () method
}
}
คีย์เวิร์ด class ในภาษา Java ประกาศคลาส ตามด้วยชื่อของคลาสเอง ในกรณีของเรา นี่คือโทรศัพท์ เพียงไม่กี่คำเกี่ยวกับการลงทะเบียนบันทึก ในเกือบทุกภาษาการเขียนโปรแกรม สิ่งสำคัญคือต้องเก็บชื่อไว้ในรีจิสเตอร์ที่สร้างขึ้น หากคุณเขียน Telefon การสะกดเช่น telefon หรือ TELefoN จะทำให้เกิดข้อผิดพลาดระหว่างการรวบรวม อย่างที่เขียนไว้แต่แรก จึงต้องเขียนต่อไป
สงวนไว้หรือคีย์เวิร์ดเขียนในกรณีเฉพาะ และคุณไม่สามารถใช้งานได้โดยตั้งชื่อให้กับเมธอด คลาส อ็อบเจ็กต์ และอื่นๆ ช่องว่างระหว่างคำไม่สำคัญเนื่องจากคอมไพเลอร์ไม่สนใจคำเหล่านั้น แต่มีความสำคัญต่อความสามารถในการอ่านโค้ด
ในเนื้อหาของคลาส Telefon มีสองวิธี: เปิด () - เปิดโทรศัพท์และปิด () วิธี - ปิดโทรศัพท์ ทั้งสองวิธีมีเนื้อหาของตัวเอง และในทางทฤษฎี ควรมีซอร์สโค้ดบางประเภทที่อธิบายการกระทำที่จำเป็นของทั้งสองวิธี สำหรับเราตอนนี้ ไม่ว่าวิธีการเหล่านี้จะถูกนำไปใช้อย่างไร สิ่งสำคัญคือไวยากรณ์ของภาษา Java
ทั้งสองวิธีมีวงเล็บใน () ซึ่งอยู่ภายในซึ่งสามารถเขียนพารามิเตอร์ได้ เช่น on (int time) หรือ on (int time, int time1) ด้วยความช่วยเหลือของพารามิเตอร์ มีการเชื่อมต่อระหว่างวิธีการกับโลกภายนอก วิธี on (int time) นั้นใช้พารามิเตอร์เวลา มีไว้เพื่ออะไร? ตัวอย่างเช่น คุณต้องการให้โทรศัพท์ของคุณเปิดใน เวลาที่แน่นอน... จากนั้นค่าจำนวนเต็มในพารามิเตอร์เวลาจะถูกส่งไปยังเนื้อหาของวิธีการและโทรศัพท์จะถูกเปิดใช้งานตามข้อมูลที่ได้รับ หากวงเล็บว่างเปล่า เมธอดจะไม่รับพารามิเตอร์
ความคิดเห็น (1)
ในคลาส Telefon เนื้อหาของทั้งสองเมธอดมีรายการหลังเครื่องหมายทับสองอัน: //. รายการดังกล่าวแสดงถึงความคิดเห็นที่คอมไพเลอร์จะละเว้น แต่จำเป็นสำหรับความสามารถในการอ่านโค้ด ยิ่งคุณแสดงความคิดเห็นในขณะที่เขียนโปรแกรมมากเท่าใด โอกาสที่คุณจะต้องจดจำในหนึ่งปีก็ยิ่งมากขึ้นเท่านั้นว่าคุณทำงานอะไรมาบ้างตลอดเวลานี้
ความคิดเห็นใน Java สามารถมีได้สามประเภท ได้แก่:
//, /*…*/ และ /**…*/
ความคิดเห็นที่เขียนโดยใช้ตัวดำเนินการ // ต้องอยู่ในบรรทัดเดียว:
// หนึ่งบรรทัด
!!! ข้อผิดพลาด! คุณไม่สามารถตัดไปยังบรรทัดที่สองได้!
// เส้นแรก
// บรรทัดที่สอง
// …
//บรรทัดสุดท้าย
ความคิดเห็นโดยใช้ตัวดำเนินการ / *… * / สามารถขยายได้หลายบรรทัด ที่จุดเริ่มต้นของความคิดเห็น ให้ใส่ / * และปิดท้ายเมื่อคุณแสดงความคิดเห็นโค้ดเสร็จแล้ว ให้ใส่เครื่องหมาย * / ความคิดเห็นแบบสุดท้าย / ** ... * / ใช้สำหรับบันทึกโค้ดและระบุตำแหน่งได้หลายบรรทัด
ชนิดข้อมูล Java
ชนิดข้อมูลมีอยู่ใน Java เพื่อตั้งค่าตามอำเภอใจ ในคลาส Telefon เราได้สร้างสองวิธี ทั้งสองวิธีไม่มีพารามิเตอร์ แต่เมื่อให้ตัวอย่างของวิธี on (int time) พร้อมพารามิเตอร์เวลา มีการกล่าวถึงการส่งค่าไปยังวิธีการ ค่านี้ระบุเวลาที่ควรจะเปิดโทรศัพท์ ตัวระบุ int กำหนดประเภทของค่าเวลา Java 2 ME มีข้อมูลหกประเภท
ไบต์ - ค่าจำนวนเต็มขนาดเล็กจาก –128 ถึง 128;
ค่าจำนวนเต็มสั้น - สั้นในช่วงตั้งแต่ –32768 ถึง 32767;
int - มีค่าจำนวนเต็มตั้งแต่ –2147483648 ถึง 2147483647
long เป็นค่าจำนวนเต็มที่มีขนาดใหญ่มาก ตั้งแต่ –922337203685475808 ถึง 9223372036854775807
char คือค่าคงที่อักขระ Unicode พิสัย รูปแบบนี้ 0 ถึง 65536 ซึ่งเท่ากับ 256 อักขระ อักขระประเภทนี้จะต้องเขียนด้วยเครื่องหมายคำพูดเดี่ยว เช่น: 'G';
บูลีน - ประเภทบูลีน มีเพียงสองค่า: เท็จ - เท็จ และ จริง - จริง ประเภทนี้มักใช้ในลูปซึ่งในภายหลัง แนวคิดนี้ง่ายมาก - หากคุณมีเงินอยู่ในกระเป๋า น่าจะเป็นเรื่องจริง และถ้าไม่ใช่ แสดงว่าเป็นเท็จ ดังนั้น ถ้ามีเงิน เราก็ไปที่ร้านเพื่อซื้อขนมปังหรือเบียร์ (ขีดเส้นใต้ว่าจำเป็น) ถ้าไม่มีเงิน เราก็อยู่บ้าน นั่นคือ เป็นค่าตรรกะที่ช่วยในการเลือกการดำเนินการเพิ่มเติมสำหรับโปรแกรมของคุณ
ในการประกาศค่าที่จำเป็น จะใช้รายการต่อไปนี้:
ทันเวลา;
BigTime ยาว;
คำถ่าน;
ต้องใช้ตัวดำเนินการอัฒภาคหลังรายการและวางไว้ที่ท้ายบรรทัด คุณสามารถรวมโฆษณาประเภทเดียวกันได้หลายรายการโดยคั่นด้วยเครื่องหมายจุลภาค:
Mt เวลา, เวลา 1, เวลา 2;
ตอนนี้มาปรับปรุงคลาส Telefon ของเราโดยเพิ่มค่าบางอย่างลงไป เราไม่ต้องการวิธีการ on () และ off () อีกต่อไป เราจะเพิ่มวิธีการใหม่ๆ ที่สามารถแก้ปัญหาบางอย่างได้จริงๆ
คลาสโทรศัพท์
{
// S - พื้นที่แสดงผล
// w - ความกว้างของการแสดงผล
// h - แสดงความสูง
int w, h, S;
// วิธีการคำนวณพื้นที่แสดงผล
พื้นที่ vord ()
{
S = w * h;
}
}
ดังนั้นเราจึงมีตัวแปรสามตัว S, w และ h ซึ่งรับผิดชอบตามลำดับสำหรับพื้นที่ ความกว้าง และความสูงของจอแสดงผลเป็นพิกเซล วิธีการ Area () คำนวณพื้นที่ของหน้าจอโทรศัพท์เป็นพิกเซล การดำเนินการนั้นไร้ประโยชน์ แต่บ่งบอกถึงและเข้าใจง่ายมาก เนื้อความของวิธี Area () ได้รับมาเองและมีรูปแบบ S = w * h ในวิธีนี้เราเพียงแค่คูณความกว้างด้วยความสูงและกำหนดหรือตามที่พวกเขาพูดเก็บผลลัพธ์ไว้ในตัวแปร S ตัวแปรนี้จะมีค่าของพื้นที่แสดงผล โทรศัพท์เครื่องนี้.
ตอนนี้เราเข้าใกล้โอเปอเรเตอร์ของภาษา Java ซึ่งคุณสามารถดำเนินการได้ทุกประเภท ตัวดำเนินการของภาษา Java เช่นเดียวกับภาษาโปรแกรมอื่นๆ มีวัตถุประสงค์ของตนเอง จึงมีโอเปอเรเตอร์เลขคณิต ตัวดำเนินการเพิ่มและลด ตัวดำเนินการตรรกะ และตัวดำเนินการเชิงสัมพันธ์ มาดูโอเปอเรเตอร์แต่ละตัวข้างต้นกัน
ตัวดำเนินการเลขคณิต
ตัวดำเนินการเลขคณิตทั้งหมดนั้นง่ายมากและคล้ายกับตัวดำเนินการสำหรับการคูณ "*", การหาร "/", การบวก "+" และการลบ "-" ที่ใช้ในวิชาคณิตศาสตร์ มีโอเปอเรเตอร์โมดูโล "%" และสถานการณ์ที่มีโอเปอเรเตอร์เท่ากับ "=" ทำให้สับสนเล็กน้อยในแวบแรก ตัวดำเนินการเท่ากับในภาษาโปรแกรมเรียกว่าตัวดำเนินการมอบหมาย:
ที่นี่คุณกำหนดค่า 3 ให้กับตัวแปร x และตัวดำเนินการ "เท่ากับ" ในภาษาการเขียนโปรแกรมสอดคล้องกับการเขียนตัวดำเนินการสองตัวที่ต่อเนื่องกัน "เท่ากับ": "==" ลองดูตัวอย่างว่าตัวดำเนินการเลขคณิตต่างๆ ทำอะไรได้บ้าง
Int x, y, z;
x = 5;
y = 3;
z = 0;
z = x + y;
ในกรณีนี้ z จะมีค่าของผลรวมของ x และ y นั่นคือ 8
ตัวแปร x มีค่าเท่ากับ 5 แต่หลังจากบันทึกดังกล่าว ค่าก่อนหน้าจะหายไปและเขียนผลคูณ z * x (8 * 5) ซึ่งเท่ากับ 40 ตอนนี้ หากเราดำเนินการโค้ดของเราต่อไป ตัวแปรจะ มีลักษณะดังนี้:
// x = 40;
// y = 3;
// z = 8;
ตัวดำเนินการบวกและลบมีจุดประสงค์เดียวกับในวิชาคณิตศาสตร์ ตัวเลขติดลบมีความเกี่ยวข้องในทำนองเดียวกัน
ตัวดำเนินการลดค่า “––” และตัวดำเนินการเพิ่มค่า “++” มีความเฉพาะเจาะจงมาก แต่ง่ายมาก มีบ่อยครั้งในการเขียนโปรแกรมเมื่อคุณต้องการเพิ่มหรือลดค่าหนึ่งค่า มักพบในลูป การดำเนินการที่เพิ่มขึ้นจะเพิ่มตัวแปรทีละตัว
Int x = 5;
x ++;
// นี่ x อยู่แล้ว 6
การดำเนินการลดจะลดตัวแปรลงหนึ่งตัว
Int x = 5;
NS--;
// x คือ 4
การดำเนินการเพิ่มและลดลงสามารถโพสต์และนำหน้าได้:
Int x = 5;
int y = 0;
y = x ++;
ในบรรทัดสุดท้ายของโค้ด ขั้นแรกให้กำหนดค่า x ให้กับ y นี่คือค่า 5 จากนั้นตัวแปร x จะเพิ่มขึ้นทีละหนึ่งเท่านั้น ปรากฎว่า:
การเพิ่มคำนำหน้าคือ:
Int x = 3;
int y = 0;
y = ++ x;
และในกรณีนี้ ขั้นแรก ตัวแปร x จะเพิ่มขึ้นหนึ่ง จากนั้นจึงกำหนดค่าที่เพิ่มขึ้นแล้วให้กับ y
ตัวดำเนินการเชิงสัมพันธ์
ตัวดำเนินการเชิงสัมพันธ์ช่วยให้คุณตรวจสอบความเท่าเทียมกันของทั้งสองส่วนของนิพจน์ได้ มีโอเปอเรเตอร์ความเท่าเทียมกัน "==" ตัวดำเนินการน้อยกว่า "<» и больше «>" น้อยกว่าหรือเท่ากับ "<=» и больше или равно «>= ", เช่นเดียวกับตัวดำเนินการปฏิเสธ"! = ".
9 == 10;
นิพจน์นี้ไม่เป็นความจริง เก้าไม่เท่ากับสิบ ดังนั้นค่าของนิพจน์นี้จึงเป็นเท็จ
ในทางกลับกัน ตัวดำเนินการปฏิเสธจะระบุความไม่เท่าเทียมกันของนิพจน์ และค่าจะเป็นจริง ตัวดำเนินการที่มากกว่า น้อยกว่า มากกว่าหรือเท่ากับและน้อยกว่าหรือเท่ากับจะคล้ายกับตัวดำเนินการที่เกี่ยวข้องจากคณิตศาสตร์
ตัวดำเนินการลอจิก
มีตัวดำเนินการเชิงตรรกะสองตัว ตัวดำเนินการ AND แทนด้วย && และตัวดำเนินการ OR แทนด้วยเครื่องหมายทับสองอัน "||" ตัวอย่างเช่น มีนิพจน์:
เอ * บี && บี * C;
ในกรณีที่นิพจน์ทั้งสองส่วนเป็นจริงเท่านั้น ค่าของนิพจน์จะถือเป็นจริง หากส่วนใดส่วนหนึ่งไม่ถูกต้อง ค่าของนิพจน์ทั้งหมดจะเป็นเท็จ
ตรงกันข้ามกับตัวดำเนินการ "&&" มีตัวดำเนินการ "||" ซึ่งไม่ได้เรียกว่า "OR" อย่างไร้ประโยชน์
A * B || บี * ซี;
ถ้าส่วนใดส่วนหนึ่งของนิพจน์เป็นจริง นิพจน์ทั้งหมดจะถือว่าเป็นจริง ตัวดำเนินการทั้งสองสามารถรวมกันเป็นนิพจน์เดียวได้ ตัวอย่างเช่น
A * B || B * C && C * D || บี * เอ;
ด้วยความช่วยเหลือของนิพจน์นี้ ฉันได้นำคุณ ดูเหมือนว่าฉัน ไปสู่ความยากลำบาก ใช่ไหม ความจริงก็คือว่าใน Java เช่นเดียวกับในคณิตศาสตร์ มีลำดับความสำคัญหรือลำดับชั้นที่เรียกว่าตัวดำเนินการด้วยความช่วยเหลือซึ่งจะกำหนดว่าตัวดำเนินการใดมีความสำคัญมากกว่าและดังนั้นจึงมีการตรวจสอบก่อน ลองพิจารณาใช้รายการลำดับความสำคัญของโอเปอเรเตอร์ที่มีอยู่ทั้งหมดในภาษา Java:
, ., (),
!, ~, ++, - -, + (unary), - (unary), ใหม่,
*, /, %,
+, –,
<<, >>, >>>,
<, <=, >, >=,
= =, !=,
&, ^, |,
&&,
||,
?:,
=, +=, –=, *=, /=, %=, |=, ^=, <<=, >>=, >>>=.
การเชื่อมโยงตัวดำเนินการในรายการจะติดตามจากซ้ายไปขวาและจากบนลงล่าง นั่นคือทุกอย่างที่อยู่ทางซ้ายและด้านบนนั้นเก่ากว่าและสำคัญกว่า
เพจ JSP มีไวยากรณ์ที่รวมกัน: การรวมกันของไวยากรณ์มาตรฐานที่สอดคล้องกับข้อกำหนด HTML และไวยากรณ์ JSP ที่กำหนดโดยข้อมูลจำเพาะ Java Server Pages ไวยากรณ์ JSP กำหนดกฎสำหรับการเขียนหน้า JSP ซึ่งประกอบด้วยแท็ก HTML มาตรฐานและแท็ก JSP หน้า JSP นอกจากแท็ก HTML แล้ว ยังมีแท็ก JSP ในหมวดหมู่ต่อไปนี้:
คำสั่ง JSP
คำสั่งให้ข้อมูลทั่วโลกเกี่ยวกับคำขอเฉพาะไปยัง JSP และให้ข้อมูลที่จำเป็นในระหว่างขั้นตอนการแปลคำสั่งจะถูกวางไว้ที่จุดเริ่มต้นของหน้า JSP ก่อนแท็กอื่นๆ ทั้งหมด ดังนั้น พาร์เซอร์(parser) JSP เมื่อแยกวิเคราะห์ข้อความที่จุดเริ่มต้น เน้นคำสั่งส่วนกลาง ดังนั้น JSP Engine (รันไทม์ JSP) จะแยกวิเคราะห์โค้ดและสร้างเซิร์ฟเล็ตจาก JSP คำสั่งเป็นข้อความที่ส่งไปยังคอนเทนเนอร์ JSP ไวยากรณ์ คำสั่ง JSP มีลักษณะดังนี้:
<%@ директива имяАтрибута="значение" %>ไวยากรณ์งาน คำสั่งใน XML:
- หน้า (หน้า)
- taglib (ไลบรารีแท็ก)
- รวม (รวม)
คำสั่งหน้า
คำสั่ง หน้าหนังสือกำหนดคุณสมบัติ หน้า JSPที่ส่งผลต่อนักแปล ลำดับของคุณลักษณะในคำสั่ง หน้าหนังสือไม่เป็นไร. การละเมิดไวยากรณ์หรือการมีอยู่ของแอตทริบิวต์ที่ไม่รู้จักส่งผลให้เกิดข้อผิดพลาดในการแปล ตัวอย่างของคำสั่ง หน้าหนังสือรหัสต่อไปนี้สามารถให้บริการ:<%@ page buffer="none" isThreadSafe="yes" errorPage="/error.jsp" %>คำสั่งนี้ประกาศว่า หน้านี้ JSP ไม่ใช้การบัฟเฟอร์ ซึ่งเป็นไปได้สำหรับผู้ใช้จำนวนมากที่จะเข้าถึงหน้า JSP ที่ระบุพร้อมกัน และหน้าแสดงข้อผิดพลาดที่ชื่อว่า error.jsp.คำสั่ง หน้าหนังสืออาจมีข้อมูลเกี่ยวกับหน้า:<%@ page info = "JSP Sample 1" %>รายการแอตทริบิวต์คำสั่งที่เป็นไปได้ หน้าหนังสือนำเสนอในตาราง
ชื่อแอตทริบิวต์ | ความหมาย | คำอธิบาย |
---|---|---|
ภาษา | เส้น | กำหนดภาษาที่ใช้ในสคริปต์เล็ตไฟล์ JSP นิพจน์ หรือไฟล์ที่รวมไว้ รวมถึงเนื้อหาของโค้ดที่แปลแล้ว ค่าเริ่มต้นคือ "java" |
ยืดออก | เส้น | ระบุซูเปอร์คลาสสำหรับเซิร์ฟเล็ตที่สร้างขึ้น แอตทริบิวต์นี้ควรใช้อย่างระมัดระวัง เนื่องจากเป็นไปได้ว่าเซิร์ฟเวอร์กำลังใช้ซูเปอร์คลาสอยู่แล้ว |
นำเข้า | เส้น | คำจำกัดความของแพ็คเกจที่จะนำเข้า เช่น & lt% @ การนำเข้าหน้า = "java.util. *%> |
การประชุม | จริงหรือเท็จ | ความหมาย จริง(ค่าเริ่มต้น) ระบุว่าตัวแปรที่กำหนดไว้ล่วงหน้า การประชุม(ประเภท HttpSession) ต้องถูกผูกไว้กับเซสชันที่มีอยู่ หากมี มิฉะนั้น เซสชันใหม่จะถูกสร้างขึ้นและผูกไว้ ความหมาย เท็จกำหนดว่าจะไม่ใช้เซสชันและพยายามเข้าถึงตัวแปร การประชุมจะทำให้เกิดข้อผิดพลาดเมื่อแปลหน้า JSP เป็น servlet |
กันชน | ไม่มีหรือขนาดของบัฟเฟอร์ในหน่วย kB | ตั้งค่าขนาดบัฟเฟอร์สำหรับ JspWriter ค่าเริ่มต้นขึ้นอยู่กับการตั้งค่าเซิร์ฟเวอร์และไม่ควรเกิน 8 kB ถ้าค่าเป็น ไม่มีเอาต์พุตไปที่วัตถุโดยตรง |
ออโต้ฟลัช | จริงหรือเท็จ | กำหนดว่าควรล้างบัฟเฟอร์โดยอัตโนมัติเมื่อล้นหรือเกิดข้อผิดพลาด ค่าเริ่มต้นคือ จริง |
isThreadSafe | จริงหรือเท็จ | ความหมาย จริง(ค่าดีฟอลต์) ระบุโหมดการดำเนินการปกติของเซิร์ฟเล็ต โดยที่คำขอหลายรายการได้รับการประมวลผลพร้อมกันโดยใช้อินสแตนซ์เซิร์ฟเล็ตตัวเดียว สมมติว่าผู้เขียนได้ซิงโครไนซ์การเข้าถึงตัวแปรของอินสแตนซ์นั้น ค่าเท็จส่งสัญญาณว่าเซิร์ฟเล็ตควรสืบทอด SingleThreadModel(โมเดลเธรดเดียว) โดยที่การร้องขอแบบต่อเนื่องหรือพร้อมกันได้รับการจัดการโดยอินสแตนซ์ที่แยกจากกันของเซิร์ฟเล็ต |
ข้อมูล | เส้น | กำหนดสตริงของข้อมูลเกี่ยวกับหน้า JSP ที่จะเข้าถึงได้โดยใช้เมธอด Servlet.getServletInfo () |
errorPage | เส้น | ค่าแอตทริบิวต์คือ URL ของหน้าที่ควรจะแสดงในเหตุการณ์ ความผิดพลาดที่เป็นไปได้โยนข้อยกเว้น |
isErrorPage | จริงหรือเท็จ | ส่งสัญญาณว่าสามารถใช้หน้านี้เพื่อจัดการข้อผิดพลาดสำหรับหน้า JSP อื่นๆ ได้หรือไม่ ค่าเริ่มต้นคือ เท็จ |
ชนิดของเนื้อหา | เส้น | ระบุการเข้ารหัสสำหรับเพจ JSP และการตอบกลับ และประเภท MIME ของการตอบกลับ JSP ค่าเริ่มต้นของประเภทเนื้อหาคือ ข้อความ / html, การเข้ารหัส - ISO-8859-1ตัวอย่างเช่น: contentType = "ข้อความ / html; ชุดอักขระ = ISO-8859-1" |
การเข้ารหัสหน้า | เส้น | กำหนดการเข้ารหัสอักขระของเพจ JSP ค่าเริ่มต้นคือ ชุดอักขระจากแอตทริบิวต์ ชนิดของเนื้อหาหากมีการกำหนดไว้ที่นั่น ถ้าค่า ชุดอักขระในแอตทริบิวต์ ชนิดของเนื้อหา undefined ค่า การเข้ารหัสหน้ามีค่าเท่ากัน ISO-8859-1 |
คำสั่ง Taglib
คำสั่ง taglibประกาศว่าหน้า JSP ที่กำหนดใช้ไลบรารีแท็ก ระบุหน้า JSP โดยไม่ซ้ำกันด้วย URI และจับคู่คำนำหน้าแท็กที่ไลบรารีสามารถดำเนินการได้ หากคอนเทนเนอร์ไม่พบไลบรารีแท็ก จะเกิดข้อผิดพลาดในการแปลที่ร้ายแรง คำสั่ง taglibมีไวยากรณ์ต่อไปนี้:<%@ taglib uri="URI ของไลบรารีแท็กรวม"คำนำหน้า =" คำนำหน้าชื่อ"%> คำนำหน้า" คำนำหน้าชื่อ"ใช้อ้างอิงถึงห้องสมุด ตัวอย่างการใช้ tag library mytags: <%@ taglib uri="http://www.taglib/mytags" prefix="customs" %> . . .รวมคำสั่ง
คำสั่ง รวมอนุญาตให้คุณแทรกข้อความหรือโค้ดขณะแปลเพจ JSP เป็นเซิร์ฟเล็ต ไวยากรณ์คำสั่ง รวมมีลักษณะดังนี้:<%@ include file="URI สัมพัทธ์ของเพจที่จะรวม"%> คำสั่ง รวมมีหนึ่งคุณลักษณะ - ไฟล์... ซึ่งจะรวมข้อความของทรัพยากรที่ระบุในไฟล์ JSP คำสั่งนี้สามารถใช้เพื่อวางส่วนหัวลิขสิทธิ์มาตรฐานบนทุกหน้า JSP:<%@ include file="copyright.html" %>คอนเทนเนอร์ JSP เข้าถึงไฟล์รวม หากไฟล์รวมมีการเปลี่ยนแปลง คอนเทนเนอร์สามารถคอมไพล์หน้า JSP ใหม่ได้ คำสั่ง รวมถือว่าทรัพยากร เช่น หน้า JSP เป็นวัตถุแบบคงที่ URI ที่ให้มามักจะถูกตีความโดยสัมพันธ์กับ JSP ของหน้าเว็บที่มีลิงก์ แต่เช่นเดียวกับ URI ที่เกี่ยวข้อง คุณสามารถบอกระบบถึงตำแหน่งของทรัพยากรที่น่าสนใจซึ่งสัมพันธ์กับโฮมไดเร็กทอรีของเว็บเซิร์ฟเวอร์โดยนำหน้า URI ที่มีอักขระ "/" เนื้อหาของไฟล์รวมถือเป็นข้อความ JSP ธรรมดา ดังนั้นจึงสามารถรวมองค์ประกอบต่างๆ เช่น HTML แบบคงที่ องค์ประกอบสคริปต์ คำสั่ง และการดำเนินการได้ เว็บไซต์หลายแห่งใช้แถบนำทางขนาดเล็กในทุกหน้า เนื่องจากปัญหาในการใช้เฟรม HTML งานนี้จึงมักแก้ไขได้ด้วยการวางตารางขนาดเล็กไว้ด้านบนหรือด้านซ้ายของหน้า ซึ่งโค้ด HTML จะถูกทำซ้ำหลายครั้งในแต่ละหน้าของเว็บไซต์ คำสั่ง รวม- นี่เป็นวิธีที่เป็นธรรมชาติที่สุดในการแก้ปัญหานี้ ซึ่งช่วยให้นักพัฒนาพ้นจากฝันร้ายของกิจวัตรในการคัดลอก HTML ลงในแต่ละไฟล์ที่แยกจากกัน เนื่องจากคำสั่ง รวมรวมไฟล์ระหว่างการแปลหน้า จากนั้นหลังจากทำการเปลี่ยนแปลงแถบนำทางแล้ว ต้องทำการแปลหน้า JSP ทั้งหมดอีกครั้งโดยใช้มัน หากไฟล์แนบเปลี่ยนค่อนข้างบ่อย คุณสามารถใช้การกระทำได้ jsp: รวมที่เชื่อมต่อไฟล์เมื่อเข้าถึงหน้า JSPประกาศ JSP
ประกาศ (ประกาศ)มีไว้สำหรับกำหนดตัวแปรและเมธอดในภาษาสคริปต์ ซึ่งจะใช้ในหน้า JSP ในภายหลัง ไวยากรณ์ ประกาศมีลักษณะดังนี้:<%! код Java %> โฆษณาอยู่ในบล็อกการประกาศและถูกเรียกในบล็อกนิพจน์ของหน้า JSP รหัสในบล็อกการประกาศมักจะเขียนด้วยภาษาจาวา แต่เซิร์ฟเวอร์แอปพลิเคชันสามารถใช้ไวยากรณ์ของสคริปต์อื่นได้ โฆษณาบางครั้งใช้เพื่อเพิ่มฟังก์ชันการทำงานเพิ่มเติมเมื่อทำงานกับข้อมูลไดนามิกที่ได้รับจากคุณสมบัติของคอมโพเนนต์ JavaBeans ตัวอย่างของ โฆษณาถูกนำเสนอในตาราง ประกาศสามารถมีได้หลายบรรทัด เช่น ในโค้ดด้านล่างสำหรับคำนวณค่าของฟังก์ชัน ความจริง (int n)ซึ่งควรเท่ากับ 1 เมื่อ n น้อยกว่า 2 และ n! ด้วยค่าบวกของ n;<%! public static int fact (int n) { if (n โฆษณาห้ามสร้างเอาต์พุตใด ๆ ให้เป็นเอาต์พุตมาตรฐาน ออก... ตัวแปรและวิธีการประกาศใน ประกาศถูกเตรียมใช้งานและพร้อมใช้งานสำหรับสคริปต์เล็ตและอื่น ๆ โฆษณาในขณะที่หน้า JSP ถูกเตรียมใช้งานJSP Scriptlets
สคริปต์รวมโค้ดต่างๆ ที่เขียนด้วยภาษาสคริปต์ที่กำหนดไว้ใน directive ภาษา... ข้อมูลโค้ดต้องสอดคล้องกับโครงสร้างวากยสัมพันธ์ของภาษา สคริปต์กล่าวคือ โดยปกติแล้ว ไวยากรณ์ของภาษา Java สคริปต์มีไวยากรณ์ต่อไปนี้:<% текст скриптлета %>เทียบเท่าไวยากรณ์ scriptletสำหรับ XML คือ:ถ้าอยู่ในข้อความ scriptletจำเป็นต้องใช้ลำดับของตัวอักษร%> เหมือนกับการรวมกันของอักขระและไม่ใช่เป็นแท็ก - เครื่องหมายสิ้นสุด scriptletแทนที่จะใช้ลำดับ%> ให้ใช้อักขระ% \> ต่อไปนี้รวมกันข้อกำหนด JSP ให้ตัวอย่างที่ง่ายและตรงไปตรงมา scriptletที่เปลี่ยนแปลงเนื้อหาของหน้า JSP แบบไดนามิกตลอดทั้งวัน<% if (Calendar.getInstance ().get (Calendar.AM_PM) == Calendar.AM) {%>สวัสดีตอนเช้า<% } else { %>สวัสดีตอนบ่าย<% } %>ควรสังเกตว่ารหัสภายใน scriptletแทรกตามที่เขียนและข้อความ HTML แบบคงที่ทั้งหมด (ข้อความเทมเพลต) ก่อนหรือหลัง scriptletแปลงโดยใช้ตัวดำเนินการ พิมพ์... ซึ่งหมายความว่าสคริปต์เล็ตไม่จำเป็นต้องมีชิ้นส่วน Java ที่สมบูรณ์ และการปล่อยให้ชิ้นส่วนที่เปิดอยู่อาจส่งผลต่อ HTML แบบคงที่ภายนอก scriptlet. สคริปต์มีสิทธิ์เข้าถึงตัวแปรที่กำหนดอัตโนมัติเหมือนกับนิพจน์ ตัวอย่างเช่น หากจำเป็นต้องแสดงข้อมูลใด ๆ บนเพจ คุณต้องใช้ตัวแปร ออก. <% String queryData = request.getQueryString (); out.println ("Дополнительные данные запроса: " + queryData); %>
นิพจน์ JSP
การแสดงออกในหน้า JSP เป็นนิพจน์ปฏิบัติการที่เขียนในภาษาสคริปต์ที่ระบุในการประกาศ ภาษา(อย่างไร กฎจาวา). ผลลัพธ์ สำนวน JSP ของประเภทที่ต้องการ สตริง, ส่งไปยังเอาต์พุตมาตรฐาน ออกโดยใช้วัตถุปัจจุบัน JspWriter... ถ้าผลลัพธ์คือ สำนวนหล่อไม่ได้ สตริงอาจเกิดข้อผิดพลาดในการแปลหากตรวจพบปัญหาในขั้นตอนการแปล หรือมีข้อยกเว้นเกิดขึ้น ClassCastExceptionหากตรวจพบความไม่สอดคล้องกันระหว่างการดำเนินการตามคำขอ การแสดงออกมีไวยากรณ์ต่อไปนี้: & lt% = ข้อความนิพจน์%> ไวยากรณ์ทางเลือกสำหรับ สำนวน JSP เมื่อใช้ XML:- คำขอ HttpServletRequest;
- การตอบสนอง HttpServletResponse;
- เซสชัน HttpSession - เกี่ยวข้องกับคำขอ ถ้ามี;
- ออกไป PrintWriter - เวอร์ชันบัฟเฟอร์ของประเภท JspWriter สำหรับการส่งข้อมูลไปยังไคลเอ็นต์
ต้องตรงกับชื่อของคลาสที่มีการเรียกเมธอด main () เมื่อเครื่อง Java เริ่มทำงาน
int ก; ... การกระทำกับตัวแปร a ...; ถ้า (ก) (...)
ไม่ถูกต้องในแง่ของไวยากรณ์ Java และจะไม่คอมไพล์
- เมื่อใช้เป็นคอนสตรัคเตอร์ - super ควรมาก่อนเสมอโอเปอเรเตอร์ในตัวสร้างของคลาสย่อย
นอกจากนี้ยังรองรับ ประเภทจำกัดโดยการระบุซูเปอร์คลาสสำหรับคลาสพารามิเตอร์ ตัวอย่างเช่น การประกาศคลาส "generic class" CLASS_NAME
สตานิสลาฟ กอร์นาคอฟ
เพื่อที่จะพูดและอ่านภาษาต่างประเทศ จำเป็นต้องเรียนรู้ตัวอักษรและไวยากรณ์ของภาษานั้น เงื่อนไขที่คล้ายกันถูกสังเกตในการศึกษาภาษาโปรแกรมโดยมีความแตกต่างเพียงอย่างเดียวสำหรับฉันว่ากระบวนการนี้ค่อนข้างง่ายกว่า แต่ก่อนที่คุณจะเริ่มเขียนซอร์สโค้ดของโปรแกรม ก่อนอื่นคุณต้องแก้ปัญหาที่คุณพบในรูปแบบใดๆ ที่คุณสะดวก
มาสร้างคลาสที่รับผิดชอบกันเถอะ ตัวอย่างเช่น สำหรับโทรศัพท์ ซึ่งจะมีเพียงสองวิธี: การเปิดและปิดโทรศัพท์เครื่องนี้ เนื่องจากเราไม่รู้ไวยากรณ์ของภาษา Java ในตอนนี้ เราจะเขียนคลาส Phone เป็นภาษานามธรรม
Class Phone (เปิดใช้งาน () วิธี (// การดำเนินการเพื่อเปิดโทรศัพท์) วิธีปิด () (// การดำเนินการเพื่อปิดโทรศัพท์))
คลาสโทรศัพท์อาจมีลักษณะเช่นนี้ โปรดทราบว่าวงเล็บปีกกาแสดงถึงจุดเริ่มต้นและจุดสิ้นสุดของเนื้อหาคลาส เมธอด หรือลำดับของข้อมูลตามลำดับ นั่นคือ วงเล็บระบุว่าเป็นของเมธอดหรือคลาส วงเล็บเปิดแต่ละวงเล็บต้องมีวงเล็บปิด เพื่อไม่ให้สับสน พวกเขามักจะใส่รหัสในระดับเดียวกัน
ตอนนี้ขอเขียนคลาสเดียวกันใน Java เท่านั้น
Class Telefon (เป็นโมฆะบน () (// เนื้อหาของวิธีการบน ()) โมฆะปิด () (// เนื้อหาของวิธีการปิด ()))
คีย์เวิร์ด class ในภาษา Java ประกาศคลาส ตามด้วยชื่อของคลาสเอง ในกรณีของเรา นี่คือโทรศัพท์ เพียงไม่กี่คำเกี่ยวกับการลงทะเบียนบันทึก ในเกือบทุกภาษาการเขียนโปรแกรม สิ่งสำคัญคือต้องเก็บชื่อไว้ในรีจิสเตอร์ที่สร้างขึ้น หากคุณเขียน Telefon การสะกดเช่น telefon หรือ TELefoN จะทำให้เกิดข้อผิดพลาดระหว่างการรวบรวม อย่างที่เขียนไว้แต่แรก จึงต้องเขียนต่อไป
สงวนไว้หรือคีย์เวิร์ดเขียนในกรณีเฉพาะ และคุณไม่สามารถใช้งานได้โดยตั้งชื่อให้กับเมธอด คลาส อ็อบเจ็กต์ และอื่นๆ ช่องว่างระหว่างคำไม่สำคัญเนื่องจากคอมไพเลอร์ไม่สนใจคำเหล่านั้น แต่มีความสำคัญต่อความสามารถในการอ่านโค้ด
ในเนื้อหาของคลาส Telefon มีสองวิธี: เปิด () - เปิดโทรศัพท์และปิด () วิธี - ปิดโทรศัพท์ ทั้งสองวิธีมีเนื้อหาของตัวเอง และในทางทฤษฎี ควรมีซอร์สโค้ดบางประเภทที่อธิบายการกระทำที่จำเป็นของทั้งสองวิธี สำหรับเราตอนนี้ ไม่ว่าวิธีการเหล่านี้จะถูกนำไปใช้อย่างไร สิ่งสำคัญคือไวยากรณ์ของภาษา Java
ทั้งสองวิธีมีวงเล็บใน () ซึ่งอยู่ภายในซึ่งสามารถเขียนพารามิเตอร์ได้ เช่น on (int time) หรือ on (int time, int time1) ด้วยความช่วยเหลือของพารามิเตอร์ มีการเชื่อมต่อระหว่างวิธีการกับโลกภายนอก วิธี on (int time) นั้นใช้พารามิเตอร์เวลา มีไว้เพื่ออะไร? ตัวอย่างเช่น คุณต้องการให้โทรศัพท์เปิดในเวลาที่กำหนด จากนั้นค่าจำนวนเต็มในพารามิเตอร์เวลาจะถูกส่งไปยังเนื้อหาของวิธีการและโทรศัพท์จะถูกเปิดใช้งานตามข้อมูลที่ได้รับ หากวงเล็บว่างเปล่า เมธอดจะไม่รับพารามิเตอร์
ความคิดเห็น (1)
ในคลาส Telefon เนื้อหาของทั้งสองเมธอดมีรายการหลังเครื่องหมายทับสองอัน: //. รายการดังกล่าวแสดงถึงความคิดเห็นที่คอมไพเลอร์จะละเว้น แต่จำเป็นสำหรับความสามารถในการอ่านโค้ด ยิ่งคุณแสดงความคิดเห็นในขณะที่เขียนโปรแกรมมากเท่าใด โอกาสที่คุณจะต้องจดจำในหนึ่งปีก็ยิ่งมากขึ้นเท่านั้นว่าคุณทำงานอะไรมาบ้างตลอดเวลานี้
ความคิดเห็นใน Java สามารถมีได้สามประเภท ได้แก่ //, / *… * / และ / **… * / ความคิดเห็นที่เขียนโดยใช้ตัวดำเนินการ // ต้องอยู่ในบรรทัดเดียว:
// เส้นเดียว!!! ข้อผิดพลาด! คุณไม่สามารถตัดไปยังบรรทัดที่สองได้! // บรรทัดแรก // บรรทัดที่สอง //… // บรรทัดสุดท้าย
ความคิดเห็นโดยใช้ตัวดำเนินการ / *… * / สามารถขยายได้หลายบรรทัด ที่จุดเริ่มต้นของความคิดเห็น ให้ใส่ / * และปิดท้ายเมื่อคุณแสดงความคิดเห็นโค้ดเสร็จแล้ว ให้ใส่เครื่องหมาย * / ความคิดเห็นแบบสุดท้าย / ** ... * / ใช้สำหรับบันทึกโค้ดและระบุตำแหน่งได้หลายบรรทัด
ชนิดข้อมูล Java
ชนิดข้อมูลมีอยู่ใน Java เพื่อตั้งค่าตามอำเภอใจ ในคลาส Telefon เราได้สร้างสองวิธี ทั้งสองวิธีไม่มีพารามิเตอร์ แต่เมื่อให้ตัวอย่างของวิธี on (int time) พร้อมพารามิเตอร์เวลา มีการกล่าวถึงการส่งค่าไปยังวิธีการ ค่านี้ระบุเวลาที่ควรจะเปิดโทรศัพท์ ตัวระบุ int กำหนดประเภทของค่าเวลา Java 2 ME มีข้อมูลหกประเภท
ไบต์ - ค่าจำนวนเต็มขนาดเล็กจาก –128 ถึง 128;
ค่าจำนวนเต็มสั้น - สั้นในช่วงตั้งแต่ –32768 ถึง 32767;
int - มีค่าจำนวนเต็มตั้งแต่ –2147483648 ถึง 2147483647
long เป็นค่าจำนวนเต็มที่มีขนาดใหญ่มาก ตั้งแต่ –922337203685475808 ถึง 9223372036854775807
char คือค่าคงที่อักขระ Unicode ช่วงของรูปแบบนี้อยู่ระหว่าง 0 ถึง 65536 ซึ่งเท่ากับ 256 อักขระ อักขระประเภทนี้จะต้องเขียนด้วยเครื่องหมายคำพูดเดี่ยว เช่น: 'G';
บูลีน - ประเภทบูลีน มีเพียงสองค่า: เท็จ - เท็จ และ จริง - จริง ประเภทนี้มักใช้ในลูปซึ่งในภายหลัง แนวคิดนี้ง่ายมาก - หากคุณมีเงินอยู่ในกระเป๋า น่าจะเป็นเรื่องจริง และถ้าไม่ใช่ แสดงว่าเป็นเท็จ ดังนั้น ถ้ามีเงิน เราก็ไปที่ร้านเพื่อซื้อขนมปังหรือเบียร์ (ขีดเส้นใต้ว่าจำเป็น) ถ้าไม่มีเงิน เราก็อยู่บ้าน นั่นคือ เป็นค่าตรรกะที่ช่วยในการเลือกการดำเนินการเพิ่มเติมสำหรับโปรแกรมของคุณ
ในการประกาศค่าที่จำเป็น จะใช้รายการต่อไปนี้:
ทันเวลา; BigTime ยาว; คำถ่าน;
ต้องใช้ตัวดำเนินการอัฒภาคหลังรายการและวางไว้ที่ท้ายบรรทัด คุณสามารถรวมโฆษณาประเภทเดียวกันได้หลายรายการโดยคั่นด้วยเครื่องหมายจุลภาค:
Mt เวลา, เวลา 1, เวลา 2;
ตอนนี้มาปรับปรุงคลาส Telefon ของเราโดยเพิ่มค่าบางอย่างลงไป เราไม่ต้องการวิธีการ on () และ off () อีกต่อไป เราจะเพิ่มวิธีการใหม่ๆ ที่สามารถแก้ปัญหาบางอย่างได้จริงๆ
Class Telefon (// S - พื้นที่แสดงผล // w - display width // h - display height int w, h, S; // วิธีการคำนวณพื้นที่แสดงผล void Area () (S = w * h;))
ดังนั้นเราจึงมีตัวแปรสามตัว S, w และ h ซึ่งรับผิดชอบตามลำดับสำหรับพื้นที่ ความกว้าง และความสูงของจอแสดงผลเป็นพิกเซล วิธีการ Area () คำนวณพื้นที่ของหน้าจอโทรศัพท์เป็นพิกเซล การดำเนินการนั้นไร้ประโยชน์ แต่บ่งบอกถึงและเข้าใจง่ายมาก เนื้อความของวิธี Area () ได้รับมาเองและมีรูปแบบ S = w * h ในวิธีนี้เราเพียงแค่คูณความกว้างด้วยความสูงและกำหนดหรือตามที่พวกเขาพูดเก็บผลลัพธ์ไว้ในตัวแปร S ตัวแปรนี้จะมีค่าของพื้นที่แสดงผลของโทรศัพท์เครื่องนี้ ตอนนี้เราเข้าใกล้โอเปอเรเตอร์ของภาษา Java ด้วยความช่วยเหลือซึ่งคุณสามารถดำเนินการได้ทุกประเภท และเราจะพูดถึงในส่วนถัดไปของบทความชุดนี้
วัตถุประสงค์ คุณสมบัติ และประโยชน์ของ Eclipse
Eclipse เป็น IDE ที่ขยายได้ (Integrated Development Environment) IDE คือชุดเครื่องมือที่จัดระเบียบอย่างสะดวกซึ่งจำเป็นต่อการทำงานในโครงการซอฟต์แวร์
Eclipse เป็นแพลตฟอร์มสากลที่สามารถใช้ในการพัฒนาแอปพลิเคชันในภาษาการเขียนโปรแกรมใด ๆ (เช่น คุณสามารถใช้ Python หลังจากติดตั้งการเชื่อมต่อ Pydev () แต่ Java นั้นมาจาก Eclipse (ซึ่งก็คือเขียนใน Eclipse) .
คุณสมบัติที่สำคัญที่สุดของ Eclipse คือ:
- ข้ามแพลตฟอร์ม Eclipse ทำงานบนแพลตฟอร์มทั่วไปทั้งหมด: Windows, Linux และ MacOS X ที่สำคัญกว่านั้น ฟังก์ชันการทำงานจะเหมือนกันในแต่ละแพลตฟอร์มเหล่านี้
- ความเก่งกาจและการขยาย Eclipse มีความสามารถในการใช้เครื่องมือของบุคคลที่สามที่หลากหลาย
- การเปิดกว้างและบำเหน็จ Eclipse เป็นโปรเจ็กต์ OpenSource (เช่น its รหัสที่มามีให้สำหรับทุกคนและทุกคนสามารถเข้าร่วมการพัฒนาเครื่องมือนี้ได้) Eclipse มีชุมชนที่กระตือรือร้นทำงานอย่างต่อเนื่องเพื่อปรับปรุงโปรแกรมและขยายขีดความสามารถ
พื้นที่ทำงาน Eclipse
สิ่งแรกที่คุณจะเห็นเมื่อคุณเริ่ม Eclipse คือกล่องโต้ตอบที่ให้คุณเลือกได้ว่าจะให้พื้นที่ทำงานอยู่ที่ใด พื้นที่ทำงานคือไดเร็กทอรีที่จะบันทึกงานของคุณ
หลังจากเลือกพื้นที่ทำงานแล้ว หน้าเริ่มต้นจะปรากฏขึ้นบนหน้าจอ พร้อมคำแนะนำในการดูบทช่วยสอน ตัวอย่าง ฯลฯ เลือก Workbench แล้วคุณจะเข้าสู่หน้าต่าง สภาพแวดล้อมในการทำงาน (Workbench) ซึ่งงานต่อไปของคุณจะเกิดขึ้น
ส่วนประกอบหลักของเวิร์กสเปซคือมุมมอง เอดิเตอร์ และเปอร์สเปคทีฟ
ประสิทธิภาพเป็นส่วนเล็กๆ ภายในเวิร์กสเปซที่ใช้ในการนำทางผ่านหมวดหมู่ของอ็อบเจ็กต์ (เช่น ทรัพยากรหรือแพ็คเกจ) ตัวแก้ไขที่เปิดอยู่ และคุณสมบัติการแสดงของเอดิเตอร์ที่ใช้งานอยู่ ตัวอย่างเช่น มุมมองเนวิเกเตอร์จะแสดงโปรเจ็กต์และทรัพยากรอื่นๆ ในขณะที่มุมมองบุ๊กมาร์กจะแสดงบุ๊กมาร์กทั้งหมดใน Workbench พร้อมกับชื่อไฟล์ที่บุ๊กมาร์กเหล่านั้นเชื่อมโยงกัน รูปภาพแสดงมุมขวาบนของพื้นที่ทำงานโดยที่มุมมองเค้าร่างทำงานอยู่
การเปลี่ยนแปลงใดๆ ที่เกิดขึ้นกับมุมมองจะถูกบันทึกทันที
ส่วนประกอบภาพ Workbench อีกประเภทหนึ่ง - บรรณาธิการซึ่งใช้ในการดูและแก้ไขทรัพยากรบางอย่าง (เช่น รหัสโปรแกรม) เมื่อคุณเลือกทรัพยากร ตัวแก้ไขที่เหมาะสมจะปรากฏขึ้น ตัวอย่างเช่น เปิดเอกสารข้อความใดๆ (ที่มีนามสกุล .txt) โดยใช้คำสั่ง File -> Open File ... แล้วคุณจะเห็นโปรแกรมแก้ไขข้อความธรรมดาในตัว หากคุณพิมพ์บางอย่างในตัวแก้ไขนี้ เครื่องหมายดอกจันจะปรากฏบนแท็บที่มีการเขียนชื่อไฟล์ หมายความว่าตัวแก้ไขมีการเปลี่ยนแปลงที่ยังไม่ได้บันทึก พวกเขาจะถูกบันทึกไว้หากคุณกด Ctrl + S หรือเลือกคำสั่งไฟล์ -> บันทึก
มีมุมมองที่มีประโยชน์มากมายที่สามารถเพิ่มลงในหน้าต่างพื้นที่ทำงานด้วยคำสั่ง Window -> Show View อย่างไรก็ตาม แทนที่จะเพิ่มทีละรายการ จะสะดวกกว่าในการเปลี่ยนมุมมอง การฉายภาพ(หรือ ทัศนคติ) เป็นชุดของมุมมองและบรรณาธิการที่ได้รับการปรับแต่งเป็นพิเศษเพื่อให้งานสำเร็จลุล่วง หลังจากเรียกใช้งานใน Eclipse มุมมอง Java จะเปิดขึ้น ซึ่งกำหนดค่าไว้สำหรับการเขียนโปรแกรมจริง การฉายภาพดีบักมักใช้เพื่อดีบักโปรแกรม คุณสามารถเปลี่ยนการฉายภาพโดยใช้คำสั่ง Window -> Open Perspective ชื่อของโปรเจ็กต์ปัจจุบันจะแสดงที่มุมขวาบนของสภาพแวดล้อมการทำงาน (ดูรูป)
โปรแกรม Java ตัวแรก
ก่อนที่คุณจะเริ่มเขียนโปรแกรม คุณต้องสร้างโครงการที่ Eclipse จะจัดเก็บทรัพยากรทั้งหมดที่เกี่ยวข้องกับโปรแกรมของคุณ
ในการสร้างโครงการ ให้รันคำสั่ง File -> New -> Project ในหน้าต่างที่ปรากฏขึ้น ให้เลือก Java Project แล้วคลิก Next ระบุชื่อสำหรับโครงการของคุณ โปรดทราบว่าโฟลเดอร์ที่มีชื่อโครงการของคุณจะถูกสร้างขึ้นในไดเร็กทอรีที่คุณระบุเป็นพื้นที่ทำงาน (เว้นแต่คุณจะเปลี่ยนการตั้งค่าในหน้าต่างนี้ ซึ่งเราจะไม่ทำในครั้งแรก) คลิกปุ่มเสร็จสิ้น
โปรเจ็กต์ของคุณแสดงอยู่ในมุมมอง PackageExplorer ทางด้านซ้ายของเวิร์กสเปซ คุณสามารถลบได้ตลอดเวลาโดยคลิกที่ชื่อ คลิกขวาเมาส์และเลือกลบ หลังจากนั้น Eclipse จะถามว่าจะทำลายโฟลเดอร์ที่มีไฟล์โปรเจ็กต์พร้อมกันหรือไม่ (ถ้าจำเป็น คุณยังสามารถทำลายมันได้)
หากคุณยังไม่ได้ลบโปรเจ็กต์ คุณสามารถเพิ่มไฟล์และโฟลเดอร์ลงในโปรเจ็กต์ได้โดยใช้คำสั่งเมนูบริบท ใหม่ -> ไฟล์และใหม่ -> โฟลเดอร์ตามลำดับ หากโปรเจ็กต์มีขนาดใหญ่ ก็ต้องมีโครงสร้างโฟลเดอร์ที่ซ้อนกัน แต่ในกรณีของโปรเจ็กต์ Java สิ่งต่าง ๆ แตกต่างกันเล็กน้อย ประเด็นคือแฟรกเมนต์ของโปรแกรม Java ถูกจัดกลุ่มเป็น แพ็คเกจและสร้างโฟลเดอร์แยกต่างหากสำหรับแต่ละแพ็คเกจ แพ็คเกจถูกสร้างขึ้นโดยคำสั่ง New -> Package คุณต้องคิดชื่อแพ็คเกจด้วย ด้วยเหตุนี้ โฟลเดอร์ใหม่ที่มีชื่อนี้จะถูกสร้างขึ้นในโฟลเดอร์โครงการ คุณสามารถตรวจสอบ
คุณอาจพบว่าการเรียกดูทรัพยากรของโครงการง่ายขึ้นโดยใช้มุมมองเนวิเกเตอร์ เปิดด้วยคำสั่ง Window -> Show View คุณจะเห็นว่านอกเหนือจากไดเร็กทอรีโปรเจ็กต์และแพ็กเกจแล้ว Eclipse ได้สร้างไฟล์เสริมสองไฟล์ .classpath และ .project สามารถเปิดได้ง่ายในเครื่องมือแก้ไข แต่ตอนนี้ไม่ได้สนใจเราเป็นพิเศษ
โปรแกรม Java ประกอบด้วยอย่างน้อยหนึ่งรายการเสมอ ชั้นเรียน... คุณสามารถสร้างคลาสโดยใช้คำสั่ง New -> Class ใน เมนูบริบทมุมมองเนวิเกเตอร์ (หรือ Package Explorer ไม่สำคัญ) เมื่อสร้างคลาส คุณต้องเลือกแพ็คเกจที่จะใช้ (เลือกแพ็คเกจที่คุณเพิ่งสร้างขึ้น) และตั้งชื่อให้คลาสนั้น เป็นเรื่องปกติที่จะเริ่มต้นชื่อคลาสด้วยอักษรตัวพิมพ์ใหญ่ หากคุณไม่ปฏิบัติตามกฎเกณฑ์ที่ดีนี้ Eclipse จะออกคำเตือน แต่จะไม่มีอะไรเลวร้ายเกิดขึ้น
เพื่อจุดประสงค์ของเรา ให้เลือกช่องทำเครื่องหมายใต้ "คุณต้องการสร้างวิธีการใดในชั้นเรียนของคุณ" ทางเลือกตรงข้าม โมฆะคงที่สาธารณะหลัก (สตริง args)... เป็นผลให้เมธอด main () (ฟังก์ชัน) จะถูกสร้างขึ้นในเนื้อหาของคลาส Java ต้องการให้อย่างน้อยหนึ่งคลาสของโปรแกรมมีเมธอดที่มีส่วนหัวดังกล่าว เป็นผู้ที่จะถูกประหารชีวิตเมื่อเริ่มโปรแกรม
จากการกระทำของเรา ไฟล์ที่มีชื่อคลาสของเราและนามสกุล .java จะถูกสร้างขึ้นในโฟลเดอร์แพ็คเกจ Eclipse จะเปิดโปรแกรมแก้ไขโค้ดที่แสดงเนื้อหาของไฟล์นี้ มันจะเป็นดังนี้ (แน่นอนว่าชื่อแพ็คเกจและคลาสอาจแตกต่างกัน):
แพ็คเกจ mainPack; คลาสสาธารณะ MyClass (/ ** * @param args * / public static void main (String args) ())คำสั่งที่ประกอบเป็นเนื้อความของฟังก์ชันสามารถเขียนแทนการแสดงความคิดเห็นที่สร้างขึ้นโดยอัตโนมัติได้ // TODO stub วิธีสร้างอัตโนมัติ... เราจะเขียนคำสั่งเดียวที่จะพิมพ์ "สวัสดีชาวโลก!" แบบคลาสสิกไปที่หน้าจอ:
System.out.println ("สวัสดีชาวโลก!");
มันยังคงรันโปรแกรม ในการดำเนินการนี้ ให้รันคำสั่ง Run -> Run และรับกล่องโต้ตอบที่มีการตั้งค่าการเรียกใช้ที่ไม่สำคัญ ที่ด้านซ้ายของหน้าต่างนี้ ให้เลือก Java Application ( แอปพลิเคชัน Java). หลังจากครุ่นคิดเล็กน้อย Eclipse จะพบคลาสของเราที่มีเมธอด main () และเสนอให้เริ่มโปรแกรมจากมัน (ทางด้านขวาของหน้าต่าง บนแท็บ Main ชื่อของโปรเจ็กต์และคลาสของเราควรปรากฏขึ้น) นอกจากนี้ยังมีการเสนอแท็บเพิ่มเติมอีกสองสามแท็บเพื่อให้ความสนใจของโปรแกรมเมอร์ ตัวอย่างเช่นในข้อที่สอง - อาร์กิวเมนต์ - คุณจะได้รับแจ้งให้ป้อนพารามิเตอร์บรรทัดคำสั่ง (หากโปรแกรมได้รับการออกแบบให้เรียกจากบรรทัดคำสั่งพร้อมพารามิเตอร์) สำหรับโปรแกรมอย่างง่ายของเรา คุณไม่จำเป็นต้องระบุอย่างอื่น เพียงคลิกปุ่มเรียกใช้
จากการทำงานของโปรแกรม ข้อมูลจะถูกส่งออกไปยังคอนโซลที่เรียกว่า ในระบบปฏิบัติการ MS DOS หน้าจอมอนิเตอร์ทั้งหมดทำหน้าที่เป็นคอนโซล Eclipse เปิดมุมมอง Console ให้เรา ซึ่ง (หากทุกอย่างถูกต้อง) บรรทัด "สวัสดีชาวโลก!" คือผลลัพธ์ของโปรแกรมของเรา
ตอนนี้ ในการรันโปรแกรมอีกครั้ง (เช่น หากเราตัดสินใจที่จะทำการเปลี่ยนแปลงบางอย่างกับมันหรือต้องการแสดงให้ครูเห็น) คุณสามารถไปที่วิธีที่ง่ายกว่า - รันคำสั่ง Run -> Run Last Launched (เรียกใช้ แอปพลิเคชันก่อนหน้าอีกครั้ง) หรือเพียงแค่กด Ctrl + F11
พื้นฐานไวยากรณ์ Java
คำจำกัดความ
ตัวถูกดำเนินการคือค่าที่เกี่ยวข้องกับการดำเนินการ
เมธอด (ฟังก์ชัน) เป็นส่วนหนึ่งของโปรแกรมที่มีชื่อเป็นของตัวเอง ชื่อนี้สามารถใช้เป็นคำสั่งในโปรแกรมได้ (คำสั่งดังกล่าวเรียกว่าการเรียกเมธอด) เมื่อมีการเรียกเมธอด คำสั่งที่ประกอบด้วยจะถูกดำเนินการ วิธีการ คล้ายกับการดำเนินการ สามารถคืนค่าผลลัพธ์ได้
นิพจน์คือลำดับของการดำเนินการและการเรียกใช้เมธอดที่ดำเนินการในลำดับที่แน่นอน (ตามลำดับความสำคัญของการดำเนินการ โดยคำนึงถึงวงเล็บในบัญชี) ซึ่งให้ค่าบางอย่างระหว่างการคำนวณ
ตัวแปรคือชื่อพื้นที่ของหน่วยความจำคอมพิวเตอร์ซึ่งโปรแกรมสามารถจัดเก็บข้อมูลบางประเภทได้ (เรียกว่า ค่าตัวแปร) และเข้าถึงข้อมูลนี้โดยใช้ชื่อตัวแปร
แนวคิดของโปรแกรมและอัลกอริทึม (ซ้ำ)
นัดใด้ โปรแกรมคอมพิวเตอร์- การแปลงข้อมูลอินพุตเป็นข้อมูลเอาต์พุต อัลกอริธึมของโปรแกรมกำหนดวิธีการแปลงข้อมูลอินพุตเป็นข้อมูลเอาต์พุต
ข้อมูลที่ป้อนอาจมาจากแหล่งต่างๆ ในโครงการการศึกษา ข้อมูลนี้มักถูกป้อนในขณะที่โปรแกรมกำลังทำงานโดยใช้แป้นพิมพ์และเมาส์ ในโปรแกรมจริง สามารถรับได้จากไฟล์ ฐานข้อมูล เครือข่าย โดยตรงจากเซ็นเซอร์ต่างๆ เป็นต้น
ข้อมูลเอาต์พุต (ผลงานของโปรแกรม) มักแสดงบนหน้าจอ แต่ยังสามารถบันทึกลงในไฟล์หรือฐานข้อมูลที่ส่งไปยังเครือข่ายได้ โปรแกรมที่ฝังตัวจะสร้าง Escape Sequence พิเศษเป็นเอาต์พุตที่ทำให้อุปกรณ์ที่โปรแกรมเชื่อมโยงอยู่ดำเนินการบางอย่าง
การเริ่มต้นเขียนโปรแกรมต้องเข้าใจทันที:
- โปรแกรมนี้ใช้ทำอะไร (โดยทั่วไปแล้วใช้ทำอะไร)?
- โปรแกรมนี้มีข้อมูลอินพุตอะไรบ้าง (และมาจากไหน)
- ผลลัพธ์ของโปรแกรมนี้คืออะไร (และจะส่งไปที่ใด)
- อินพุตควรแปลงเป็นเอาต์พุต (อัลกอริทึม) อย่างไร นี่เป็นส่วนที่ยากที่สุดในความคิดของโปรแกรมเมอร์ แต่ถึงแม้จะไม่มีคำตอบสำหรับคำถามสามข้อก่อนหน้านี้ แต่ก็ไม่มีเหตุผลที่จะเริ่ม
เมื่อเขียนโปรแกรมอย่างง่าย คุณต้อง:
- รับข้อมูลเข้า
- ใช้อัลกอริทึมสำหรับการแปลงข้อมูลอินพุตเป็นเอาต์พุต
- ส่งออกผลงานของโปรแกรม (ข้อมูลขาออก): แสดง ส่งข้อมูลผ่านเครือข่าย ฯลฯ
เมื่อทำงานกับโครงการซอฟต์แวร์ที่ซับซ้อน จำเป็นต้องทำการวิเคราะห์โดยละเอียดเกี่ยวกับข้อกำหนดสำหรับโปรแกรม (ซึ่งอาจต้องใช้การสื่อสารกับลูกค้าเป็นจำนวนมาก) เพื่อดำเนินการออกแบบ (เพื่อกำหนดว่าโปรแกรมจะประกอบด้วยส่วนใด ว่าส่วนต่างๆ เหล่านี้จะโต้ตอบกันอย่างไร แสดงแง่มุมต่างๆ ของโครงสร้างและพฤติกรรมของโปรแกรมในรูปแบบของไดอะแกรม ฯลฯ) แต่ไม่ว่าในกรณีใด ให้เริ่มเขียนโปรแกรมโดยไม่เข้าใจข้อมูลอินพุตและเอาต์พุต และโดยไม่เข้าใจความหมายทั่วไปของอัลกอริธึม ไร้สาระ... และอย่างน้อยก็คิดในแง่ทั่วไปถึงแก่นแท้ของอัลกอริธึมโดยไม่รู้ข้อมูลขาเข้าและขาออก เป็นไปไม่ได้.
ดังนั้น ให้เริ่มการออกกำลังกายของคุณโดยกำหนดอินพุตและเอาต์พุตเสมอ หากคุณมีปัญหาใด ๆ ในเรื่องนี้ โปรดติดต่อครูของคุณ
วรรณกรรมในหัวข้อ:
การสร้างอัลกอริทึมพื้นฐาน (การทำซ้ำ)
ความสนใจ! ในขั้นตอนนี้ของการฝึกอบรม คุณควรมีความรู้ในหัวข้อนี้อยู่แล้วหากไม่มีและวัสดุสำหรับการทำซ้ำนั้นเข้าใจยากหรือไม่เพียงพอ คุณจะไม่รับมือกับงาน! เป็นเรื่องเร่งด่วนที่จะปรึกษาวรรณกรรมในหัวข้อนี้
ดังนั้น อัลกอริทึมคือลำดับของการกระทำเพื่อแปลงข้อมูลอินพุตเป็นเอาต์พุต
อัลกอริทึมสามารถเขียนได้สามวิธีหลัก:
ขั้นตอนแต่ละขั้นตอนของอัลกอริธึม (ไม่ว่าจะเขียนอย่างไร) จะเชื่อมโยงถึงกันโดยใช้โครงสร้างมาตรฐานสามแบบที่นำมาใช้ในภาษาโปรแกรมทั้งหมด:
การดำเนินการตามลำดับ ขั้นตอนจะดำเนินการทีละรายการ
การแตกแขนง. ขึ้นอยู่กับการปฏิบัติตามเงื่อนไขบางอย่าง (ในตัวอย่างที่พิจารณา มันคือ x> y?) ดำเนินการหนึ่งหรืออีกสาขาหนึ่งของโปรแกรม
รอบ ลำดับขั้นตอนของโปรแกรมดำเนินการหลายครั้ง อันที่จริง การวนซ้ำนั้นยึดตามการแตกแขนง (มีการตรวจสอบเงื่อนไขสำหรับการออกจากลูป) แต่ถ้าไม่เป็นไปตามเงื่อนไขนี้ การควบคุมจะถูกโอนไปยังจุดเริ่มต้นของลูป (กลับไปที่ขั้นตอนที่เสร็จสิ้นแล้ว)
พิจารณาปัญหา: แสดงเลขคู่ทั้งหมดที่น้อยกว่า 10 สำหรับปัญหานี้ คุณสามารถใช้อัลกอริทึมตามขั้นตอนตามลำดับและอัลกอริทึมที่ใช้การวนซ้ำ ไดอะแกรมสำหรับทั้งสองตัวเลือกจะแสดงในรูป:
แผนภาพแรกดูชัดเจนขึ้น แต่ในกรณีที่ไม่จำเป็นต้องแสดงตัวเลข 5 ตัว แต่เป็น 100 แผนภาพ (และโปรแกรมที่สอดคล้องกับอัลกอริธึมนี้) จะเพิ่มขึ้น 20 เท่า และในโปรแกรมที่ตรงกับอัลกอริธึมที่สองเท่านั้น ที่เดียวจะเปลี่ยน: 10 จะเปลี่ยนเป็น 100 นั่นคือเหตุผลที่การกระทำซ้ำ ๆ ได้รับการออกแบบในรูปแบบของวัฏจักรแม้ว่าในหลาย ๆ กรณีสามารถจ่ายได้
ข้อควรจำ: อัลกอริทึมควรสร้างจากโครงสร้างที่มีชื่อเพียงสามชื่อเท่านั้น!
วรรณกรรมในหัวข้อ:
1. หนังสือเรียนวิชาวิทยาการคอมพิวเตอร์
พื้นฐานของพื้นฐานไวยากรณ์ Java
- ภาษา Java แยกความแตกต่างระหว่างตัวพิมพ์ใหญ่และตัวพิมพ์เล็กซึ่งหมายความว่าควรเขียนชื่อของฟังก์ชันและคำหลักทั้งหมดตามที่ปรากฏในตัวอย่างและหนังสืออ้างอิง
- ทุกคำสั่ง (ตัวดำเนินการ) ในภาษา Java ต้องลงท้ายด้วยอัฒภาค
- โปรแกรม Java ประกอบด้วยอย่างน้อยหนึ่งโปรแกรม ชั้นเรียน... ควรวางส่วนการทำงานทั้งหมดของโปรแกรม (เช่น ทำหน้าที่อะไร) ลงใน วิธีการบางชั้นเรียน (คลาสและเมธอด ตามแนวคิดการเขียนโปรแกรมเชิงวัตถุ จะครอบคลุมในบทที่ 3 ไวยากรณ์ของคลาสจะครอบคลุมด้วย ในแบบฝึกหัดแรก ให้ใช้คลาสที่ Eclipse สร้างโดยค่าเริ่มต้น)
- ชั้นเรียนถูกจัดกลุ่มเป็นแพ็คเกจ
- อย่างน้อยหนึ่งคลาสต้องมีเมธอด main () เหมือนกับในตัวอย่างที่เราพิจารณา (ในตอนแรก ไม่จำเป็นต้องเข้าใจหรือพยายามจำการสะกดที่ถูกต้องของวิธีนี้ - Eclipse จะสร้างทุกอย่างเองหากคุณทำเครื่องหมายในช่องที่จำเป็น) วิธีนี้จะถูกดำเนินการก่อน
ในกรณีที่ง่ายที่สุด โปรแกรมสามารถประกอบด้วยหนึ่งแพ็คเกจ (หรือไม่มีเลย) หนึ่งคลาสภายในแพ็คเกจ และเมธอด main () เดียวภายในคลาส คำสั่งโปรแกรมจะถูกเขียนระหว่างบรรทัด
โมฆะคงที่สาธารณะหลัก (สตริง args) (และวงเล็บปีกกาปิด) แสดงจุดสิ้นสุดของเนื้อหาวิธีการ ควรปฏิบัติตามแนวทางนี้เมื่อทำแบบฝึกหัดที่ง่ายที่สุด
ความคิดเห็น (1)
ความคิดเห็นเป็นป้ายกำกับอธิบายที่โปรแกรมเมอร์ใช้เพื่อปรับปรุงความเข้าใจโค้ด เมื่อรวบรวมโปรแกรม ความคิดเห็นจะถูกละเว้น ดังนั้นจึงสามารถเขียนอะไรก็ได้ สิ่งสำคัญคือการแสดงว่าคำจารึกนี้เป็นคำอธิบายและไม่ควรตีความว่าเป็นคำสั่งของโปรแกรม ใน Java ทำได้ด้วยวิธีใดวิธีหนึ่งต่อไปนี้:
- เครื่องหมายทับสองอัน // ถูกแทรก จากนี้ไปจนจบบรรทัด คุณสามารถเขียนอะไรก็ได้ที่คุณต้องการ - Java จะถือว่ามันเป็นความคิดเห็น
- ที่จุดเริ่มต้นของความคิดเห็น อักขระ / * จะถูกวาง และในตอนท้าย - * / ในกรณีนี้ ความคิดเห็นสามารถขยายได้หลายบรรทัด
- ไฮไลท์ ความคิดเห็นสำหรับเอกสารที่อยู่ระหว่างเครื่องหมาย / ** และ * / การใช้งานของพวกเขาจะกล่าวถึงในภายหลัง
กฎการเขียนตามตัวอักษร
เกี่ยวกับรูปแบบการเขียนต่างๆ
จำนวนเต็ม (ตัวอักษรจำนวนเต็ม) ใน Java สามารถเขียนได้ตามปกติในรูปแบบทศนิยม: 12345, +4, -11
นอกจากนี้ คุณสามารถเขียนจำนวนเต็มในรูปแบบฐานแปด โดยเริ่มจากศูนย์ (0777, -056) และในรูปแบบเลขฐานสิบหก โดยเริ่มจากศูนย์และอักษรละติน x (0xFFFF, 0x14, 0xA1BC)
ตัวอักษรที่ถูกต้องเขียนด้วยเครื่องหมายทศนิยม ส่วนจำนวนเต็มแยกออกจากจุดทศนิยม
สามารถเขียนจำนวนจริงได้ จุดลอยตัวตัวอย่างเช่น: 5.4e19, 17E-11, -123e + 4 ส่วนของตัวเลขที่อยู่ก่อนตัวอักษร e เรียกว่า mantissa และส่วนที่อยู่หลังตัวอักษร e เรียกว่า order สัญกรณ์หมายถึงสิ่งต่อไปนี้: คุณต้องเพิ่ม 10 ยกกำลังของคำสั่งและคูณด้วยแมนทิสซา บางครั้งการเขียน 1e-9 จะสะดวกกว่า 0.000000001
อักขระตัวเดียวเขียนด้วยเครื่องหมายอะพอสทรอฟี เช่น "a", "D", "@"
มีอักขระพิเศษและอักขระควบคุมบางตัวที่เขียนโดยใช้ลำดับหลีกพิเศษ รายการที่พบบ่อยที่สุดแสดงอยู่ในตาราง:
ลำดับการหลบหนียังอยู่ในเครื่องหมายอะพอสทรอฟี
บรรทัดแรกของตารางระบุว่าสามารถระบุอักขระใดก็ได้โดยใช้รหัส (ด้วยการเข้ารหัสทศนิยมตั้งแต่ 0 ถึง 255) โดยการเขียนโค้ดนี้ในระบบเลขฐานแปด ตัวอย่างเช่น ตัวอักษร "g" ในการเข้ารหัส CP1251 จะถูกเขียนด้วยลำดับหลีก "\ 346"
หากจำเป็น คุณสามารถระบุรหัสของอักขระใดก็ได้ใน การเข้ารหัส Unicode- หลังแบ็กสแลชและตัวอักษรละติน u - เป็นอักขระฐานสิบหกสี่ตัว ตัวอย่างเช่น "\ u0055" คือตัวอักษร U
สตริงอักขระอยู่ในเครื่องหมายคำพูด เครื่องหมายอัญประกาศเปิดและปิดต้องอยู่ในบรรทัดเดียวกันของรหัส
สำหรับสตริง จะมีการกำหนดการดำเนินการต่อ + ซึ่งช่วยให้คุณสามารถรวบรวมสตริงต่างๆ ให้เป็นหนึ่งเดียว
หากค่าคงที่สตริงยาวเกินไปและมองเห็นได้ไม่ดีในโค้ดโปรแกรมเมื่อเขียนเป็นบรรทัดเดียว คุณสามารถเขียนเป็นหลายบรรทัด โดยเชื่อมเข้าด้วยกันโดยใช้การดำเนินการต่อสตริง ตัวอย่างเช่น:
"นี่คือค่าคงที่สตริงที่ยาวมากที่เขียน" + "ในสองบรรทัดของแหล่งที่มา"อักขระควบคุมและรหัสถูกเขียนภายในสตริงในลักษณะเดียวกับ แบ็กสแลช(แต่ไม่มีอะพอสทรอฟี)
ตัวอักษรบูลีนเป็นจริงและเท็จ
ตัวระบุ
เกี่ยวกับกฎของสไตล์ที่ดี
เมื่อเขียนโปรแกรม จำเป็นต้องมีตัวระบุสำหรับการตั้งชื่ออ็อบเจ็กต์อย่างต่อเนื่อง
ตัวระบุสามารถประกอบด้วยตัวอักษร ตัวเลข ขีดล่าง _ และเครื่องหมายดอลลาร์ $ (ไม่แนะนำให้ใช้ตัวหลัง Java ใช้เพื่อความต้องการของตนเอง) ตัวระบุไม่สามารถเริ่มต้นด้วยตัวเลขได้ คีย์เวิร์ด Java (หรือตามตัวอักษร ถูกผิดและ โมฆะ).
ตามที่ระบุไว้ข้างต้น ภาษา Java แยกความแตกต่างระหว่างตัวอักษรธรรมดาและตัวพิมพ์เล็ก... ซึ่งหมายความว่า myAge, myage และ MyAge เป็นชื่อของอ็อบเจ็กต์ที่แตกต่างกันโดยสิ้นเชิง ระวัง: ข้อผิดพลาดในการลงทะเบียนเป็นกรณีทั่วไปมาก!
ชื่อคลาสจะขึ้นต้นด้วยอักษรตัวพิมพ์ใหญ่ หากชื่อประกอบด้วยหลายคำ แต่ละคำจะขึ้นต้นด้วยอักษรตัวพิมพ์ใหญ่ ตัวอย่างเช่น: MyClass, หนังสือ
ชื่อเมธอดและตัวแปรขึ้นต้นด้วยตัวพิมพ์เล็ก (ตัวพิมพ์เล็ก) ถ้าชื่อมีหลายคำ คำถัดไปแต่ละคำจะขึ้นต้นด้วยตัวพิมพ์ใหญ่ ตัวอย่างเช่น myVar, x, y, newBigCounter
ชื่อคงที่เขียนเต็ม อักษรพิมพ์ใหญ่; ถ้าชื่อมีหลายคำ จะมีการขีดเส้นใต้ระหว่างคำเหล่านั้น ตัวอย่างเช่น PI COUNT_OF_MONTHS
มีประโยชน์มากมายในการใช้แนวทางเหล่านี้ หนึ่งในนั้นคือ คุณจะรู้วิธีวางอักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็กอย่างชัดเจนเมื่อใช้ standard ไลบรารี Javaซึ่งผู้พัฒนาปฏิบัติตามคำแนะนำ
ชนิดข้อมูล
เกี่ยวกับประเภทข้อมูล Java
ประเภท int มักใช้ในการเก็บจำนวนเต็มใน Java
โดยทั่วไป มีสี่ประเภทจำนวนเต็มในภาษา Java: ไบต์ สั้น int ยาว พวกเขาแตกต่างกันในจำนวนหน่วยความจำที่จะจัดสรรสำหรับตัวแปรและดังนั้นในช่วงของค่าที่สามารถเก็บไว้ในตัวแปรนี้ ประเภท int ที่ใช้บ่อยที่สุดมีหน่วยความจำ 4 ไบต์และเหมาะสำหรับการจัดเก็บตัวเลขตั้งแต่ -2147483648 ถึง 2147483647 ประเภทไบต์ใช้หน่วยความจำน้อยที่สุดและเหมาะสำหรับการทำงานกับตัวเลขขนาดเล็ก (ตั้งแต่ -128 ถึง 127) ประเภทสั้นและยาวคือ 2 และ 8 ไบต์ตามลำดับ
ประเภทคู่เหมาะสำหรับจำนวนจริง
ตัวเลขจริง (ของจริง) (หรือตัวเลขทศนิยม) มีสองประเภท: ทศนิยมและสองเท่า ประเภท float ใช้หน่วยความจำสูงสุด 4 ไบต์และไม่ได้ให้ความแม่นยำในระดับสูงเมื่อต้องจัดการกับตัวเลขที่มีขนาดใหญ่มากหรือน้อยมาก ขอแนะนำให้ใช้เมื่อต้องการเศษส่วน แต่ไม่จำเป็นต้องใช้ความแม่นยำสูง (เช่นสำหรับการวัดระยะทางเป็นเมตร แต่คำนึงถึงเซนติเมตรและมิลลิเมตรหรือการวัดราคาในรูเบิลโดยคำนึงถึง kopecks) หากต้องการการคำนวณที่แม่นยำยิ่งขึ้น ขอแนะนำให้ใช้ค่าของประเภทคู่ (เช่น ตัวแปรดังกล่าวสามารถเก็บค่าของไซน์ของมุม)
ตัวอักษรที่ถูกต้อง เช่น 5.3, 8.0, 2e-3 ถูกพิจารณาโดย Java ว่าเป็นสองเท่า หากจะใช้เป็นแบบลอยตัวในโปรแกรม พวกเขาจะต้องลงท้ายด้วยตัวอักษร f: 5.3f, 8.0f, 2e-3f
ถ่านชนิดที่ใช้เก็บอักขระตัวเดียว Java ถือว่าเป็นประเภทจำนวนเต็ม (เนื่องจากแต่ละอักขระถูกระบุด้วยรหัส Unicode ของตัวเอง) ดังนั้นการดำเนินการจำนวนเต็มทั้งหมดจึงนำไปใช้กับ char
ค่าบูลีน (จริงหรือเท็จ) จะแสดงด้วยประเภทบูลีน
ดังนั้น Java กำหนดแปดประเภทง่าย ๆ ซึ่งนำเสนอคุณสมบัติใน ตาราง:
การประกาศตัวแปร
ใน Java (เช่นเดียวกับในภาษาอื่น ๆ มากมาย) คุณต้องอธิบายก่อนใช้งาน ในการอธิบายตัวแปรคือการตั้งชื่อและกำหนดประเภทของตัวแปร
เมื่อประกาศตัวแปร ประเภทจะถูกระบุก่อน (ซึ่งอาจเป็นหนึ่งในประเภทอย่างง่าย ชื่อของคลาสหรืออินเทอร์เฟซ) จากนั้นจึงระบุชื่อของตัวแปร ถ้าต้องการตัวแปร เริ่มต้น(กำหนดค่าเริ่มต้น) ค่าเริ่มต้นจะถูกระบุหลังชื่อผ่านเครื่องหมายเท่ากับ สามารถประกาศตัวแปรประเภทเดียวกันอีกหลายๆ ตัวโดยคั่นด้วยเครื่องหมายจุลภาค
ตัวอย่างการประกาศตัวแปร:
int x; // ประกาศตัวแปรจำนวนเต็ม xสองเท่า, ข; // ประกาศตัวแปรจริงสองตัว a และ bตัวอักษรถ่าน = "Z"; // ประกาศตัวแปรตัวอักษร เริ่มต้นด้วยค่าเริ่มต้นของ "Z"บูลีน b1 = จริง, b2, b3 = เท็จ; // ประกาศตัวแปรบูลีนสามตัว ตัวแรกจะเป็นจริง ตัวสุดท้ายจะเป็นเท็จการใช้งานภาษาพื้นฐาน
ตัวแปรและสามารถมีส่วนร่วมได้ (ซึ่งในทางกลับกันก็สามารถสร้างตัวแปรที่ซับซ้อนได้) ลองพิจารณาการดำเนินการที่ง่ายที่สุดของภาษา Java
การดำเนินการทางคณิตศาสตร์
การดำเนินการเปรียบเทียบ ผลลัพธ์คือค่าบูลีน: จริงหรือเท็จ
การดำเนินการเชิงตรรกะ
เกี่ยวกับการทำงานของจาวา
&& และ || ต่างกันตรงที่ค่าของวินาทีนั้นไม่จำเป็นต้องคำนวณ ตัวอย่างเช่น && ประเมินค่าของตัวถูกดำเนินการแรก และถ้าเป็นเท็จ จะส่งคืนค่าเท็จทันที ในขณะที่ || คืนค่า จริง ทันทีหากเห็นว่าตัวถูกดำเนินการแรกเป็นจริง Java มีการดำเนินการที่คล้ายกัน & และ | พวกเขาประเมินค่าของตัวถูกดำเนินการทั้งสองก่อนดำเนินการกับตัวถูกดำเนินการ
กะการทำงาน
(ทำงานกับการแสดงบิตของตัวถูกดำเนินการแรก)
การดำเนินการระดับบิต
(ทำงานกับการแสดงบิตของตัวถูกดำเนินการ)
การดำเนินการ?:
Operation ?: ternary นั่นคือมีตัวถูกดำเนินการสามตัว ตัวถูกดำเนินการแรกคือเงื่อนไข นิพจน์บูลีน ตัวถูกดำเนินการที่สองและสามคือนิพจน์ประเภทอื่น การดำเนินการทำงานดังนี้: ถ้าเงื่อนไขเป็นจริง จะส่งกลับตัวถูกดำเนินการที่สองเป็นผล และถ้าเป็นเท็จ ก็จะคืนค่าตัวถูกดำเนินการที่สาม
ตัวอย่างเช่น นิพจน์ (5> 3)? 7 + 1: 2*2 จะมีค่าเป็น 8 แต่นิพจน์ (5 == 3)? 7 + 1: 2 * 2 - ค่า 4 สัญกรณ์นี้ดูไม่ค่อยสื่อความหมายนัก แต่โปรแกรมเมอร์มักใช้เพื่อย่อโค้ดของตน ดังนั้น แทนที่จะเป็นลำดับของคำสั่ง:
ถ้า (x> 0) y = 45 + a * 2; // หากกล่าวถึงคำสั่งด้านล่างอย่างอื่น y = 45 - b * 3;คุณสามารถเขียน:
Y = 45 + ((x> 0)? A * 2: -b * 3);
ผู้ปฏิบัติงานที่ได้รับมอบหมาย
หลังจากอธิบายตัวแปรแล้ว คุณสามารถทำงานกับตัวแปรนั้นในโปรแกรมได้ โดยเฉพาะอย่างยิ่งสามารถกำหนดค่าประเภทที่เหมาะสมได้ จากนั้น ในอนาคต เมื่อใช้ตัวแปรนี้ในนิพจน์ใดๆ ค่าปัจจุบันนี้จะถูกแทนที่โดยอัตโนมัติ
ค่านี้เชื่อมโยงกับตัวแปรโดยใช้การมอบหมาย ในภาษา Java เขียนด้วยเครื่องหมายเท่ากับอย่างง่าย:
ตัวแปร = นิพจน์;
ทางด้านซ้ายของตัวดำเนินการกำหนดจะเป็นตัวแปรเสมอ ทางด้านขวาจะต้องตรงกับตัวแปรตามประเภท อาจเป็นแบบง่ายๆ (เช่น ตัวเลขหรือสัญลักษณ์):
X = 7; // ตัวแปร x ถูกกำหนดเป็นค่า 7จดหมาย = "Q"; // ตัวอักษรถูกกำหนดเป็น "Q"
โดยทั่วไป นิพจน์คือสิ่งที่สามารถคำนวณได้ (เช่น ผลลัพธ์ของการดำเนินการทางคณิตศาสตร์หรือผลลัพธ์ที่ส่งคืนโดยวิธีการบางอย่าง):
A = 7.5 + 2.4; // ตัวแปร a ถูกกำหนด 9.9 อันเป็นผลมาจากการคำนวณ
นอกเหนือจากตัวอักษรแล้ว ตัวแปรอื่นๆ สามารถมีส่วนร่วมในนิพจน์ได้ มูลค่าปัจจุบันของพวกเขาถูกแทนที่สำหรับพวกเขา อันเป็นผลมาจากคำสั่ง:
B = a + 1;
ตัวแปร b จะถูกตั้งค่าเป็น 10.9
ดังนั้น ตัวดำเนินการมอบหมายงานจึงทำงานดังนี้ ขั้นแรก ค่าของนิพจน์ทางด้านขวาจะถูกคำนวณ จากนั้นผลลัพธ์จะถูกกำหนดให้กับตัวแปรที่ระบุทางด้านซ้าย แม้แต่สถานการณ์ต่อไปนี้ก็เป็นไปได้:
X = x + 4;
คำสั่งนี้จะเพิ่มค่าปัจจุบันของตัวแปรจำนวนเต็ม x ขึ้น 4
และคำสั่งต่อไปนี้เขียนอย่างไม่ถูกต้องและจะไม่ทำงาน:
5 = x + 7; // ควรมีตัวแปรทางด้านซ้าย x + 3 = 14; // ควรมีตัวแปรเพียงตัวเดียวทางด้านซ้าย x = 4.5; // ตัวแปร x รับได้เฉพาะค่าจำนวนเต็ม
Eclipse จะพยายามระบุข้อผิดพลาดในบรรทัดเหล่านี้ก่อนเรียกใช้โปรแกรมโดยวางสัญญาณเตือนไว้ที่ขอบของโปรแกรมแก้ไขโค้ด คุณสามารถดูว่าเขาทำได้อย่างไร
เกี่ยวกับการหล่อแบบ
เมื่อตัวแปรประเภทหนึ่งถูกกำหนดเป็นค่าของอีกประเภทหนึ่ง จะใช้ค่านั้น หล่อ (แปลง) ประเภท... สำหรับประเภทตัวเลข (byte, short, int, long, float, double, char) จะเกิดขึ้นโดยอัตโนมัติหากประเภทของตัวแปรที่เปลี่ยนแปลงสามารถ "รองรับ" ค่าของประเภทอื่นได้
ตัวอย่างเช่น หากตัวแปรประเภท int ถูกกำหนดเป็นค่าประเภทไบต์ การแปลงจากชนิดไบต์เป็นชนิด int จะเกิดขึ้นโดยอัตโนมัติ ในทำนองเดียวกัน แบบทุ่นสามารถหล่อเป็นแบบดับเบิ้ลได้ เป็นต้น
หากคุณพยายามกำหนดตัวแปรที่มีประเภทที่แม่นยำน้อยกว่า (เช่น ไบต์) ให้กับค่าประเภทที่แม่นยำยิ่งขึ้น (เช่น int) คอมไพเลอร์จะสร้างข้อความแสดงข้อผิดพลาด
สำหรับการหล่อแบบ คุณสามารถใช้ ตัวดำเนินการนักแสดง- ก่อนนิพจน์ที่เราต้องการทำการแปลงประเภท วงเล็บจะถูกวางพร้อมกับประเภทที่จะทำการแปลงภายในวงเล็บ เมื่อทำการหล่อประเภทจำนวนเต็มที่มีความแม่นยำสูงกว่าเป็นประเภทจำนวนเต็มที่มีความแม่นยำต่ำกว่า การแบ่งแบบโมดูโลสามารถทำได้โดยช่วงที่อนุญาตของประเภทที่ทำการหล่อ และเมื่อทำการหล่อนิพจน์แบบคู่ไปยังนิพจน์แบบลอย ความแม่นยำของนิพจน์จะ จะลดลง
ยาว j = (ยาว) 1.0; // ใช้ตัวดำเนินการแคสต์เพื่อลอง, j = 1ถ่าน ch = (ถ่าน) 1001; // ใช้ตัวดำเนินการ cast to char ch = "d"ไบต์ b2 = (ไบต์) (100); // ใช้ตัวดำเนินการ cast จาก int เป็น byte, b2 = 100ไบต์ b3 = (ไบต์) (100 * 2); //ความสนใจ! การแบ่งโมดูโลเกิดขึ้น b3 = -56ข้อผิดพลาดประเภทไม่ตรงกันมักเกิดขึ้นกับตัวอักษรที่ถูกต้อง ตัวอย่างเช่น คุณไม่สามารถดำเนินการมอบหมาย a = 7.5 + 2.4; ถ้าตัวแปร a เป็นประเภท float เนื่องจากตัวอักษร 7.5 และ 2.4 ถือเป็นประเภท double เพื่อหลีกเลี่ยงข้อผิดพลาด จำเป็นต้องใช้ typecasting:
A = (ลอย) (7.5 + 2.4);
หรือเพื่อระบุว่าตัวอักษรนั้นลอยอยู่ด้วย:
A = 7.5f + 2.4f; // นี่เป็นคำสั่งที่ถูกต้องเช่นกัน
การดำเนินการไบนารีเกือบทุกครั้งมีตัวดำเนินการกำหนดประเภทของตัวเอง ตัวอย่างเช่น สำหรับการดำเนินการบวก + มีโอเปอเรเตอร์การกำหนดเอกพจน์ + = ซึ่งเพิ่มค่าของตัวถูกดำเนินการตามจำนวนที่กำหนด:
X + = 8; // เหมือนกับ x = x + 8 (x เพิ่มขึ้น 8)
ในทำนองเดียวกันสำหรับการดำเนินการอื่นๆ: ตัวดำเนินการ * =, - =, / =,% =, & = ^ = เป็นต้น
X * = 3; // เหมือนกับ x = x * 3 (x เพิ่มขึ้น 3 เท่า) b1 ^ = b2; // เหมือนกับ b1 = b1 ^ b2
แบบฝึกหัด 1
ประกาศตัวแปรจำนวนเต็มสองตัวกำหนดค่าใด ๆ ให้กับพวกมัน พิมพ์ผลรวมและผลิตภัณฑ์
แจ้ง:คุณสามารถใช้โปรเจ็กต์ที่สร้างไว้แล้วใน Eclipse โดยวาง คำสั่งที่จำเป็นหลังจากคำสั่งให้ส่งออกบรรทัด "สวัสดีชาวโลก!" หรือแทนมัน
ตัวดำเนินการเพิ่มและลดค่า
เกี่ยวกับตัวดำเนินการเพิ่มและลดค่า
ตัวดำเนินการเพิ่มและลด ++ และ –– เพิ่มและลดค่าของตัวถูกดำเนินการทีละหนึ่ง สะดวกกว่ามากในการใช้คำสั่ง x ++; แทนคำสั่ง x = x + 1;
ตัวดำเนินการ increment และ decrement ยังคืนค่าอีกด้วย ซึ่งหมายความว่าการดำเนินการตามคำสั่งนั้นถูกกฎหมาย
Y = 7 * x ++;
เป็นผลให้ตัวแปร x เพิ่มขึ้น 1 และตัวแปร y จะใช้ค่าเจ็ดเท่าของค่าเดิมของ x คุณยังสามารถเรียกใช้คำสั่งนี้:
Y = 7 * ++ x;
เป็นผลให้ตัวแปร x เพิ่มขึ้น 1 และตัวแปร y จะใช้ค่าเจ็ดเท่าของค่าใหม่ของ x
เงื่อนไข if คำสั่ง
รูปแบบที่ง่ายที่สุดของสัญกรณ์ ตัวดำเนินการตามเงื่อนไขดูเหมือนกับ:
if (เงื่อนไข) คำสั่งเงื่อนไขในวงเล็บคือนิพจน์บูลีน เช่น สามารถเป็นจริงหรือเท็จ หากเงื่อนไขเป็นจริง คำสั่งจะถูกดำเนินการ มิฉะนั้น จะไม่มีอะไรเกิดขึ้น ตัวอย่างเช่น:
if (x // ถ้าค่าของตัวแปร x น้อยกว่า 17 ให้กำหนด x เป็น 17หากจำเป็นในกรณีที่เงื่อนไขเป็นเท็จ คำสั่งอื่นจะถูกดำเนินการ ให้ใช้รูปแบบเพิ่มเติมของคำสั่ง if:
ถ้า (เงื่อนไข) command1 else command2เกี่ยวกับสิ่งอื่นถ้าสร้าง
ในตัวอย่างข้างต้น เราอาจต้องกำหนดตัวแปร x เป็น 5 ถ้าเงื่อนไข x ไม่ถูกดำเนินการ (ทำไมเราต้องการมัน คำถามอื่น)
ถ้า (x อื่น x = 5;หากจำเป็นต้องใช้เงื่อนไขที่ไม่เกิดร่วมกันหลายประการ สามารถเขียนได้ดังนี้:
if (condition1) command1 else if (condition2) command2 else if (เงื่อนไข3) command3 ... else commandNแบบฝึกหัดที่ 2
ประกาศตัวแปรจำนวนเต็มสองตัวกำหนดค่าใด ๆ ให้กับพวกมัน ใช้คำสั่ง if เพื่อค้นหาและส่งออกค่าสูงสุด
แจ้ง:อัลกอริธึมสำหรับการค้นหาค่าสูงสุดได้รับการพิจารณาในขณะที่ทำซ้ำการสร้างพื้นฐานของอัลกอริธึม
คำสั่งผสม
คำสั่งภาษา Java หลายคำสั่งสามารถรวมกันเป็นคำสั่งผสมเดียวโดยใช้เครื่องหมายปีกกา () ตัวอย่างเช่น คุณสามารถเขียน:
(a = 12; ตัวอักษร = "D";)
คำสั่งผสมสามารถใช้ได้ทุกที่ที่มีคำสั่งปกติ ตัวอย่างเช่น ในคำสั่ง if หากจำเป็นต้องดำเนินการหลายอย่างเมื่อตรงตามเงื่อนไข:
ถ้า (x "S";) อื่น ๆ (x = 5;)โครงสร้างเหล็กดัดโค้งเรียกอีกอย่างว่า บล็อกของคำสั่งและเหล็กดัดงอคือ ปิดกั้นขอบเขต.
โปรดทราบว่าสัญกรณ์ที่ใช้ในตัวอย่าง (เมื่อขอบเขตของบล็อกถูกวางบนบรรทัดที่แยกจากกัน และเนื้อหาของบล็อกถูกเขียนเยื้องจากขอบเขตของบล็อก) เป็นทางเลือก นี่เป็นเพียงกฎของรูปแบบที่ทำให้โปรแกรมเข้าใจได้ง่ายขึ้นและไม่สับสนกับเครื่องหมายปีกกา ซึ่งมักใช้ในโปรแกรม Java
เกี่ยวกับคำสั่งการเลือกสวิตช์
คำสั่งสลับการเลือก
บ่อยครั้งที่การเลือกคำสั่งที่จะดำเนินการขึ้นอยู่กับค่าของตัวแปรบางตัว (หรือนิพจน์) ตัวอย่างเช่น ผู้ใช้จะได้รับแจ้งให้ป้อนเครื่องหมายการดำเนินการ และจำเป็นต้องแสดงผลการบวก การลบ ฯลฯ ทั้งนี้ขึ้นอยู่กับอักขระที่ป้อน หรือหากป้อนอักขระไม่ถูกต้อง ข้อความแสดงข้อผิดพลาด ในกรณีนี้ สะดวกในการใช้คำสั่งการเลือกสวิตช์ ซึ่งมีสัญกรณ์ต่อไปนี้:
สวิตช์ (นิพจน์) ( case value1: ลำดับคำสั่ง 1 break; case value2: ลำดับคำสั่ง 2 break; ... ค่าเริ่มต้น: ลำดับคำสั่งเริ่มต้น)ค่า 1 ค่า 2 ฯลฯ คือค่าคงที่หรือนิพจน์ที่เกี่ยวข้องกับค่าคงที่เท่านั้น นิพจน์ในวงเล็บหลัง คำสำคัญสวิตช์สามารถมีตัวแปรได้ นิพจน์นี้ได้รับการประเมิน จากนั้นผลลัพธ์จะถูกจับคู่กับค่าใดค่าหนึ่งหลังคีย์เวิร์ด case หากพบการจับคู่ดังกล่าว ลำดับทั้งหมดของคำสั่งที่อยู่ระหว่างโคลอนและคำสั่ง break ที่ใกล้ที่สุดจะถูกดำเนินการ หากไม่พบรายการที่ตรงกัน ลำดับเริ่มต้นของคำสั่งที่ต่อจากคีย์เวิร์ดเริ่มต้นจะถูกดำเนินการ ตัวอย่างเช่น:
ตัวดำเนินการถ่าน; // ป้ายการทำงาน จะถูกเลือกโดยผู้ใช้ ... // สมมุติว่าตอนนี้ผู้ใช้ได้เลือกเครื่องหมายแล้วสวิตช์ (oper) (ตัวพิมพ์ "+": System.out.println (a + b); break; case "-": System.out.println (a - b); break; case "*": System.out println (a * b); แตก; ค่าเริ่มต้น: System.out.println ( "สัญญาณธุรกรรมไม่ถูกต้อง"); }คุณสามารถละเว้นส่วนเริ่มต้น ในกรณีนี้ หากไม่พบรายการที่ตรงกัน จะไม่มีการดำเนินการคำสั่งใดๆ
ในขณะที่คำสั่งวนรอบ
while loop มีรูปแบบดังนี้:
ในขณะที่ (เงื่อนไข) คำสั่งหากเงื่อนไขวงเล็บ (ซึ่งเป็นนิพจน์บูลีน) เป็นจริง คำสั่งจะถูกดำเนินการ - ห่วงร่างกาย(อาจเป็นคำสั่งธรรมดาหรือลำดับของคำสั่งในวงเล็บปีกกา) หลังจากนั้นโปรแกรมจะกลับไปดำเนินการตามคำสั่งนี้และทำซ้ำจนกว่าเงื่อนไขจะเป็นเท็จ
ดังนั้น เพื่อให้โปรแกรมไม่เข้าสู่การวนซ้ำที่ไม่สิ้นสุดและไม่แฮงค์ เนื้อหาของลูปต้องจัดเตรียมตัวเลือกการออก เช่น คำสั่งในเนื้อความของลูปจะต้องส่งผลต่อตัวแปรที่รวมอยู่ในเงื่อนไขอย่างใด
ตัวอย่างเช่น ข้อมูลโค้ดต่อไปนี้พิมพ์เลขคู่ตั้งแต่ 2 ถึง 10:
int x = 2; ในขณะที่ (x<= 10){ System.out.println(x); x += 2; }เกี่ยวกับ while loop กับ postcondition
มีอีกวิธีในการเขียน while loop:
ทำคำสั่งในขณะที่ (เงื่อนไข)เมื่อใช้ตัวเลือกนี้ คำสั่งจะถูกดำเนินการก่อน จากนั้นจึงตรวจสอบเงื่อนไข ทั้งสองตัวเลือกทำงานในลักษณะเดียวกัน แต่ในกรณีที่สอง เนื้อหาลูป (คำสั่ง) จะถูกดำเนินการอย่างน้อยหนึ่งครั้ง แม้ว่าเงื่อนไขจะเป็นเท็จในตอนแรกก็ตาม
แบบฝึกหัด # 3
ใช้ while loop เพื่อพิมพ์เลขคี่ทั้งหมดตั้งแต่ 1 ถึง 10
แจ้ง:เปลี่ยนอัลกอริทึมเล็กน้อยสำหรับการส่งออกเลขคู่
สำหรับตัวดำเนินการลูป
ลูป for มักใช้เมื่อทราบล่วงหน้าว่าควรทำซ้ำการดำเนินการคำสั่ง (หรือลำดับของคำสั่ง) กี่ครั้ง มีรูปแบบดังนี้
สำหรับ (คำสั่ง init; เงื่อนไข; คำสั่งกระโดด) loop-bodyก่อนเริ่มรอบการทำงาน คำสั่งเริ่มต้นจะถูกดำเนินการ จากนั้นตรวจสอบเงื่อนไขการข้าม (ซึ่งเป็นนิพจน์บูลีน) หากเงื่อนไขนี้เป็นจริง คำสั่ง (หรือบล็อกของคำสั่งในวงเล็บปีกกา) ที่ประกอบเป็นเนื้อหาของลูปจะถูกดำเนินการ จากนั้นคำสั่ง jump จะถูกดำเนินการและทุกอย่างจะเริ่มต้นใหม่ คำสั่งกระโดดมักจะเปลี่ยนตัวแปรที่มีผลต่อความจริงของเงื่อนไข และคำสั่งเริ่มต้นคือคำอธิบายของตัวแปรนี้
โดยทั่วไปจะใช้ for loop ดังนี้:
สำหรับ (int i = 1; i<= 10; i++) тело_цикла;ในตัวอย่างนี้ loop_body จะถูกดำเนินการ 10 ครั้งพอดี ในกรณีนี้ ในการวนซ้ำแต่ละครั้ง ตัวแปร i จะพร้อมใช้งาน (เรียกว่าตัวแปรลูป) ซึ่งจะรันค่าตามลำดับตั้งแต่ 1 ถึง 10 แฟรกเมนต์โปรแกรมถัดไปจะส่งออกตัวเลขคู่ตั้งแต่ 2 ถึง 10 (คล้ายกับ ตัวอย่างลูป while):
สำหรับ (int i = 1; i<= 5; i++) System.out.println(i*2);แบบฝึกหัด 4
ใช้ a for loop เพื่อพิมพ์เลขคี่ทั้งหมดตั้งแต่ 1 ถึง 10
ทำลายและดำเนินการต่องบ
เมื่อเนื้อความของลูป (for หรือ while) ประกอบด้วยคำสั่งหลายคำสั่ง สถานการณ์อาจเกิดขึ้นซึ่งไม่จำเป็นต้องดำเนินการทั้งหมดในการวนซ้ำครั้งถัดไป ในกรณีนี้ คำสั่ง break และ continue จะมีประโยชน์
คำสั่ง break จะยุติการดำเนินการของลูปปัจจุบัน โดยไม่คำนึงว่าเงื่อนไขการสิ้นสุดจะตรงตามเงื่อนไขหรือไม่
คำสั่งต่อไปจะยุติการดำเนินการวนซ้ำปัจจุบัน กล่าวคือ หากพบโอเปอเรเตอร์นี้ในเนื้อหาของลูป คำสั่งที่เหลือจะถูกข้ามไปและเริ่มการวนซ้ำ (ซ้ำ) ของลูป
บทสรุป
แม้ว่าเนื้อหาของบทเรียนแรกจะค่อนข้างกว้างขวาง แต่ก็ไม่ควรสร้างปัญหาให้กับนักเรียนที่คุ้นเคยกับภาษาโปรแกรมอย่างน้อยหนึ่งภาษาอยู่แล้ว เนื่องจากโครงสร้างในทุกภาษาเหมือนกันและจำเป็นต้องเชี่ยวชาญเท่านั้น กฎสำหรับการเขียน (ไวยากรณ์) หากความคุ้นเคยกับภาษาโปรแกรมอื่น ๆ อ่อนแอ คุณต้องทำการบ้านเพิ่มเติมในคู่มือและวิธีแก้ปัญหาของงานเพิ่มเติม ทางเลือกที่ดีที่สุดในกรณีนี้คืออ่านบทที่แนะนำจากวรรณกรรมก่อนบทเรียนถัดไป
วรรณกรรมเพิ่มเติม
1. Vyazovik N.A. การเขียนโปรแกรมจาวา (บทที่ 1 - 4, 7, 10)
2. Khabibullin I.Sh. Java Self Tutorial 2 (บทที่ 1)
ให้ความสนใจเป็นพิเศษกับประเภทข้อมูล Java และกฎการแคสต์ ซึ่งไม่ได้กล่าวถึงในรายละเอียดในบทช่วยสอนนี้ โปรแกรมเมอร์มืออาชีพควรควบคุมในโปรแกรมของเขาเสมอถึงความเป็นไปได้ของค่าตัวแปรที่เกินขอบเขตที่อนุญาตสำหรับประเภทของมัน ข้อผิดพลาดในการพิมพ์เป็นข้อผิดพลาดที่พบได้บ่อยที่สุดและตรวจจับได้ยาก ขอแนะนำให้อ่านบทที่ 4 และ 7 ของหนังสือเล่มแรกสำหรับนักเรียนทุกคนที่สมัครเรียนเพื่อให้ได้เกรดดีเยี่ยม