Java main () อธิบายวิธีการ

1. ภาพรวม

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

2. ลายเซ็นทั่วไป

เทมเพลตวิธีการหลักที่พบบ่อยที่สุดคือ:
public static void main(String[] args) { }

นั่นคือวิธีที่เราได้เรียนรู้นั่นคือวิธีที่ IDE เติมโค้ดให้เราโดยอัตโนมัติ แต่นั่นไม่ใช่รูปแบบเดียวที่วิธีนี้สามารถสันนิษฐานได้มีตัวแปรที่ใช้ได้บางตัวที่เราสามารถใช้ได้และไม่ใช่นักพัฒนาทุกคนที่ให้ความสำคัญกับข้อเท็จจริงนี้

ก่อนที่เราจะดำดิ่งลงไปในลายเซ็นของวิธีการเหล่านั้นเรามาดูความหมายของคำหลักแต่ละคำของลายเซ็นทั่วไป:

  • สาธารณะ - ตัวปรับการเข้าถึงหมายถึงการมองเห็นทั่วโลก
  • คงที่ - วิธีนี้สามารถเข้าถึงได้โดยตรงจากคลาสเราไม่จำเป็นต้องสร้างอินสแตนซ์อ็อบเจ็กต์เพื่อให้มีการอ้างอิงและใช้มัน
  • เป็นโมฆะ - หมายความว่าวิธีนี้ไม่ส่งคืนค่า
  • main - ชื่อของเมธอดนั่นคือตัวระบุที่ JVM มองหาเมื่อเรียกใช้โปรแกรม Java

สำหรับพารามิเตอร์argsแสดงถึงค่าที่ได้รับโดยวิธีการ นี่คือวิธีที่เราส่งผ่านข้อโต้แย้งไปยังโปรแกรมเมื่อเราเริ่มต้นครั้งแรก

พารามิเตอร์argsคืออาร์เรย์ของString s ในตัวอย่างต่อไปนี้:

java CommonMainMethodSignature foo bar

เรากำลังดำเนินการโปรแกรม Java ที่เรียกว่าCommonMainMethodSignatureและผ่าน 2 ข้อโต้แย้ง: fooและบาร์ ค่าเหล่านี้สามารถเข้าถึงได้ภายในเมธอดหลักเช่นargs [0] (มีfooเป็นค่า) และargs [1] (มีbarเป็นค่า)

ในตัวอย่างถัดไปเรากำลังตรวจสอบ args เพื่อตัดสินใจว่าจะโหลดพารามิเตอร์การทดสอบหรือการผลิต:

public static void main(String[] args) { if (args.length > 0) { if (args[0].equals("test")) { // load test parameters } else if (args[0].equals("production")) { // load production parameters } } }

โปรดจำไว้เสมอว่า IDE สามารถส่งผ่านอาร์กิวเมนต์ไปยังโปรแกรมได้

3. วิธีต่างๆในการเขียนmain ()วิธีการ

ลองตรวจสอบวิธีต่างๆในการเขียนวิธีการหลัก แม้ว่าจะไม่ธรรมดา แต่ก็เป็นลายเซ็นที่ถูกต้อง

โปรดทราบว่าสิ่งเหล่านี้ไม่เฉพาะเจาะจงกับเมธอดหลักแต่สามารถใช้กับเมธอด Java ใด ๆ ก็ได้ แต่ก็เป็นส่วนหนึ่งของเมธอดหลัก

สามารถวางวงเล็บเหลี่ยมใกล้Stringได้เช่นเดียวกับในเทมเพลตทั่วไปหรือใกล้argsทั้งสองด้าน:

public static void main(String []args) { } 
public static void main(String args[]) { }

อาร์กิวเมนต์สามารถแสดงเป็น varargs:

public static void main(String...args) { }

เรายังสามารถเพิ่มเข้มงวด fpสำหรับเมธอดmain ()ซึ่งใช้สำหรับความเข้ากันได้ระหว่างโปรเซสเซอร์เมื่อทำงานกับค่าทศนิยม:

public strictfp static void main(String[] args) { }

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

ในทางกลับกันสามารถใช้ขั้นสุดท้ายกับargsเพื่อป้องกันไม่ให้อาร์เรย์ถูกแก้ไข:

public static void main(final String[] args) { }

ในการจบตัวอย่างเหล่านี้เราสามารถเขียนวิธีการหลักด้วยคำหลักทั้งหมดข้างต้น (ซึ่งแน่นอนว่าคุณอาจไม่เคยใช้ในแอปพลิเคชันที่ใช้งานได้จริง):

final static synchronized strictfp void main(final String[] args) { }

4. มีมากกว่าหนึ่งวิธี() หลัก

นอกจากนี้เรายังสามารถกำหนดวิธีการหลักได้มากกว่าหนึ่งวิธีในแอปพลิเคชันของเรา

ในความเป็นจริงบางคนใช้เป็นเทคนิคการทดสอบแบบดั้งเดิมเพื่อตรวจสอบความถูกต้องของแต่ละชั้นเรียน (แม้ว่ากรอบการทดสอบเช่นJUnitจะระบุไว้สำหรับกิจกรรมนี้มากกว่าก็ตาม)

ในการระบุวิธีการหลักที่ JVM ควรดำเนินการเป็นจุดเริ่มต้นของแอปพลิเคชันของเราเราใช้ไฟล์MANIFEST.MF ภายในรายการเราสามารถระบุคลาสหลักได้:

Main-Class: mypackage.ClassWithMainMethod

ส่วนใหญ่จะใช้เมื่อสร้างไฟล์. jar ที่ปฏิบัติการได้ เราระบุว่าคลาสใดมีเมธอดหลักในการเริ่มการดำเนินการผ่านไฟล์รายการที่อยู่ที่META-INF / MANIFEST.MF (เข้ารหัสใน UTF-8)

5. สรุป

บทช่วยสอนนี้อธิบายรายละเอียดของวิธีการหลักและรูปแบบอื่น ๆ ที่สามารถสรุปได้แม้กระทั่งวิธีที่นักพัฒนาส่วนใหญ่ไม่ได้ใช้กันทั่วไป

โปรดทราบว่าแม้ว่าตัวอย่างทั้งหมดที่เราได้แสดงจะถูกต้องในแง่ของไวยากรณ์ แต่ก็เพียงแค่ตอบสนองจุดประสงค์ทางการศึกษาและส่วนใหญ่เราจะยึดลายเซ็นทั่วไปในการทำงานของเรา