Tutorial

Java 101 - Let's say Hello World!! (EP.1)

By Arnon Puitrakul - 21 ธันวาคม 2014

Java 101 - Let's say Hello World!! (EP.1)

ซีรีส์ Java 101 นี้ผมจะพยายามใช้ภาษาพูดเยอะหน่อยนะครับ เพราะมันเป็นการอธิบายซะส่วนใหญ่ ซึ่งมันจะมีกี่ตอนผมก็ไม่รู้เหมือนกัน
วันนี้ผมอยากเริ่มด้วยโปรแกรมที่คนที่เขียนโปรแกรมทุกคนจะต้องเคยเจอ ซึ่งคือ Hello World
ก่อนอื่นก็พิมพ์ตามนี้ก่อนเลยครับ

public class Helloworld
{
public static void main (String [] args)
{
System.out.println("Hello World");
}
}

Output ที่ควรจะออกมาคือ คำว่า Hello World นะครับ
มาอธิบายโค้ตกัน
บรรทัดแรก เป็นการประกาศคลาสชื่อ Helloworld (เดียวเรื่อง Class คาดว่า EP.2 ผมจะมาอธิบายนะครับ)
บรรทัดที่ 3 เป็นการประกาศ Method ชื่อ main โดยที่ไม่ส่งค่าใดๆกลับ หรือ void นั่นเอง ส่วนคำว่า public กับ static นั้นเป็น Modifier เดียวผมจะอธิบายไว้ข้างล่างแบบคร่าวๆก่อน
บรรทัดถัดลงมา ผมบอกว่า System.out.println("Hello World"); นั่นคือการให้โปรแกรมส่งออกค่าผ่านทางหน้าจอว่า Hello World
เพราะฉะนั้นคำสั่งที่เราได้รู้ในวันนี้คือ

  • System.out.println("Write Sth"); นั่นคือการส่งออกค่าผ่านทางหน้าจอนี่เอง (จริงๆมันมีอีกหลายคำสั่งที่ใช้ในการส่งออกค่าทางหน้าจอ แต่ไว้เดียว EP.3 ผมจะมาอธิบายอย่างละเอียดอีกครั้งนึง)
    ทีนี้ เมื่อกี้ผมค้างเรื่อง Modifier ทิ้งไว้
    ถามว่า Modifier มันคืออะไร
    จริงๆแล้วมันคือตัวที่ไว้กำหนดคุณสมบัติของตัววัตถุในโปรแกรมเรา ซึ่งเราจะแบ่งได้เป็น 2 แบบด้วยกัน
    1. Non-Access Modifier ตามชื่อเลยครับ มันคือตัวที่ไว้กำหนดอะไรก็ตามที่ไม่ใช่เรื่องของการเข้าถึงวัตถุในโปรแกรม เช่น static ที่เราเห็นใน main นั่นล่ะครับ ตัวเดียวกันเลย
    2.Access Modifier ตามชื่อมันเช่นเดียวกัน มันเป็นตัวกำหนดระดับในการเข้าถึงของวัตถุในโปรแกรมเราว่า คลาสนี้สามารถเข้่าถึงโค๊ตตรงนี้ได้มั้ยหรือยังไง ซึ่งที่เราใช้บ่อยๆเลยก็จะมี
  • public - อันนี้ก็ตามชื่อมันอีกเช่นเคย คือเปิดไปหมด ชอบโชว์นี่เอง เราสามารถเข้าถึงได้เกือบทุกที่ (ยกเว้นอะไรบ้างเดียวจะมาอธิบายในวันหลัง)
  • private - อันนี้ทำให้เราสามารถเข้าถึงได้เฉพาะในคลาสเดียวกันได้เท่านั้น เช่น ผมมีคลาสชื่อ Student แล้วก็มีคลาส Teacher ถ้าผมอยู่ในคลาส Teacher แล้วถ้าผมเขียนเรียกคำสั่งจากคลาส Student อันนั้นโปรแกรมมันจะ Compile ไม่ผ่านครับ เพราะมันเข้าถึงไม่ได้
  • protected - อันนี้ค่อนข้างพิเศษหน่อย(มั้ง) ผมว่างั้นนะ อันนี้มันทำให้เราเข้าถึงได้แค่จากคลาสที่เราสืบทอดมาได้เท่านั้น (เรื่องการสืบทอดเดียวจะไว้ว่ากันทีหลังยาวๆเลย)
  • package - อันนี้ทำให้เราสามารถเข้าถึงได้จาก Package เดียวกันเท่านั้นซึ่งเรื่องของ Package ก็อีกแหละ ต้องไว้อธิบายในวันหลังว่ามันคืออะไรกันแน่?
    อ่ออีกเรื่องนึง ผมว่ามีหลายๆคนถามผมว่า
    ทำไม ตอนประกาศ main จะต้องใส่คำว่า String[] args ด้วยล่ะ??
    ตอบนะครับ การที่เราใส่ String[] args เนี่ยมีไว้เพื่อเวลาเราเรียกโปรแกรมเราผ่าน Command Line ผมว่าทุกคนน่าจะเคยใช้ Command Line นะนะครับ(หรือไม่หว่า) ถ้าสังเกตเวลาเราใช้ Command Line เวลาเราพิมพ์คำสั่ง เราจะมีค่า Argument พิเศษต่อท้ายคำสั่ง เช่น dir -s เป็นต้น การที่เราใส่ไว้ก็เพียงเพื่อเอาให้รับค่าจาก Command Line ได้ก็เท่านั้นเลยครับ
    ถามต่อว่าแล้วจำเป็นต้องใส่มั้ยไอ้ String [] args เนี่ย?
    ควรจะใส่ไว้ครับ ลองคิดเล่นๆนะครับ ว่าถ้าเราไม่ใส่เป็นจะเป็นแค่ Method ที่ดูธรรมดาใช่มั้ยครับ เพราะฉะนั้น java เลยกำหนดว่า main เนี่ยจะต้องรับ String[] args ด้วยนะไม่งั้นไม่ใช่ main มันเป็น jvm specification ที่ตัวภาษา Java กำหนดไว้
    Source Code : https://drive.google.com/folderview?id=0BwrPA9Miv4o2RENZMnpFTDFaTkk&usp=sharing

