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...

จัดการข้อมูลบน Pandas ยังไงให้เร็ว 1000x ด้วย Vectorisation

จัดการข้อมูลบน Pandas ยังไงให้เร็ว 1000x ด้วย Vectorisation

เวลาเราทำงานกับข้อมูลอย่าง Pandas DataFrame หนึ่งในงานที่เราเขียนลงไปให้มันทำคือ การ Apply Function เข้าไป ถ้าข้อมูลมีขนาดเล็ก มันไม่มีปัญหาเท่าไหร่ แต่ถ้าข้อมูลของเราใหญ่ มันอีกเรื่องเลย ถ้าเราจะเขียนให้เร็วที่สุด เราจะทำได้โดยวิธีใดบ้าง วันนี้เรามาดูกัน...

ปั่นความเร็ว Python Script เกือบ 700 เท่าด้วย JIT บน Numba

ปั่นความเร็ว Python Script เกือบ 700 เท่าด้วย JIT บน Numba

Python เป็นภาษาที่เราใช้งานกันเยอะมาก ๆ เพราะความยืดหยุ่นของมัน แต่ปัญหาของมันก็เกิดจากข้อดีของมันนี่แหละ ทำให้เมื่อเราต้องการ Performance แต่ถ้าเราจะบอกว่า เราสามารถทำได้ดีทั้งคู่เลยละ จะเป็นยังไง เราขอแนะนำ Numba ที่ใช้งาน JIT บอกเลยว่า เร็วขึ้นแบบ 700 เท่าตอนที่ทดลองกันเลย...

Humanise the Number in Python with "Humanize"

Humanise the Number in Python with "Humanize"

หลายวันก่อน เราทำงานแล้วเราต้องการทำงานกับตัวเลขเพื่อให้มันอ่านได้ง่ายขึ้น จะมานั่งเขียนเองก็เสียเวลา เลยไปนั่งหา Library มาใช้ จนไปเจอ Humanize วันนี้เลยจะเอามาเล่าให้อ่านกันว่า มันทำอะไรได้ แล้วมันล่นเวลาการทำงานของเราได้ยังไง...

ทำไม 0.3 + 0.6 ถึงได้ 0.8999999 กับปัญหา Floating Point Approximation

ทำไม 0.3 + 0.6 ถึงได้ 0.8999999 กับปัญหา Floating Point Approximation

การทำงานกับตัวเลขทศนิยมบนคอมพิวเตอร์มันมีความลับซ่อนอยู่ เราอาจจะเคยเจอเคสที่ เอา 0.3 + 0.6 แล้วมันได้ 0.899 ซ้ำไปเรื่อย ๆ ไม่ได้ 0.9 เพราะคอมพิวเตอร์ไม่ได้มองระบบทศนิยมเหมือนกับคนนั่นเอง บางตัวมันไม่สามารถเก็บได้ เลยจำเป็นจะต้องประมาณเอา เราเลยเรียกว่า Floating Point Approximation...