'public static void' หมายถึงอะไรใน Java


149

อะไรpublic static voidหมายถึงใน Java?

ฉันกำลังอยู่ในกระบวนการเรียนรู้ ในตัวอย่างทั้งหมดในหนังสือที่ฉันกำลังทำอยู่public static voidมาก่อนวิธีการใด ๆ ที่กำลังถูกใช้หรือถูกสร้างขึ้น สิ่งนี้หมายความว่า?

คำตอบ:


230

มันเป็นสามสิ่งที่แตกต่างอย่างสิ้นเชิง:

publicหมายความว่าวิธีนี้สามารถมองเห็นได้และสามารถเรียกใช้จากวัตถุอื่นประเภทอื่น ๆ ทางเลือกอื่น ๆ ที่มีprivate, protected, และpackage package-privateดูที่นี่สำหรับรายละเอียดเพิ่มเติม

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

voidหมายความว่าวิธีการไม่มีค่าตอบแทน หากวิธีการส่งกลับintคุณจะเขียนแทนintvoid

การรวมกันของทั้งสามสิ่งนี้เป็นวิธีที่พบเห็นได้ทั่วไปในmainวิธีการที่บทเรียนส่วนใหญ่จะรวมไว้


12
เนื่องจากผู้ถามยังคงเรียนรู้: ลำดับของคำหลักเหล่านี้ก็มีความสำคัญเช่นกัน การปรับเปลี่ยนทุกครั้งแรก ( public, static, privateฯลฯ ) แล้วพิมพ์กลับ ( voidในกรณีนี้)
Pindatjuh

1
@markby ตกลงตกลงฉันเข้าใจคำตอบของฉันฉันรู้ว่าวิธีการหลักจะต้องคงที่ แต่ฉันไม่รู้ว่าทำไมมันถึงเป็นสาธารณะ? มีเหตุผลเฉพาะสำหรับสิ่งนั้นหรือไม่?
hardik

9
สภาพแวดล้อมรันไทม์ของ java ต้องเรียกใช้เมธอดหลักเพื่อเริ่มแอปพลิเคชันของคุณ มันทำไม่ได้เมื่อเป็นส่วนตัว
Philipp

44

คำทั้งสามมีความหมายมุมฉาก

public หมายความว่าวิธีนี้จะสามารถมองเห็นได้จากคลาสในแพ็คเกจอื่น ๆ

staticหมายความว่าวิธีการไม่ได้แนบมากับอินสแตนซ์เฉพาะและไม่มี " this" มันมีฟังก์ชั่นมากหรือน้อย

voidเป็นชนิดส่งคืน มันหมายถึง "วิธีนี้ไม่ส่งคืนสิ่งใด"


22

ประชาชนคำหลักคือการระบุการเข้าถึงซึ่งจะช่วยให้โปรแกรมเมอร์ที่จะควบคุมการแสดงผลของสมาชิกในชั้นเรียน เมื่อสมาชิกคลาสถูกนำหน้าโดยสาธารณะสมาชิกนั้นอาจเข้าถึงได้โดยรหัสภายนอกคลาสที่มีการประกาศ (ตรงกันข้ามกับสาธารณะเป็นส่วนตัวซึ่งป้องกันสมาชิกจากการถูกใช้โดยรหัสที่กำหนดไว้นอกชั้นเรียนของมัน)

ในกรณีนี้main( )จะต้องประกาศเป็นสาธารณะเนื่องจากจะต้องถูกเรียกด้วยรหัสนอกคลาสเมื่อโปรแกรมเริ่มทำงาน

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

คีย์เวิร์ดvoidจะบอกคอมไพเลอร์ที่main( )ไม่ส่งคืนค่า ในขณะที่คุณจะเห็นวิธีการอาจส่งกลับค่า


18

หมายความว่า:

  • public - สามารถเรียกได้จากทุกที่
  • static - มันไม่มีสถานะของวัตถุใด ๆ ดังนั้นคุณสามารถเรียกมันได้โดยไม่ต้องทำให้วัตถุเป็นอินสแตนซ์
  • void - มันจะไม่ส่งคืนสิ่งใดเลย

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


4

มันหมายถึงสามสิ่ง

แรกpublicหมายความว่าวัตถุอื่น ๆ สามารถเข้าถึงได้

