วันจันทร์ที่ 29 กรกฎาคม พ.ศ. 2556

การสร้างคลาสและออปเจ็คในภาษา java

            สวัสดีครับ วันนี้เราจะเรียนรู้เกี่ยวกับการสร้างคลาสและออปเจ็คในภาษาจาวากันนะครับ
การประกาศคลาส
            โปรแกรมภาษาจาวาแต่ละโปรแกรมจะประกอบไปด้วยคลาสอย่างน้อย หนึ่งคลาส โดยมีรูปแบบการประกาศ ดังนี้
[modifier] class Classname {
      [class member]
}


- Modifier คือคีย์เวิร์ด ของภาษาจาวาที่ใช้ในการอธิบายระดับการเข้าถึง (Access modifier)
- class คือคีย์เวิร์ด ของภาษาจาวา เพื่อระบุว่าเป็นการประกาศคลาส
- Classname คือชื่อคลาส
- Class member คือเมธอดหรือคุณลักษณะ

ตัวอย่างการประกาศคลาส

public class Student { ……………………. }

ส่วนประกอบของคลาส (Class member)
1) Data Fields เป็นส่วนข้อมูลของ Class
- Primitive Type Value
- Object References Type Value
2) Methods เป็นส่วนกระบวนการทำงานของ Class
- Static Method
- Non-Static Method
3) Member Classes เป็น Class ที่อยู่ภายใน Class หรือเรียกว่า Inner Class

การประกาศคุณลักษณะ
คุณลักษณะของออปเจ็ค คือตัวแปรหรือค่าคงที่ซึ่งประกาศภายในออปเจ็ค

โดยมีรูปแบบการประกาศดังนี้
[modifier] dataType attributeName;

- Modifier คือคีย์เวิร์ดของภาษาจาวาที่อธิบายคุณสมบัติต่างๆ ของตัวแปรหรือค่าคงที่
- dataType คือชนิดข้อมูลซึ่งอาจเป็นชนิดข้อมูลพื้นฐานหรือชนิดคลาส
- attributeName คือชื่อของคุณลักษณะ

ตัวอย่างการประกาศคุณลักษณะ
public class Student {
public String id;
public String name;
public double gpa;
}


การประกาศเมธอด
ภาษาจาวากำหนดรูปแบบของการประกาศเมธอดที่อยู่ในคลาสไว้ดังนี้
[modifier] return_type methodName ([argument]) {
           [method body]
}


- Modifier คือคีย์เวิร์ด ของภาษาจาวาที่ใช้ในการอธิบายระดับการเข้าถึง (Access modifier)
- Return_type คือชนิดข้อมูลของค่าที่จะมีการส่งกลับ
- methodName คือชื่อของเมธอด
- Arguments คือตัวแปรที่ใช้ในการรับข้อมูลที่ออปเจ็คส่งมาให้
- Method body คือคำสั่งต่างๆ ของภาษาจาวาที่อยู่ในเมธอด

ตัวอย่างโปรแกรม
public class Student {
      public String id;
      public String name;
      public double gpa;
      public void setID(String ID) {
                id = ID;
      }
      public void setName(String n) {
                name = n;
      }
      public void setGPA(double GPA) {
                gpa = GPA;
      }
      public void showDetails() {
               System.out.println("ID: "+id);
               System.out.println("Name: "+name);
               System.out.println("GPA: "+gpa);
      }
}


การประกาศออปเจ็ค
           ออปเจ็คทุกออปเจ็คในโปรแกรมภาษาจาวาจะต้องมีคำสั่งประกาศเพื่อระบุว่าออปเจ็คนั้นเป็นออปเจ็คของคลาสใด
โดยมีรูปแบบการประกาศ ดังนี้
[modifier] ClassName objectName;

- modifier คือคีย์เวิร์ดที่อธิบายคุณสมบัติต่างๆของออปเจ็ค
- ClassName คือชื่อของคลาสสำหรับออปเจ็คนั้น
- objectName คือชื่อของออปเจ็ค

ตัวอย่าง
Student s1;

การสร้างออปเจ็ค
คำสั่งที่ใช้ในการสร้างออปเจ็คจะมีรูปแบบ ดังนี้
objectName = new ClassName ([arguments]);

- objectName คือชื่อของออปเจ็ค
- new คือคีย์เวิร์ดของภาษาจาวาเพื่อใช้ในการสร้างออปเจ็ค
- ClassName คือชื่อของคลาส
- Arguments คือค่าที่ต้องการส่งผ่านในการเรียก Contructor

ตัวอย่าง
s1 = new Student s1;

การประกาศและการสร้างออปเจ็ค
คำสั่งที่ใช้ในการประกาศและสร้างออปเจ็ค สามารถที่จะรวมเป็นคำสั่งเดียวกัน

โดยมีรูปแบบคำสั่ง ดังนี้
[modifier] ClassName objectName = new ClassName ([arguments]);

ตัวอย่าง
Student s1 = new Student( );

การเรียกใช้สมาชิกของออปเจ็ค
การเรียกใช้คุณลักษณะของออปเจ็คมีรูปแบบ ดังนี้
objectName.attributeName;

การเรียกใช้เมธอดของออปเจ็คมีรูปแบบ ดังนี้
objectName.methodName([arguments]);

