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

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" เป็นต้น

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

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