static หมายความว่าคลาสที่มีอยู่ไม่จำเป็นต้องมีอินสแตนซ์ก่อนก่อนจึงจะสามารถเรียกใช้ฟังก์ชันได้

void หมายความว่าฟังก์ชันไม่ส่งคืนค่า

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

คำแนะนำที่ดีที่สุดที่ฉันได้รับเมื่อเรียนรู้ที่จะทำโปรแกรมและที่ฉันส่งผ่านไปให้คุณไม่ต้องกังวลกับรายละเอียดเล็ก ๆ น้อย ๆ ที่คุณไม่เข้าใจในทันที รับภาพรวมกว้าง ๆ ของพื้นฐานแล้วย้อนกลับไปและกังวลเกี่ยวกับรายละเอียด เหตุผลก็คือคุณต้องใช้บางสิ่ง (เช่นpublic static void) ในโปรแกรมแรกของคุณซึ่งไม่สามารถอธิบายได้ดีโดยไม่ต้องสอนคุณเกี่ยวกับเรื่องอื่น ๆ ก่อน ดังนั้นในขณะนี้เพียงแค่ยอมรับว่านั่นเป็นวิธีที่ทำไปแล้วและเดินหน้าต่อไป คุณจะเข้าใจพวกเขาในไม่ช้า


3

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

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

voidถูกใช้เพราะโดยปกติแล้วคุณจะไม่คืนค่าจากระดับบนสุด (ระดับ) (บางครั้งคุณจะต้องการคืนค่าอื่นที่ไม่ใช่NULLโมฆะอาจใช้ไม่ได้โดยเฉพาะอย่างยิ่งในกรณีที่คุณประกาศให้เริ่มต้นวัตถุที่ระดับสูงสุดที่คุณกำหนดค่าบางอย่างให้)

คำเตือน: ฉันเป็นมือใหม่ดังนั้นหากคำตอบนี้ไม่ถูกต้องโปรดอย่าวางสาย ในวันนี้ฉันเป็นผู้สรรหาเทคโนโลยีไม่ใช่นักพัฒนา การเขียนโค้ดเป็นงานอดิเรกของฉัน นอกจากนี้ฉันเปิดกว้างต่อการวิจารณ์อย่างสร้างสรรค์และชอบที่จะเรียนรู้ดังนั้นโปรดอย่าลังเลที่จะชี้ให้เห็นข้อผิดพลาดใด ๆ


2
  • public หมายความว่าคุณสามารถเข้าถึงคลาสได้จากทุกที่ในคลาส / วัตถุหรือนอกแพ็คเกจหรือคลาส
  • static หมายถึงค่าคงที่บล็อกคำสั่งที่ใช้เพียง 1 ครั้ง
  • void หมายถึงไม่มีประเภทผลตอบแทน

6
คำถามนี้ได้รับการครอบคลุมอย่างเพียงพออาจลองตอบคำถามใหม่แทนที่จะตอบคำถามเก่าด้วยข้อมูลที่ซ้ำกัน ขอบคุณ
Kev

มันเหมือนกับการอธิบายเกี่ยวกับช้าง ผู้คนพยายามอธิบายมันขึ้นอยู่กับว่าเขายืนอยู่ที่ไหน ฉันมีความสุขกับคำตอบทั้งหมดข้างต้น แต่ก็สงสัยว่าใครจะพูดว่า "ซื้อหนังสือจาวา"
Sulung Nugroho

2

Public - หมายถึงคลาสอื่น (โปรแกรม) นั้นมีให้ใช้งานสำหรับคลาสอื่น ๆ

Static- สร้างคลาส ยังสามารถนำไปใช้กับตัวแปรและวิธีการทำให้พวกเขาวิธีการเรียน / ตัวแปรแทนเพียงแค่ท้องถิ่นเพื่อเป็นตัวอย่างเฉพาะของชั้นเรียน

Void- นี่หมายความว่าจะไม่มีการส่งคืนผลิตภัณฑ์เมื่อการประมวลผลเสร็จสิ้น เปรียบเทียบสิ่งนี้กับคลาสตัวช่วยที่ให้ค่าส่งคืนไปยังคลาสหลักซึ่งทำงานเหมือนกับฟังก์ชัน สิ่งเหล่านี้ไม่มีเป็นโมฆะในการประกาศ


0

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.