- objectName คือชื่อของออปเจ็คที่สร้างขึ้น
- methodName คือชื่อของเมธอดของออปเจ็คนั้น
- arguments คือค่าที่ต้องการส่งผ่านไปให้กับเมธอดของออปเจ็คนั้น

ตัวอย่าง
s1.setName (“Pangpond”);

ตัวอย่างโปรแกรม แบ่งออกเป็น 2 คลาส คือ TestCircle และ Circle
public class TestCircle {
        public static void main(String[] args) {
               Circle MyCircle = new Circle();
               System.out.println("Area is " + MyCircle.findArea());
        }
}// class TestCircle

class Circle {
        double radius = 2.0;

        double findArea() {
        return radius * radius * 3.14159;
}
}// class Circle


Overloading Methods
            ในบางกรณีอาจมีเมธอดใดๆ ที่สามารถรับค่าที่เป็นตัวแปรได้หลากหลายชนิดได้ ถ้ากำหนดไว้เป็นเมธอดเดียว อาจทำให้ผลลัพธ์ที่ได้เกิดความผิดพลาดได้ ดังนั้นถ้าชนิดตัวแปรเป็นคนละชนิดกัน ให้สร้างเมธอดขึ้นมาใหม่ โดยใช้ชื่อเมธอดเดียวกัน แต่สร้างให้เมธอด มีชนิดของตัวแปรใน parameter list ต่างกัน โดยจะสร้างเมธอดใหม่ ขึ้นมาเป็นจำนวนเท่ากับชนิดของตัวแปรที่เป็นไปได้ เมื่อมีการใช้เมธอด ชื่อนี้โปรแกรมจะเรียกเมธอดที่มีชนิดของตัวแปร ตรงกับที่ต้องการโดยอัตโนมัติ เรียกวิธีการนี้ว่า “Overloading” และเรียกเมธอดที่ใช้วิธีการนี้ว่า “Overloading Methods”

ตัวอย่างโปรแกรม
public class TestOverloading {
       public static void main(String[] args) {
                System.out.println("The maximum between is " + max(3,5));
                System.out.println("The maximum between is " + max(4.5,6.8));
       }

       static double max(double num1,double num2) {
                if(num1>num2)
                return num1;
                else
                return num2;
        }

        static int max(int num1,int num2) {
                if(num1>num2)
                return num1;
                else
                return num2;
        }
} //class TestOverloading

Constructor Methods
            เมื่อ Object ใดๆ ถูกสร้างขึ้นมาจะต้องไปเรียกใช้ Method ที่ระบุนี้ขึ้นมาใช้งานทันที การกําหนดการทํางาน ลักษณะเช่นนี้เรียกว่า “Constructor” ดังนั้น Constructor ก็ คือ Method ทั่วๆ ไป ของจาวา แต่มีข้อจํากัดดังนี้
1) ชื่อของ Constructor จะต้องเป็นชื่อเดียวกันกับชื่อ Class ที่ใช้สร้าง Object
2) Header ของ Constructor จะต้องไม่มีค่า Return_data_type
ดังนั้น ถ้าชื่อ Method ใดๆ ใน Class เป็นชื่อเดียวกันกับ Class ด้วย แสดงว่า Method นั้นเป็น “Constructor” Method

            ตัวอย่างของการสร้าง Constructor เช่น ในโปรแกรมสําหรับเกมส์บางอย่างจํา เป็นต็องเรียกใช้ตัวเลขสุ่มทุกครั้งที่ เริ่มต้นเกมส์ใหม่
แต่ทั้งนี้ไม่จําเป็นที่ทุกโปรแกรมจะต้องมีการกําหนด Constructor ไว้ด้วย แต่เพื่อให้มีมาตรฐานเดียวกัน จึงนิยมเขียน Constructor เอาไว้ในโปรแกรมเสมอ ถึงแม้จะไม่มีการทํางานใดๆ ใน Constructor ก็ตาม โดยจะกําหนดเป็นบรรทัด ว่างไว้
เช่น สมมติชื่อของ Class คือ “HelloApp” ดังนั้นจะสร้าง Method ชื่อ “HelloApp” เอาไว้ด้วย โดยกําหนดเครื่องหมายปากกาเปิดและปิดเอาไว้ เท่านั้น (ไม่มีการทํางานใดๆ)
public HelloApp ( )
{
………………
}


ตัวดำเนินการทางตรรกะในภาษา java

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

ตัวดำเนินการแบบสัมพันธ์( Relatoonal Operators )
                ตัวดำเนินการประเภทนี้จะนำตัวถูกดำเนินการสองค่ามาเปรียบเทียบกัน ผลลัทธ์ที่ได้จะเป็นจริงหรือเท็จ ในภาษาจาวามีตัวดำเนินการประเภทนี้ 6ตัว ดังตาราง

ตาราง ตัวดำเนินการแบบสัมพันธ์


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

ตัวดำเนินการทางตรรกศาสตร์
                ตัวดำเนินการประเภทนี้จะใช้กระทำกับตัวถูกดำเนินการที่เป็นนิพจน์ทางตรรกศาสตร์ หรือข้อมูลที่เป็นบูลีน ตัวดำเนินการประเภทนี้ ได้แก่ AND , OR , Exclusive-OR และ NOT โดยตัวดำเนินการแบบ NOT จะกระทำกับตัวถูกตัวดำเนินการตัวเดียว ส่วนตัวดำเนินการตัวอื่นๆ จะกระทำกับตัวถูกดำเนินการสองตัว

