ให้เรตสมาชิก: 2 / 5

ดาวใช้งานดาวใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

Java - Variable Types

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

1. Local variables - ตัวแปรที่ถูกประกาศใน method, constructor, block

2. Instance variables - ตัวแปรของ object

3. Static variables - ตัวแปรของ Class

1. Local variables - ตัวแปรที่ถูกประกาศใน method, constructor หรือ block

               Local variables เป็นตัวแปรที่ถูกประกาศใน method, constructors หรือ blocks โดยจะถูกสร้างขึ้นเมื่อ method, constructors หรือ block ถูกเรียกใช้ และจะถูกทำลายเมื่อสิ้นสุด method, constructors หรือ block โดยตัวแปรแบบ Local นั้นจะถูกมองเห็นเฉพาะขอบเขตที่ถูกประกาศเอาไว้เท่านั้น เช่น ถ้าประกาศตัวแปรเอาไว้ใน method ตัวแปรนั้นก็จะสามารถใช้งานได้ภายใน method นั้นเท่านั้น

               ตัวแปรแบบ Local นั้นจะไม่มีค่า Default ดังนั้นเราจึงควรที่จะใส่ค่าให้กับตัวแปร Local ในตอนที่เราได้ทำการประกาศตัวแปร

ตัวอย่าง การประกาศตัวแปรแบบ Local

public class Test {

    public void pupAge() {

        int age = 0;

        age = age + 7;

        System.out.println("Puppy age is : " + age);

    }

    public static void main(String args[]) {

        Test test = new Test();

        test.pupAge();

    }

}

ผลการรัน

Puppy age is: 7

2. Instance variables - ตัวแปรของ object

               ตัวแปรแบบ Instance นั้นจะถูกประกาศเอาไว้ในคลาส แต่จะอยู่ภายนอกของ method, constructor และ block ต่างๆ ซึ่งตัวแปรแบบ Instance นั้นจะถูกสร้างขึ้นก็ต่อเมื่อมีการสร้าง Object ขึ้นมา

การเรียกใช้ตัวแปรแบบ Instance นั้นสามารถเรียกใช้ภายใน method, constructor หรือใน block ได้

เรายังสามารถใส่ Access Modifiers ให้กับตัวแปรแบบ Instance ได้ซึ่งจะทำให้เราสามารถกำหนดระดับการเข้าถึงตัวแปรนั้นๆได้ เช่น กำหนดให้เห็นได้เฉพาะในคลาส หรือจะให้คลาสอื่นสามารถเห็นก็ได้ แต่โดยปกติแล้วตัวแปรแบบ Instance นั้นเราจะกำหนด Access Modifier ให้เป็น private เพื่อที่ตัวแปรนั้นๆจะถูกใช้ได้แค่ภายในคลาสที่ทำการประกาศตัวแปรเอาไว้เท่านั้น

               หากเราไม่กำหนดค่าให้ตัวแปร Instance  ตัวแปร Instance จะมีค่า Default ให้เองโดยอัตโนมัติ

ซึ่งขึ้นอยู่กับชนิดของตัวแปรข้อมูลที่เราได้ทำการประกาศไว้ เช่น ประกาศตัวแปรเอาไว้เป็น int i; ค่า default ของ i จะเท่ากับ 0 โดยอัตโนมัติ

ตัวอย่าง การประกาศตัวแปรแบบ Instance    

import java.io.*;

public class Employee {

    // this instance variable is visible for any child class.

    public String name;

    // salary variable is visible in Employee class only.

    private double salary;

    // The name variable is assigned in the constructor.

    public Employee(String empName) {

        name = empName;

    }

    // The salary variable is assigned a value.

    public void setSalary(double empSal) {

        salary = empSal;

    }

    // This method prints the employee details.

    public void printEmp() {

        System.out.println("name  : " + name);

        System.out.println("salary :" + salary);

    }