Read Next...

โหลด CSV วิธีไหนเร็วที่สุด ?

โหลด CSV วิธีไหนเร็วที่สุด ?

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

ฮาวทู Sync Obsidian Note ด้วย LiveSync Plugin

ฮาวทู Sync Obsidian Note ด้วย LiveSync Plugin

ตั้งแต่ใช้ Obsidian เป็น App จด Note หลัก ชอบวิธีการจัดการมาก ๆ เมื่อใช้งานร่วมกับ Plugin ต่าง ๆ ยิ่งทำให้การใช้งานยืดหยุ่นมากกว่าเดิมอีกเยอะมาก ๆ ติดอยู่เรื่องเดียวคือ การใช้งานในหลาย ๆ อุปกรณ์ แต่เราเจอ Plugin ตัวนึงที่น่าสนใจมาก ๆ คือ LiveSync วันนี้เราจะมาเล่าวิธีการติดตั้ง และใช้งานมันกัน...

การสร้าง SSD Storage Pool บน Synology DSM

การสร้าง SSD Storage Pool บน Synology DSM

สำหรับคนที่ใช้ Synology NAS บางรุ่นจะมีช่อง M.2 สำหรับเสียบ NVMe SSD โดยพื้นฐาน Synology บอกว่ามันสำหรับการทำ Cache แต่ถ้าเราต้องการเอามันมาทำเป็น Storage ละ มันจะทำได้มั้ย วันนี้เราจะมาเล่าวิธีการทำกัน...

Multiprogramming, Multiprocessing และ Multithreading

Multiprogramming, Multiprocessing และ Multithreading

หลังจากที่เรามาเล่าเรื่อง malloc() มีคนอยากให้มาเล่าเรื่อง pthread เพื่อให้สามารถยัด Content ที่ละเอียด และเข้าใจง่ายในเวลาที่ไม่นานเกินไป เลยจะมาเล่าพื้นฐานที่สำคัญของคำ 3 คำคือ Multiprogramming, Multitasking, Multiprocessing และ Multithreading...