ตาราง ตัวดำเนินการทางตรรกศาสตร์
ตัวดำเนินการ
ชื่อ
ตัวอย่าง
ผลลัทธ์
&&
AND
(8>3)&&(6<9)
true
 | |
OR
(5<6) |  | (7>6)
true
!
NOT
!(3>2)
false
^
Exclusive-OR
(8>3) ^  (4<2)
true



ตัวดำเนินการระดับบิต (Operators)
              ตัวดำเนินการประเภทนี้จะกระทำกับข้อมูลแบบบิตต่อบิต เช่น การกระทำลอจิก AND, OR, NOT หรือเลื่อนบิตแบบบิตต่อบิต เป็นต้น ตัวดำเนินการประเภทนี้แสดงได้ดังตารางต่อไปนะครับ

ตาราง ตัวดำเนินการระดับบิต
ตัวดำเนินการ
ชื่อ
ตัวอย่าง
ผลลัพธ์
&
AND
4 & 7
4
|
OR
4 | 7
7
~
NOT
~4
-5
^
Exclusive-OR
4 ^ 7
3
>> 
เลื่อนบิตไปทางขวา
7 >> 1
3
>>> 
เลื่อนบิตแบบไม่คิดเครื่องหมาย
-3 >>> 1
-2
<< 
เลื่อนบิตไปทางซ้าย
7 << 1
14


ตัวอย่าง ถ้าหากมีการประกาศตัวแปรดังต่อไปนี้
             Byte a=4 , b=7
จงหาค่าของ a & b, a | b, a ^b และ b >> 1
วิธีทำ การประกาศตัวแปรดังกล่าวจะทำให้ค่าของ a และ b เป็นดังนี้
                        A = 0000 0100
                        B = 0000 0111
ดังนั้น a & b หาได้จาก 0000 0100 AND กันตรงๆแบบบิตต่อบิต
                               0000 0111
                               0000 0100      มีค่าเท่ากับ 4
    A | b หาได้จาก   0000 0100
                               0000 0111
                               0000 0111      มีค่าเท่ากับ 7
    A ^ b หาได้จาก  0000 0100
                               0000 0111
                               0000 0011      มีค่าเท่ากับ 3
    B >> 1                0000 0111
                               0000 0011      เลื่อนไปทางขวาหนึ่งบิตจะเท่ากับ 3

ลำดับการทำงานของตัวดำเนินการ
                ในนิพจน์ต่างๆ อาจมีตัวดำเนินการประกอบอยู่มากว่าหนึ่งตัว การหาผลลัพธ์ของนิพจน์คอมไพเลอร์จะต้องพิจารณาว่าจะทำตัวดำเนินการใดก่อนหลัง ในภาษาวาจามีการจัดลำดับความสำคัญของตัวดำเนินการดังตัวอย่างโดยเรียงลำดับความสำคัญจากบนลงล่าง

ตารางลำดับความสำคัญของตัวดำเนินการ
ลำดับ
ตัวดำเนินการ
เรียงจาก
1
(  ) , ( data type )
ซ้ายไปขวา
2
! , ~ , - , + , - - , ++
ซ้ายไปขวา
3
*, / , % , + , - , << , >> , >>>
ซ้ายไปขวา
4
< , > , <= , >= , == , !=
ซ้ายไปขวา
5
& , ^ , | , && , | |
ซ้ายไปขวา
6
!= , ^= , &= , >>>= , >>=  , <<= ,%= , /= , *= , -= , += , =
ซ้ายไปขวา
                    จากตารางจะเห็นว่า ลงเล็บจะมีลำดับความสำคัญสูงสุด ส่วนตัวดำเนินการที่ใช้สำหรับกำหนดค่าจะมีลำดับความสำคัญต่ำสุด ถ้าหากมีตัวดำเนินการที่มีลำดับความสำคัญเท่ากันอยู่ในนิพจน์เดียวกัน ลำดับความสำคัญจะเรียงจากซ้ายไปขวา ในการเขียนโปรแกรมถ้าหากมีการประมวลผลซับซ้อนผู้เขียนโปรแกรมควรใส่วงเล็บให้ประมวลผลก่อน เพื่อป้องกันการสับสน

ตัวอย่าง นิพจน์ต่อไปนี้เป็นการใช้ตัวดำเนินการหลายๆ ตัวในนิพจน์เดียวกัน
นิพจน์
การทำงาน
X > y && a < b
ตรวจสอบว่า มากว่า yและ น้อยกว่า จริงหรือไม่
X == y | | x == z
ตรวจสอบว่า x เท่ากับ หรือ เท่ากับ z จริงหรือไม่
!( x > y )
ตรวจสอบว่า มากกว่า y ไม่จริงใช่หรือไม่
18 / 3*4
ตัวดำเนินการอยู่ลำดับเดียวกันจะเรียงจากซ้ายไปขวา ได้ค่าเป็น 24
18 % 3*4
ตัวดำเนินการอยู่ลำดับเดียวกันจะเรียงจากซ้ายไปขวา ได้ค่าเป็น 0
( 15+9 ) / ( 3+1 )*2
จะคำนวณ 24 / 4*2 ได้ค่าเป็น 12
  