    public static void main(String args[]) {

        Employee empOne = new Employee("Ransika");

        empOne.setSalary(1000);

        empOne.printEmp();

    }

}

ผลการรัน

name  : Ransika
salary :1000.0

3. Static variables - ตัวแปรของ Class

ตัวแปรแบบ Static หรือตัวแปรของ Class นั้นจะมีการประกาศคล้ายๆ กับตัวแปรแบบ Instance โดยจะแตกต่างกันที่ ตัวแปรแบบ Static นั้นจะมีการประกาศคำว่า Static เอาไว้ข้างหน้าของตัวแปรเช่น static String testStatic; และข้อแตกต่างอีกอย่างหนึ่งก็คือ ตัวแปรแบบ Static จะเอาไว้ใช้กับคลาสเท่านั้น ซึ่งคลาสจะสามารถมีได้แค่ 1 คลาส ส่วนตัวแปรแบบ Instance นั้นจะเกิดขึ้นก็ต่อเมื่อมีการสร้าง Object ขึ้นมา ซึ่ง Object ต่างๆก็จะเกิดขึ้นมาจากคลาส แต่คลาส 1 คลาสสามารถสร้าง Object ได้ไม่จำกัด โดยที่ตัวแปรแบบ Instance นั้นจะใช้ได้แค่ใน Object เดียว ซึ่งถ้าหากเราทำการสร้าง Object ใหม่อีกเราก็จะได้ตัวแปรอันใหม่สำหรับ Object ที่เราสร้างใหม่ ซึ่งไม่เกี่ยวกับ Object เดิมที่เคยสร้างไว้

ตัวอย่าง การประกาศตัวแปรแบบ Static

import java.io.*;

public class Employee {

    // salary variable is a private static variable

    private static double salary;

    // DEPARTMENT is a constant

    public static final String DEPARTMENT = "Development ";

    public static void main(String args[]) {

        salary = 1000;

        System.out.println(DEPARTMENT + "average salary:" + salary);

    }

}

ผลการรัน

Development average salary:1000

 

 

 

 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
