วันพุธที่ 28 มกราคม พ.ศ. 2558

Java พื้นฐาน - Variable Types ชนิดของตัวแปร

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


- ประกาศตัวแปรแบบ Local ไว้ใน method

public class Test {
 
 public static void main(String[] args) {

 }
 
 // Method ที่ทำการประกาศตัวแปร
 public static void declareVariableInMethod(){
  int i = 0; // ตัวแปรที่ถูกประกาศใน method
  System.out.println(i);
  // ตัวแปรจะถูกทำลายหลังจากจบ method
 }
 
}



- ประกาศตัวแปรแบบ Local ไว้ใน Constructor

public class Student {
 
 // ประกาศตัวแปร variableInConstructor ไว้ใน Constructor 
 public Student(){
  String variableInConstructor = "test"; // ตัวแปรที่ถูกประกาศไว้ใน Constructor
  
  // เมื้อสิ้นสุด Constructor ตัวแปรจะถูกทำลายไปด้วย
 }
 
}


- ประกาศตัวแปรแบบ Local ไว้ใน Block


   block ใน Java นั้นก็เช่น If Else

public class Test {
 
 public static void main(String[] args) {
  
  // ตัวอย่างการประกาศตัวแปรแบบ Local ใน Block
  if(1 == 1){
   int i = 0; // ตัวแปรที่ถูกประกาศเอาไว้ใน Block
   
   // ตัวแปรจะสิ้นสุดเมื่อจบ block  
  }
 }
 
}





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             

  

public class Student {
 
 // ตัวแปรแบบ Instance โดยใช้ Access Modifier เป็น private เพื่อให้ตัวแปรเหล่านี้ถูกเห็นได้แค่ภายในคลาสนี้เท่านั้น
 private String instanceVariable; // ค่า Default ของ String จะเป็นค่า null
 private int i = 2; // เราสามารถทำการกำหนดค่าให้กับตัวแปรได้เลย
 
 // การเรียกใช้ตัวแปรใน Constructor
 public Student(){
  instanceVariable = "Test Instance Variable";
  i = 3;
 }

}




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 นั้นใช้หลักการเดียวกับการประกาศตัวแปรแบบ Instance ได้เลย เพียงแต่เราจะต้องใส่คำว่า static เอาไว้ที่ข้างหน้าของตัวแปรนั้นๆ

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

               ค่า Default ของตัวแปรแบบ Static นั้นก็เหมือนกับ ตัวแปรแบบ Instance เลย แต่จะมีพิเศษกว่าก็ตรงที่สามารถกำหนดค่าของตัวแปรภายใน static block ได้ด้วย

               หากเราประกาศโดยใช้ keyword public static final เราจะต้องตั้งชื่อตัวแปรให้เป็นตัวอักษรพิมพ์ใหญ่ให้หมดทุกตัวหากต้องการเว้นวรรคคำควรใช้เครื่องหมาย _ 
เช่น  public static final THIS_IS_STATIC_FINAL_VARIABLE 



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


               

ตัวอย่างคลาสที่ทำการประกาศตัวแปรแบบ static

// ตัวอย่างคลาสที่ทำการประกาศตัวแปรแบบ static
public class TestStaticVariable {

 private static String privateStatic; // การประกาศตัวแปร static โดยไม่กำหนดค่าให้ โปรแกรมจะทำการใส่ค่า default ให้โดยอัตโนมัติ ซึ่งค่า default ของ String ก็คือค่า null 
 public static String publicStatic; // เราสามารถประกาศคัวแปร static โดยใช้ Access Modifier ได้ซึ่งในที่ี้นี้จะคำว่า public
 
 public static final String STATIC_FINAL_VARIABLE = "test";// การประกาศโดยใช้คำว่า final มาร่วมกับ static เราจะต้องตั้งชื่อตัวแปรให้เป็นตัวพิมพ์ใหญ่ให้หมด และเราจะต้องทำการกำหนดค่าให้ตัวแปรทุกครั้งที่ประกาศ เพราะเราไม่สามารถใช้ค่า Default ได้
 
}


ตัวอย่างคลาสที่การเรียกใช้งานตัวแปรแบบ static

// ตัวอย่างคลาสที่การเรียกใช้งานตัวแปรแบบ static 
public class CallStaticVariable {

 public static void main(String[] args) {
  // เราจะลองเรียกตัวแปร static หรือตัวแปรของ Class TestStaticVariable
  // วิธีเรียกจะเป็นดังนี้
  //String test = TestStaticVariable.privateStatic; // บรรทัดนี้จะ error เพราะตัวแปร static ของคลาส TestStaticVariable ถูกประกาศการเข้าถึงเป็นแบบ private จะทำให้ไม่สามารถเรียกใช้ตัวแปรนี้ผ่านคลาสอื่นๆได้ 
  String test2 = TestStaticVariable.publicStatic; // ตัวแปร static นี้ถูกประกาศการเข้าถึงเอาไว้เป็นแบบ public ทำให้สามารถเรียกใช้งานตัวแปรนี้ผ่านทางคลาส CallStaticVariable ได้
  String test3 = TestStaticVariable.STATIC_FINAL_VARIABLE; // ตัวอย่างการเรียกใช้ตัวแปร static ที่มีการประกาศเอาไว้แบบ final
 }

}





https://www.facebook.com/coachingcode


ไม่มีความคิดเห็น:

แสดงความคิดเห็น