วันอาทิตย์ที่ 28 กรกฎาคม พ.ศ. 2556

ตัวแปรและชนิดข้อมูลพื้นฐานใน java


           สวัสดีครับ วันนี้เราจะมาเรียนรู้เกี่ยวกับตัวแปรและชนิดข้อมูลพื้นฐานในภาษาจาวากันนะครับว่ามีอะไรบ้าง
           ตัวแปร (Variable)  คือ ชื่อที่กำหนดขึ้นเพื่อใช้ในการเก็บข้อมูล โดยหลักการตั้งชื่อให้กับตัวแปรจะเป็นไปตามกฎการตั้งชื่อที่ได้กล่าวไปแล้วในบล็อกก่อนหน้านี้นะครับ 
           รูปแบบการประกาศตัวแปร คือ
                        ชนิดข้อมูล ตัวแปร;
                        String  name; //ชนิดข้อมูลคือ String ตัวแปรคือ name
           รูปแบบการกำหนดค่าให่กับตัวแปร คือ
                        ตัวแปร = ค่าที่ต้องการกำหนดให้;
                        name = "ทดสอบครับ"; //ตัวแปรคือ name ค่าที่กำหนด "ทดสอบครับ";
           เมื่อประกาศตัวแปรขึ้นแล้วเราต้องกำหนดค่าให้กับตัวแปรเองตามตัวอย่าง จะไม่มีการกำหนดค่าให้กับเริ่มต้นให้กับตัวแปรอัตโนมัติ ซึ่งหากมีการเรียกใช้งานตัวแปรที่ยังไม่ได้ถูกกำหนดค่า เมื่อคอมไฟล์โปรแกรมแล้วคอมไพล์จะแจ้งข้อผิดพลาดว่า "might not have been initialized"
           นอกจากการกำหนดค่าโดยใช้เครื่องหมาย = แล้วภาษาจาวายังมีเครื่องหมายอื่นๆที่ใช้ในการกำหนดค่าอีก ดังนี้ครับ

เครื่องหมายสำหรับ                                    วิธีใช้                                 ความหมาย
กำหนดค่าให้ตัวแปร                                                                (กำหนดค่าเริ่มต้น a=5 ,b=2)
+= (บวก)                                                    a+=b                     a= a+b  ดังนั้น a= 5+2=7
-= (ลบ)                                                       a-=b                      a= a-b   ดังนั้น a= 7-2=5
*= (คุณ)                                                     a*=b                      a= a*b  ดังนั้น a= 5*2=10
/= (หาร)                                                      a/=b                      a= a/b   ดังนั้น a= 10/2=5
%= (หารเอาเลขเศษ)                                  a%=b                    a= a%b ดังนั้น a= 5%2=1

           ชนิดข้อมูลพื้นฐาน (Primitive Data Type) ชนิดข้อมูลพื้นฐานในภาษาจาวาแบ่งออกเป็น 4 กลุ่ม ดังนี้ครับ
  • Logical ได้แก่ boolean 
  • Textual ได้แก่ char
  • Integral ได้แก่ byte,short,int และ long
  • Floating-point ได้แก่ float และ double

ชนิดข้อมูลสำหรับค่าที่เป็นไปได้
byteตัวเลขจำนวนเต็มเล็กๆ ใช้พื้นที่เก็บเพียงแค่ 1 ไบต์-128 ถึง 127
shortตัวเลขจำนวนเต็ม (ใช้พื้นที่เก็บ 16 บิต หรือ 2 ไบต์)-32,768 ถึง 32,767
intตัวเลขจำนวนเต็มทั่วไป (ใช้พื้นที่เก็บ 32 บิต หรือ 4 ไบต์)-2,147,483 ถึง 2,147,483,647
longตัวเลขจำนวนเต็มขนาดใหญ่ (ใช้พื้นที่เก็บ 64 บิต หรือ 8 ไบต์)-9,223,372,036,845,775,808 ถึง
9,223,372,036,845,775,807
floatตัวเลขทศนิยมทั่วไป (ใช้พื้นที่เก็บ 32 บิต หรือ 4 ไบต์)1.4e-45 ถึง 3.4028235e+38
doubleตัวเลขทศนิยมขนาดใหญ่ (ใช้พื้นที่เก็บ 64 บิต หรือ 8 ไบต์)4.9e-324 ถึง1.7976931348623157e+308
charตัวอักษรทุกชนิด ตามมาตรฐาน 16-bit Unicodeตัวอักษรต่างๆ
booleanค่าความเป็นจริงทางตรรกะ (ใช้พื้นที่เก็บ 1 บิต)มี 2 ค่าเท่านั้นคือ true กับ false



วันอาทิตย์ที่ 14 กรกฎาคม พ.ศ. 2556

การรับข้อมูลทางคีบอร์ดในภาษา java


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