งานประจำวันที่ 19 กันยายน 2561
โดย tatiya พ 19 ก.ย. 2018 9:26 am บอร์ด M065 - ตติยะ นาชัย
0
1
พ 19 ก.ย. 2018 9:26 am โดย tatiya
B - ระบบแสดงยอดสต็อค On Hand ของ product set ไม่ถูกต้อง
โดย rinrada พ 19 ก.ย. 2018 8:36 am บอร์ด Hachanna - Testter
0
4
พ 19 ก.ย. 2018 8:36 am โดย rinrada
งานประจำวันที่ 18 กันยายน 2561
โดย muneela อ 18 ก.ย. 2018 10:22 am บอร์ด M068 - มุนีลา หมัดบาซา
1
4
อ 18 ก.ย. 2018 7:08 pm โดย muneela
B - ไม่ปรากฏในแดชบอร์ดคำสั่งซื้อที่ส่ง [2018-09][006]
โดย muneela อ 18 ก.ย. 2018 10:14 am บอร์ด Hachanna - Testter
2
7
อ 18 ก.ย. 2018 6:00 pm โดย muneela
งานประจำวันที่ 18 กันยายน 2561
โดย pprn อ 18 ก.ย. 2018 10:14 am บอร์ด MT25 - นางสาวปรียากมล รินนาศักดิ์
1
6
อ 18 ก.ย. 2018 7:10 pm โดย pprn
งานประจำวันที่ 18 กันยายน 2561
โดย tai14 อ 18 ก.ย. 2018 10:02 am บอร์ด MT26 - นางสาวอัครยุภา ยงยุทธ
1
3
อ 18 ก.ย. 2018 7:06 pm โดย tai14
งานประจำวันที่ 18 กันยายน 2561
โดย prakon อ 18 ก.ย. 2018 9:59 am บอร์ด MT24 - นายปกรณ์ วิริยะธนวิโรจน์
1
9
อ 18 ก.ย. 2018 3:11 pm โดย prakon
งานประจำวันที่ 18 กันยายน 2561
โดย tatiya อ 18 ก.ย. 2018 9:15 am บอร์ด M065 - ตติยะ นาชัย
1
10
อ 18 ก.ย. 2018 8:53 pm โดย tatiya
ทำไมจึงมีสถานภาพทางกายภาพ 2 ที่ [2018-09][002]
โดย muneela จ 17 ก.ย. 2018 3:50 pm บอร์ด Hachanna - Testter
3
8
จ 17 ก.ย. 2018 6:08 pm โดย muneela
ยังคงมีปัญหาเหมือนเดิม [2018-09][004]
โดย muneela จ 17 ก.ย. 2018 3:48 pm บอร์ด Hachanna - Testter
2
15
จ 17 ก.ย. 2018 6:28 pm โดย muneela
แคทตาลอคแสดงภาพไม่ตรงกับฐานข้อมูลใน ODOO [2018-09][003]
โดย muneela จ 17 ก.ย. 2018 3:45 pm บอร์ด Hachanna - Testter
7
23
อ 18 ก.ย. 2018 5:27 pm โดย muneela
โดนฝั่ง Script Phishing (ฟิชชิ่ง) แก้ไขหมดแล้ว แต่ยังเข้าเว็บไซต์ไม่ได้ต้องทำอย่างไร ?
โดย tsukasaz จ 17 ก.ย. 2018 12:31 pm บอร์ด Linux - Web Server
0
19
จ 17 ก.ย. 2018 12:31 pm โดย tsukasaz
Q - สอบถามวิธีการ ติดตั้ง pgAmin4 หน่อยครับ
โดย tatiya จ 17 ก.ย. 2018 12:23 pm บอร์ด SQL - Database
0
21
จ 17 ก.ย. 2018 12:23 pm โดย tatiya
VDO - แนะนำ tools_rate
โดย pprn จ 17 ก.ย. 2018 11:39 am บอร์ด MT25 - นางสาวปรียากมล รินนาศักดิ์
0
1
จ 17 ก.ย. 2018 11:39 am โดย pprn
VDO - แนะนำการใช้ tools_fv
โดย pprn จ 17 ก.ย. 2018 11:39 am บอร์ด MT25 - นางสาวปรียากมล รินนาศักดิ์
0
1
จ 17 ก.ย. 2018 11:39 am โดย pprn
VDO - แนะนำการใช้ tools_nper
โดย pprn จ 17 ก.ย. 2018 11:30 am บอร์ด MT25 - นางสาวปรียากมล รินนาศักดิ์
0
2
จ 17 ก.ย. 2018 11:30 am โดย pprn
งานประจำวันที่ 17 กันยายน 2561
โดย tatiya จ 17 ก.ย. 2018 10:22 am บอร์ด M065 - ตติยะ นาชัย
1
4
จ 17 ก.ย. 2018 9:49 pm โดย tatiya
งานประจำวันที่ 17 กันยายน 2561
โดย muneela จ 17 ก.ย. 2018 10:12 am บอร์ด M068 - มุนีลา หมัดบาซา
1
14
จ 17 ก.ย. 2018 7:29 pm โดย muneela
งานประจำวันที่ 17 กันยายน 2561
โดย prakon จ 17 ก.ย. 2018 10:10 am บอร์ด MT24 - นายปกรณ์ วิริยะธนวิโรจน์
1
10
อ 18 ก.ย. 2018 10:00 am โดย prakon
งานประจำวันที่ 17 กันยายน 2561
โดย tai14 จ 17 ก.ย. 2018 10:09 am บอร์ด MT26 - นางสาวอัครยุภา ยงยุทธ
1
6
จ 17 ก.ย. 2018 7:34 pm โดย tai14