ตัวอย่าง code ชื่อไฟล์ InputData.java
//การรับข้อมูลคีบอร์ดเราต้องอิมพอร์ตคลาสต่างๆในแพ็กเกจ java.io เข้าไว้ในโปรแกรม
import java.io.*;
class InputData{
       public static void main(String[ ] args){
             String s;
             InputStreamReader ir = new InputStreamReader(System.in);
             BufferedReader in = new BufferedReader(ir);
             System.out.print("Enter your text here : ");
             /*การอ่านข้อมูลที่รับมาจากคีบอร์ด ต้องใส่ try-catch ครอบด้วยเพื่อดักจับข้อผิดพลาดที่อาจเกิด     ขึ้นจากการอ่านข้อมูลที่ป้อนเข้ามาทางคีบอร์ดเรื่องราวของ try-catch จะกล่าวละเอียดในบล๊อกต่อไปนะครับ */
             try{
                    //อ่านข้อมูลจากคีบอร์ดเข้ามาเก็บไว้ที่ตัวแปรสตริง s
                    s = in.readLine();
                    System.out.println("Your text is "+ s);
                    /*หากเกิดข้อผิดพลาดในการอ่านข้อมูลที่รับจากคีย์บอร์ด โปรแกรมจะดักจับข้อผิดพลาดที่เกิดขึ้นได้ด้วยคำสั่ง catch และจะพิมพ์ข้อความ "Read input keyboard error" ออกทางจอภาพ*/
             }catch(IOException e){
                    System.out.println("Read input keyboard error");
             }
      }  
}


วิธีคอมไพล์โปรแกรม และ รันโปรแกรม
C:\sourcejava>javac InputData.java
C:\sourcejava>java InputData
ผลลัพธ์ของโปรแกรม
Enter your text here : Hello JAVA //ใสค่าทางคีบอร์ด เช่น Hello JAVA แล้วกด Enter 
Your text is Hello JAVA //ผลลัพธ์ที่ได้


การเชื่อมต่อข้อมูลในภาษา java (Concatenation)


             สวัสดีครับ วันนี้เราจะมาดูวิธีการเชื่อมต่อข็อมูลของ java กันครับ หากข้อมูลที่ต้องการแสดงผลมีหลายตัว เราสมารถเชื่อต่อข้อมูลเหล่านั้นเข้าด้วยกันได้ โดยใช้เครื่องหมาย +

ตัวอย่าง code ชื่อไฟล์ TestString.java
class TestString{
      public static void main(String[ ] args){

             String s = "Hello";
             int i = 111;
             // พิมพ์ค่าตัวแปร s ตามช่องว่างและสุดท้ายพิมพ์ค่าของตัวแผร i
             System.out.print(s +" "+ i);
      }
}

ผลลัพธ์ของโปรแกรม
Hello 111


วันเสาร์ที่ 13 กรกฎาคม พ.ศ. 2556

การแสดงผลข้อมูลออกทางจอภาพของภาษา java


          สวัสดีครับ วันนี้ผมจะมาอธิบายการเขียนโปรแกรมภาษา java ในการแสดงผลลัพธ์ออกทางจอภาพ การแสดงผลข้อมูลออกทางจอภาพจะใช้เมธอด print หรือ println ของคลาส out ซึ่งอยู่ในแพ็กเกจ System ดังนี้
           System.out.print(test);        พิมพ์ข้อมูล test ออกทางจอภาพ
           System.out.println(test);     พิมพ์ข้อมูล test ออกทางจอภาพ และทำการขึ้นบรรทัดใหม่ด้วยครับ

ตัวอย่าง code ชื่อไฟล์ Test.java
class Test{
     public static void main(String[ ] args){
         System.out.print("test");
         System.out.println("java"); //จะแสดงแล้วขึ้นบรรทัดใหม่ไว้รอ
         System.out.print("hello world");
    }
}

ผลลัพธ์ของโปรแกรม
test java
hello world


java กับการตีความหมาย White Space


         สวัสดีครับ วันนี้ผมจะตีความหมายของ White Space ว่าจะทำงานยังไงในภาษาจาวาครับ White Space หมายถึงตัวอักษรที่มีรูปร่างหน้าตา ซึ่งจาวาแบ่ง White Space ออกเป็น 4 ชนิดได้แก่
  • horizontal tab คือ ตัวอักษรแท็บแนวนอน (\t)
  • form teed คือ ตัวอักษรขึ้นหน้าใหม่ (\f)
  • carriage return คือ ตัวอักษรเลื่อนเคอร์เซอร์ไปซ้ายสุด  (\r)
  • linefeed หรือ newline  คือ  ตัวอักษรขึ้นบรรทัดใหม่ (\n)
          คอมไพเลอร์ของภาษาจาวาจะไม่สนใจว่า เราเขียนโปรแกรมทั้งหมดภายในบรรทัดเดียวหรือแยกไว้หลายๆบรรทัด เพราะ white space มีหน้าที่เพียงแค่ช่วยแยกคำให้อ่านง่ายขึ้นเท่านั้น ดั้งนั้นไม่ว่าจะเว้นช่องว่างคำกี่ช่องก็ตาม ย่อมไม่มีผลต่อการตีความของคอมไพเลอร์
          หลักการของ white space มีเพียง 2 ข้อเท่านั้น คือ
  • ห้ามเว้นวรรคระหว่างชื่อเมธอดและเครื่องหมายวงเล็บเปิด เช่น
ตัวอย่างที่ถูก getSalary(2222);  
ตัวอย่างที่ผิด getSalary  (2222);

  • ต้องเว้นวรรคหลัง reserved word เสมอ เช่น
          ตัวอย่างที่ถูก public static void main(String args[])  เพราะ public, static, void, ล้วนเป็น reserved word จึงต้องเว้นวรรคคำเหล่านี้
          ตัวอย่างที่ผิด publicstaticvoidmain(String args[])  เพราะไม่มีการเว้นวรรคระหว่าง reserved word ทำให้คอมไพเลอร์ไม่สามารถตีความได้อย่างถูกต้อง
          ตัวอย่างที่ถูก public   static   void     main(String args[])  การเว้นวรรคระหว่าง reserved word แตละคำมากกว่า 1 ช่องว่างไม่ถือว่าผิด เพราะคอมไพเลอร์ต้องการเพียงแค่ให้เว้นวรรคระหว่าง reseved word ก็เพียงพอแล้ว แต่เว้นกี่ช่องว่างก็ได้

Literal
          คือค่าข้อมูลที่แน่นอนซึ่งเราระบุตายตัวลงไปในโค้ดโปรแกรมว่าต้องการให้มีค่าเป็นอะไร ตัวอย่างเช่น 'A',"Hello",100 เป็นต้น

          จาวาแบ่ง literal ออกเป็น 5 ประเภท คือ
Integer Literal
          สามารถระบุ integer literal ได้ทั้งในรูปแบบของเลขฐานสิบ (decimal), เลขฐานสิบหก (hexadecimal) และเลขฐานแปด (octal)
  • ถ้า integer literal เป็นเลขจำนวนเต็มแบบยาว (long integer) ต้องระบุ L หรือ l ต่อท้ายค่านั้น
  • ถ้า integer literal เป็นเลขฐานแปด ให้นำค่านั้นด้วยเลข 0 
  • ถ้า integer literal เป็นเลขฐานสิบหก ให้นำหน้าค่านั้นด้วย 0x (ศูนย์เอ็กซ์)
Decimal                       Long                    Octal                     Hexadecimal   
    15                              15L                      017                            0xF
    16                              16l                       020                           0x10
   100                             100L                   0144                         0x64
                                                                                                                 
                           ตัวอย่างของ integer literal
  
Floating-point Literal
          สามารถระบุ floating-point literal ได้ทั้งในรูปแบบของเลขฐานสิบ เช่น 66.386 หรือในรูปแบบของ exponential เช่น 6.02e23 (มีความหมายเท่ากับ 6.02 x 10 ยกกำลัง 23 ) เป็นต้น
  • ถ้า floating-point literal เป็นเลขจำนวนจริงชนิด float ต้องระบุ F หรือ f ต่อท้ายค่านั้น
  • ถ้า floating-point literal เป็นเลขจำนวนจริงชนิด double จะระบุ F กรือ f ต่อท้ายค่านั้นหรือไม่ก็ได้ ตัวอย่างชอง floating-point literal เช่น 43.3F, 6.02e+23f,-12.123f,3.1415d,6.06e23D เป็นต้น
Boolean Literal
          ประกอบด้วยค่าตรรกะ 2 ค่า คือ true (จริง) และ false (เท็จ)

Character Literal
          เป็นตัวอักษรตัวเดียว หรือจะเป็นค่า escape sequence ก็ได้ โดย  character literal จะถูกคลุมด้วยเครื่องหมาย single quote(' ')
          ตัวอย่าง escape sequence ในภาษาจาวา
\b           คือ ถอยหลัง 1 ช่องตัวอักษร (backspace)
\t            คือ แท็บแนวนอน (horizontal tab)
\n           คือ ขึ้นบรรทัดใหม่ (newline)
\f            คือ ขึ้นหน้าใหม่ (form feed)
\r            คือ เลื่อนเคอร์เซอร์ไปทางซ้ายสุด (carriage return)
\'            คือ ตัวอักษร ' (single quote)
\"           คือ ตัวอักษร " (double quote)
\\            คือ ตัวอักษร \  (backslash)
\xxx       คือ ตังอักษรที่มีรหัวแอสกี (ASCII) เท่ากับค่าของเลขฐานแปดที่ระบุ (xxx คือ ตัวเลขในฐานแปด) เช่น สมมติสั่งพิมพ์ค่า '\043' ผลลัพธ์ที่ได้ คือ # เพราะตัวอักษร  #  มีรหัสแอสกีเท่าหับ 43 ฐานแปด
\uxxxx   คือ ตัวอักษรที่มีรหัส Unicode เท่ากับค่าของเลขฐานสิบหกที่ระบุ (xxxx คือ ตัวเลขในรูปฐานสิบหก) เช่น สมมติสั่งพิมพ์ค่า '\u0023' ผลลัพธ์ที่ได้ คือ # เพราะตัวอักษร # มีรหัส Unicode เท่ากับ 23 ฐานสิบหก

          ตารางแสดง Unicode ของตัวอักษรพิเศษต่างๆที่สำคัญ
ตัวอักษร                                        Escape sequence                                     Unicode                
backspace                                                \b                                                  \u000A
horizontal tab                                           \t                                                   \u0009
newline                                                    \n                                                  \u0008
form feed                                                 \f                                                   \u000D
carriage return                                         \r                                                    \u000C
single quote                                             \'                                                    \u0027
double quote                                            \"                                                   \u0022
backslsah                                                 \\                                                    \u005C
                                                                                                                                             

            ตัวอย่างของ charactor literal เช่น 'a','M','\n','\t','\"','\\','\u005C' เป็นต้น สมมติสั่งพิมพ์ค่า '\\' ผลลัพธ์ คือ จะได้เครื่องหมาย \ พิมพ์ออกทางจอภาพ และเนื่องจากรหัส  Unicode ชองตัวอักษร \ คือ 005C ฐานสิบหก ดังนั้นถ้าสั่งพิมพ์ '\u005C' ก็จะได้เครื่องหมาย \ พิมพ์ออกทางจอภาพเช่นเดียวกัน

String Literal
           string literal อาจประกอบด้วยตัวอักษรตัวเดียว ตัวอักษรหลายตัว หรือเป็นค่าสตริงว่าง (ไม่มีตัวอักษรใดๆเลย) ก็ได้โดย string literal จะถูกคลุมด้วยเครื่องหมาย double quote ("")
          ภายในเครื่องหมาย double quote เราสามารถระบุ escape sequence เพื่อให้หมายถึงตัวอักษรหนึ่งๆได้
          ตัวอย่างของ string literal เช่น "","a","A String","Data 1\t Data2", "Line 1 \r\n Line2", "Page1 \f Page2" เป็นต้น

วันอังคารที่ 9 กรกฎาคม พ.ศ. 2556

กฎการตั้งชื่อของภาษาจาวา


         สวัสดีครับ วันนี้เราจะมาเรียนรู้ว่าภาษาจาวาไม่ให้เราตั้งชื่ออะไรกันบ้างครับ ภาษาจาวามีกฎการในการตั้งชื่อให้กับ identifier ต่างๆซึ่งได้แก่ตัวแปร เมธอด คลาส แพ็กเกจ อินเทอร์เฟส ดังนี้นะครับ

  •  ชื่อที่ตั้งขึ้นจะประกอบด้วยตัวอักษรภาษาอังกฤษ,ตัวเลข, underscore (_) หรือ dollar sing ($) ก็ได้ แต่จะต้องขึ้นต้นด้วยตัวอักษรภาษาอังกฤษ, _ หรือ $ เท่านั้นจะขึ้นต้นด้วยตัวเลขไม่ได้
  • ชื่อที่ตั้งขึ้นจะประกอบด้วยช่องว่างไม่ได้
  • ชื่อที่ตั้งขึ้นเป็น case-sensitive หมายถึง ตัวอักษรใหญ่กับตัวอักษรเล็ก ถือว่าเป็นคยละตัวกัน เช่น hello,Hello,hELLo ทั้งหมดนี้ถือว่าเป็นคนละชื่อกัน
  • ชื่อที่ตั้งขึ้นต้องไม่ซํ้ากับคำสงวน (reserved word) ในภาษาจาวาซึ่งจะมีดังนี้ครับ 

abstract               doubleint               strictfp            boolean            else 
interface              super                    break              extends            long  
switch                  byte                     final                 native              synchronized
case                     finally                   new                 this                 catch
float                     package               throw               char                 for    
private                 throws                  class                goto                 protected  
transient               const                   if                      public               try 
continue               implements           return              void                  default 
import                  short                    volatile             do                    instanceof 
static                    while 


วันอาทิตย์ที่ 7 กรกฎาคม พ.ศ. 2556

สัญลักษณ์หรือเครื่องหมายในภาษา java



สัญลักษณ์หรือเครื่องหมายต่าง ๆ (Separators)
เครื่องหมาย “( )
  • ใช้สำหรับต่อท้ายชื่อของ method มีไว้เพื่อกำหนดและระบุ arguments หรือparameters
  • ใช้ระบุเงื่อนไขใน if, for, while และ do- while
  • ใช้ระบุชนิดข้อมูลที่ต้องการทำ casting
เครื่องหมาย { }
  • ใช้สำหรับกำหนดขอบเขตของตัวแปร, object, method และclass รวมทั้งยังเป็นคำสั่งของ if, for, while และ do- while
  • ใช้กำหนดค่าเริ่มตัวให้กับ array
เครื่องหมาย “[ ]
  • ใช้ประกาศขนาดของ array และการกำหนดค่าให้กับสมาชิกของ array
เครื่องหมาย “ ;
  • ใช้เมื่อสิ้นสุดประโยคคำสั่ง
เครื่องหมาย “ ,
  • ใช้แยกชื่อตัวแปรและค่า arguments หรือ parameters
เครื่องหมาย “ .
  • ใช้แยกชื่อ package, subpackage และชื่อคลาส
  • ใช้แยกระหว่างชื่อclass หรือ object กับชื่อของ method หรือ attribute

โครงสร้างของโปรแกรมภาษาจาวา Statement & Comment



Statement & Comment
         จริงๆ แล้ว การเขียนโปรแกรมภาษา Java นั้น มักจะเขียนโปรแกรมเป็นคลาส (Class) ซึ่งในแต่ละคลาสก็จะประกอบไปด้วยเมธทอด (Method) ตัวแปร (Variable) และส่วนประกอบต่างๆ อีกมากมาย ซึ่งภายในหนึ่งโปรแกรม อาจจะประกอบด้วยคลาสมากกว่า 1 คลาส ขึ้นอยู่กับการออกแบบโปรแกรมของคุณเอง ซึ่งการเขียนโปรแกรมแบบนี้จะเป็นการเขียนโปรแกรมเชิงวัตถุแล้ว

Statement (สเตจเม็นต์)
         Statement ในโปรแกรมนั้นก็คือ คำสั่งต่างๆ นั้นเอง เช่น การกำหนดค่า การประกาศตัวแปร เป็นต้น และยังมี Statement อีกแบบหนึ่ง ซึ่งจะให้ผลลัพธ์ออกมา ซึ่งจะเรียก Statement แบบนี้ว่า Expression คือ คำสั่งที่เป็นการคำนวณต่างๆ เช่น การบวก ลบ คูณ และหาร เป็นต้น ซึ่ง Expression นี้สามารถที่จะอยู่รวมกับ Statement หรือไม่ก็ได้ ในซอร์สโค้ดของโปรแกรมแต่ละสเตจเม็นต์ปิดท้ายด้วยเครื่องหมาย ; ดังนั้นโปรแกรมสามารถเขียนสเตจเม็นต์ได้มากกว่าหนึ่งสเตจเม็นต์ในหนึ่งบรรทัดของซอร์สโค้ด หรือสามารถเขียนสเตจเม็นต์โดยมีความยาวมากกว่าหนึ่งบรรทัดก็สามารถทำได้
int i;
System.out.print("Hello");

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

วันศุกร์ที่ 5 กรกฎาคม พ.ศ. 2556

ชนิดข้อมูลพื้นฐาน ภาษา java



ชนิดข้อมูลพื้นฐาน (Primitive Data Type)
         ภาษา Java มีการกำหนดโครงสร้างแบบข้อมูลพื้นฐานไว้เรียกว่า Primitive Data Type ซึ่งมีการกำหนดค่าเริ่มต้น (default) ให้กับตัวแปรของชนิดข้อมูลพื้นฐานทุกตัวดังตารางต่อไปนี้



วันศุกร์ที่ 28 มิถุนายน พ.ศ. 2556

การติดตั้งและใช้งานโปรแกรม ตัวแปลภาษาจาวา


          ขั้นตอนการดาวน์โหลดโปรแกรม Java SE Development Kit (ซึ่ง จะรวม JRE-Java Runtime Environment เอาไว้แล้ว)

1. เข้าเว็บไซต์ www.oracle.com

2. เลือกรายการ Downloads ที่รายการย่อย Popular Download เลือก Java for Developers


3. เลือก Java Platform (JDK) 7u2 หรือเวอร์ชั่นหลัง จากนี้




4.เลือกดาวน์โหลดซอฟต์แวร์เวอร์ชั่นที่ต้องการตัวอย่างเช่นสําหรับ Windows32Bit เลือก jdk-7u2-windows-i586.exe หรือสําหรับ Windows64Bit เลือก jdk-7u2-windows-x64.exe



5.ทําการติดตั้ง JavaSEDevelopmentKit โดยการสั่งรันโปรแกรมที่ดาวน์โหลดมาแล้วกดปุ่ม Next จนกระทั้งติดตั้งเสร็จเรียบร้อย


6. ทําการตรวจสอบโปรแกรมที่ติดตั้งว่าเรียบร้อยหรือไม่ โดยการเลือก Control Panel -> Add or Remove Programs แล้วตรวจดวู่า มีโปรแกรม Java และ Java Development Kit ติดตั้ง อยู่หรือไม่


7. ทาการตั้งตําแหน่ง ที่อยู่ของโปรแกรมแปลภาษา Java โดยการเลือก System Properties -> Environment Variables


8.ที่ SystemVariables เลือก Path->Edit



  9. ทาการเพิ่มข้อมูลต่อท้ายดังนี้ ;C:\Program Files\Java\jdk1.7.0_02\bin\ แล้วกด OK




10. สร้างไดเร็กตอรี่สาหรับเก็บโปรแกรม ตัวอย่างเช่น C:\55019999\java 

11.เขียนโปรแกรมโดยใช้โปรแกรม Notepad หรือโปรแกรม Edit ตั้งชื่อแฟ้มข้อมูลและชนิดชนิดข้อมูลจะต้องเป็น java ตัวอย่างเช่น HelloProgram.java แล้วเก็บโปรแกรมไว้ที่ไดเร็กตอรีที่จองไว้ ตัวอย่างเช่น C:\55019999\java\HelloProgram.java



11.เปิดโปรแกรม Command Prompt เปลี่ยนไดเร็กตอรี่ไปท่ีเก็บโปรแกรมอยู่ตัวอย่างเช่น cdc:\55019999\java 

12. ทําการคอมไพล์โปรแกรม โดยใช้คาสั่ง javac HelloProgram.java จะได้โปรแกรมชื่อ HelloProgram.class 

13. ทาการรันโปรแกรมโดยใช้คาสั่ง java HelloProgram



เครติดภาพจาก อ.วิบลูย์ พร้อมพานิชย์