หน้าเว็บ

ຕົວດຳເນີນການແບບບິດ

ຕົວ​ດຳ​ເນີນ​ການ​ແບບ​ບິດ

ຕົວ​ດຳ​ເນີນ​ການ​ແບບ​ບິດ​ເປັນ​ຕົວ​ດຳ​ເນີນການ​ທີ​ໃຊ້​ກັບ​ຂໍ້​ມູນ​ຊະນິດ​ຕົວ​ເລກ​ຈຳນວນ​ເຕັມ ​ເພື່ອ​ຈັດກາ​ນກັບ​ຂໍ້​ມູນ​ເຊີງ​ບິດຫລື​ເພື່ອ​ເລື່ອນ​ບິດ ​ໂດຍມີ​ເຄື່ອງໝາຍ​ຕ່າງໆ ດັ່ງ​ສະ​ແດງ​ໃນ​ຕາລາງ​ທີ2.14 ​ແລະ​ຕາລາງ​ທີ2.15

ຕາຕະລາງ​ທີ2.14 ຕົວດຳ​ເນີນ​ການ​ເພື່ອ​ຈັດການ​ກັບ​ຂໍ້​ມູນ​ເຊີງ​ບິດ
​ເຄື່ອງໝາຍ
ຄວາມ​ໝາຍ
~
Complement
&
AND
|
OR
^
XOR

ຕາຕະລາງ​ທີ2.15 ຕົວ​ດຳ​ເນີນ​ການ​ເພື່ອ​ເລື່ອນ​ບິດ
​ເຄື່ອງໝາຍ
ຄວາມ​ໝາຍ
>> 
Signed right shift
>>> 
Unsigned right shift
<< 
Left shift

    ​ເຄື່ອງໝາຍ ~,&,| ​ແລະ ^ ​ໃຊ້​ໃນ​ການ​ຈັດການ​ຂໍ້​ມູນ​ເຊີງ​ບິດ ​ເຊັ່ນ: 4^3 ຄື 0100 ທີ່​ທຳ​ການ XOR ກັບ 0011 ຈະ​ມີ
ຄ່າ​ເປັນ 0111 ສ່ວນ​ເຄື່ອງໝາຍ >>,>>> ​ແລະ << ​ເປັນ​ຕົວ​ດຳ​ເນີນ​ການ​ເພື່ອ​ເລື່ອນ​ບິດ ​ໂດຍ​ຈະ​ໃຊ້​ກັບ​ຊະນິດ​ຂໍ້​ມູນ​ຈຳນວນ​ເຕັມທີ່​ເປັນ int ຫລື long ຕາມ​ລຳດັບ ດັ່ງ​ນັ້ນ​ຄຳ​ສັ່ງ
          int x = 8;
          System.out.println(x >> 32);
     ໝາຍ​ເຖິງການ​ເລື່ອນ​ບິດ​ຂອງ​ຕົວ​ແປ x ​ໄປ 0 ບິດ ບໍ່​ແມ່ນ 32 ບິດ
     ​ເຄື່ອງໝາຍ >> ​ເປັນ​ການ​ເລື່ອນ​ບິດ​ໂດຍ​ພິຈາລະນາ​ຈາກ​ເຄື່ອງໝາຍ ​ເຊິ່ງຖ້າ​ບິດ​ທາງ​ຊ້າຍ​ເປັນ 1 ກໍ່​ຈະ​ໃສ່ 1 ​​ແທນ​ແຕ່​ຖ້າ​ເປັນ​ຄ່າ 0 ​ແທນ ສ່ວນ​ເຄື່ອງໝາຍ >>> ​ແລະ << ຈະ​ເປັນ​ການ​ເລື່ອນ​ບິດ​ໂດຍ​ບໍ່​ພິຈາລະນາ​ເຄື່ອງໝາຍ​ກ່າວ​ຄື​ຈະ​ໃສ່​ຄ່ 0 ສະ​ເໜີ ການ​ເລື່ອນ​ບິດ​ໄປ​ທາງ​ຂວາ (>>) ຄື​ການ​ຫານ​ຂອງ​ຈຳນວນ​ເຕັມ​ດ້ວຍ​ຄ່າ 2 ຍົກ​ກຳລັງ​ຈານ​ວນບິດ​ທີ່​ຈະ​ເລື່ອນ ສ່ວນການ​ເລື່ອນບິດ​​ໄປ​ທາງ​ຊ້າຍ (<<) ​ຈະ​ເປັນ​ການ​ຄຸນ​ເລກ​ຈຳນວນ​ເຕັມ​ດ້ວຍ​ຄ່າ 2 ຍົກ​ກຳລັງ​ຈຳນວນ​ບິດ​ທີ່​ຈະ​ເລື່ອນ ຕົວຢ່າງ​ເຊັ່ນ:
                  128 >> 1 ຄື 128/21 = 64
                  -128 >> 4 ຄື -128/24 = -8
                  128 << 2 ຄື 128 * 22 = 512
2.5.5 ລຳດັບ​ຄວາມ​ສຳຄັນ​ຂອງ​ຕົວ​ດຳ​ເນີນ​ການ
       ກໍລະ​ນີນິພົດ​ໃດໆ ມີ​ຕົວ​ດຳ​ເນີນ​ການ​ຫລາຍ​ກວ່າ​ໜຶ່ງຕົວ ພາສາ​ຈາ​ວາ​ຈະ​ຈັດ​ລຳດັບ​ຄວາມ​ສຳຄັນ​ຂອງຕົວ​ດຳ​ເນີນ​ການ​ເພື່ອ​ຄຳນວນ​ຫາ​ຜົນ​ລັບ​ຕາມ​ລຳດັບ​ຄວາມ​ສຳຄັນ​ຂອງ​ຕົວດຳ​ເນີນ​ການ ​ໂດຍ​ມີ​ລຳດັບ​ຄວາມ​ສຳຄັນ​ດັ່ງ​ສະ​ແດງ​ໃນ​ຕາຕະລາງ​ທີ2.16

ຕາ​ຕະລາງ​ທີ2.16 ລຳດັບ​ຄວາມ​ສຳຄັນ​ຂອງ​ຕົວ​ດຳ​ເນີນ​ການ
ລຳດັບ
ລຽງ​ຈາກ
ຕົວ​ດຳ​ເນີ​ນການ
1
ຂວາ​​ໄປ​ຊ້າຍ (R to L)
++,--,+,-,~,!(data type)
2
ຊ້າຍ​ໄປ​ຂວາ (L to R)
*,/,%
3
ຊ້າຍ​ໄປ​ຂວາ (L to R)
+,-
4
ຊ້າຍ​ໄປ​ຂວາ (L to R)
<<,>>,>>>
5
ຊ້າຍ​ໄປ​ຂວາ (L to R)
<,>,<=,>=,instanceof
6
ຊ້າຍ​ໄປ​ຂວາ (L to R)
==,!=
7
ຊ້າຍ​ໄປ​ຂວາ (L to R)
&
8
ຊ້າຍ​ໄປ​ຂວາ (L to R)
^
9
ຊ້າຍ​ໄປ​ຂວາ (L to R)
|
10
ຊ້າຍ​ໄປ​ຂວາ (L to R)
&&
11
ຊ້າຍ​ໄປ​ຂວາ (L to R)
||
12
ຂວາ​​ໄປ​ຊ້າຍ (R to L)
?:
13
ຂວາ​​ໄປ​ຊ້າຍ (R to L)
=,+=,-=,,/=,%=,<<=
>>=,>>>=,&=,^=,|=
ຕົວຢ່າງ​ເຊັ່ນ ຄຳ​ສັ່ງ
      x = 2+3*4-(7+2);
ຈະ​ຄຳນວນ​ຫາ​ຕາມ​ລຳດັບ​ດັ່ງ​ນີ້
1.   ຄຳນວນຫາຜົນ​ລັບ 7+2 ​ເຮັດ​​ໃຫ້​ໄດ້
        x = 2+3*4-9
2.   ຄຳນວນ​ຫາ​ຜົນ​ລັບ​ຄ່າ 3*4 ​ເຮັດ​ໃຫ້​ໄດ້
     x = 2+12-9
3.   ຄຳນວນ​ຫາ​ຜົນ​ລັບ​ຄ່າ 2+12 ​ເຮັດ​ໃຫ້​ໄດ້
        x = 14-9
4.   ຄຳນວນ​ຫາ​ຜົນ​ລັບ​ຄ່າ 14-5 ​ເຮັດ​ໃຫ້​ໄດ້
x=5
2.6  ການ​ແປງ​ຊະນິດ​ຂໍ້​ມູນ
      ນິພົດ​ທາງ​ຄະນິດສາດ​ໃນ​ພາສາ​ຈາ​ວາອາດ​ມີ​ຕົວ​ຖືກ​ດຳ​ເນີນ​ການ​ທາງ​ຄະນິດສາດ ທີ່​ມີ​ຊະນິດ​ຂໍ້​ມູນ​ເປັນປະ​ເພດ​ຕ່າງໆ ພາສາ​ຈາ​ວາ​ໄດ້​ກຳນົດ​​ໃຫ້​ຜົນ​ລັບ​ຂອງ​ນິພົດ​ເປັນ​ດັ່ງ​ນີ້
  • ​ໃນ​ກໍລະນີ​ທີ່​ຖືກ​ດຳ​ເນີນ​ການ​ທັງ​ສອງ​ຕົວ​ມີ​ຊະນິດ​ຂໍ້​ມູນ​ເປັນ double ຄື​ກັນ ຈະ​ເຮັດ​ໃຫ້​ໄດ້ຜົນ​ລັບ​ທີ່​ມີ​ຊະນິດ​ຂໍ້​ມູນ​ເປັນ double
  • ​ໃນ​ກໍລະນີ​ທີ່​ຕົວ​ດຳ​ເນີນ​ການ​ທັງ​ສອງ​ຕົວ​ມີ​ຊະນິດ​ຂໍ້​ມູນ​ເປັນ float ຄື​ກັນ ຈະ​ເຮັດ​ໃຫ້​ໄດ້ຜົນ​ລັບ​ທີ່​ມີ​ຊະນິດ​ຂໍ້​ມູນ​ເປັນ float
  • ​ໃນ​ກໍລະນີ​ທີ່​ຕົວ​ດຳ​ເນີນ​ການ​ທັງ​ສອງ​ມີ​ຊະນິດ​ຂໍ້​ມູນທີ່​ແຕກ​ຕ່າງ​ກັນ ພາສາ​ຈາ​ວາ​ຈະ​ມີ​ຫລັກການ​ແປງ​ຊະນິດ​ຂໍ້​ມູນ (type conversion) ດັ່ງ​ນີ້
    • ຖ້າ​ຕົວ​ຖືກ​ດຳ​ເນີນ​ການ​ຕົວ​ໜຶ່ງ​ມີ​ຊະນິດ​ຂໍ້​ມູນ​ເປັນ double ຕົວ​ຖືກ​ດຳ​ເນີນ​ການ​ອີກ​ຕົວ​ໜຶ່ງ​ຈະ​ຖືກ​ແປງ​ໃຫ້​ມີ​ຊະນິຂໍ້​ມູນ​​ເປັນ double ​ໂດຍ​ອັດຕະ​ໂນ​ມັດ
    • ຖ້າ​ຕົວ​ຖືກ​ດຳ​ເນີນ​ການ​ທັງ​ສອງບໍ່​ໄດ້​ມີ​ຊະນິດ​ຂໍ້​ມູນ​ເປັນ double ​ແຕ່​ມີ​ຕົວ​ຖືກ​ດຳ​ເນີນ​ການ​ຕົວ​ໜຶ່ງ​ທີ່​ມີ​ຊະນິດ​ຂໍ້​ມູນ​ເປັນ float ຕົວ​ຖືກ​ດຳ​ເນີນ​ການ​ອີກ​ຕົວ​ໜຶ່ງ​ຈະ​ຖືກແປງ​ໃຫ້​ມີ​ຊະນິດ​ຂໍ້​ມູນ​ເປັນ float ​ໂດຍ​ອັດຕະ​ໂນ​ມັດ
    • ຖ້າ​ຕົວ​ຖືກ​ດຳ​ເນີ​ນການ​ທັງ​ສອງ​ບໍ່​ໄດ້​ມີ​ຊະນິດ​ຂໍ້​ມູນ​ເປັນ double ຫລື float ​ແຕ່​ມີ​ຕົວ​ຖືກ​ດຳ​ເນີນ​ການ​ຕົວ​ໜຶ່ງ​ທີ່​ມີ​ຊະ​ນິດ​ຂໍ້​ມູນ​ເປັນ long ຕົວ​ຖືກ​ດຳ​ເນີນ​ການ​ອີກ​ຕົວ​ໜຶ່ງ​ຈະ​ຖືກ​ແປງ​ໃຫ້​ມີ​ຊະນິດ​ຂໍ້​ມູນ​ເປັນ ​long ໂດຍ​ອັດຕະ​ໂນ​ມັດ
    • ກໍລະນີ​ອື່ນໆ ຕົວ​ຖືກ​ດຳ​ເນີນ​ການ​ທັງ​ສອງ​ຈະ​ແປງ​ໃຫ້​ມີ​ຊະນິດ​ຂໍ້​ມູນ​ເປັນ int

     ຈາ​ກຫລັກການ​ທາງ​ເທິງ​ຈະ​ເຫັນ​​ໄດ້​ວ່າ​ຜົນ​ລັບ​ທີ່​ໄດ້​ຈາ​ກການ​ຄຳນວນ​ນິພົດ​ຄະນິດ​ສາ​ດ ຈະ​ມີ​ຊະນິດ​ຂໍ້​ມູນ​ເປັນ int ​ເປັນ​ຢ່າງ​ນ້ອຍ ດັ່ງ​ນັ້ນ​ຄຳ​ສັ່ງ​ຕໍ່​ໄປ​ນີ້
              byte b1, b2, b3;
              b1 = 2;
              b2 = 4;
              b3 = b1+b2; // illegal
     ຈຶ່ງ​ເປັນ​ຄຳ​ສັ່ງ​ທີ່​ບໍ່​ຖື​ກຕ້ອງ​ເນື່ອງ​ຈາກ b1+b2 ຈະ​ໃຫ້​ຜົນ​ລັບ​ທີ່​ມີ​ຊະນິດ​ຂໍ້​ມູນ​ເປັນ int ​ເຊິ່ງບໍ່​ສາມາດ​ກຳນົດ​ຄ່າ​​ໃຫ້​ກັບ​ຕົວ​ແປ​ທີ່​ມີ​ຊະນິດ​ຂໍ້​ມູນ​ເປັນ byte ​ໄດ້

2.6.1  ການ​​ແປງ​ຂໍ້​ມູນ​ໃນ​ຄຳ​ສັ່ງ​ກຳນົດ​ຄ່າ
       ພາສາ​ຈາ​ວາ​ກຳນົດ​ໃຫ້​ຄຳ​ສັ່ງ​ກຳນົດ​ຄ່າ​ຈະ​ຕ້ອງ​ມີ​ຊະນິດ​ຂໍ້ມູນຂອງ​ຕົວ​ແປ​ທາງ​ດ້ານ​ຊ້າຍ​ແລະ​ຊະນິດ​ຂໍ້​ມູນ​ນິພົດ​ທາງ​ດ້ານ​ຂວາ​ສອດຄ່ອງ​ກັນ ​ເຊັ່ນ:
int i = 4;
double x = 3.0;
​ໃນ​ກໍລະນີ​ຕົວ​ແປ​ແລະ​ນິພົດ​ມີ​ຊະນິດ​ຂໍ້​ມູນ​ທີ່​ແຕກ​ຕ່າງກັນ ຄອມ​ພາຍ​ເລີ​ຂອງ​ພາສາ​ຈາ​ວາ​ຈະ​ທຳ​ການ​ແປງ​ຊະນິດ​ຂໍ້​ມູນ​ທັງ​ສອງ​ຊະນິດ​ໃຫ້​ສອດຄ່ອງ​ກັນ ​ໂດຍ​ການ​​ແປງ​ຊະນິດ​ຂໍ້​ມູນ​ສອງ​ຮູບ​​ແບບ​ຄື:
1.     ການ​ແປງ​ຂໍ້​ມູນ​ທີ່​ກວ້າງ​ຂຶ້ນ (widening conversion) ຄື​ການ​ແປງ​ຈາກ​ຊະນິດ​ຂໍ້​ມູນ​ທີ່​ມີ​ຂະໜາດ​ນ້ອຍ​ກວ່າ​ໄປ​ເປັນ​ຊະນິດ​ຂໍ້​ມູນ​ທີ່​ມີ​ຂະໜາດ​ໃຫຍ່​ກວ່າ
2.     ການ​ແປງ​ຂໍ້​ມູນ​ທີ່​​ແຄບ​ລົງ (narrowing conversion) ຄື​ການ​ແປງ​ຈາກ​ຊະນິດ​ຂໍ້​ມູນ​ທີ່​ມີ​ຂະໜາດ​ໃຫຍ່​ກວ່າ​ໄປ​ເປັນ​ຊະນິດ​ຂໍ້​ມູນ​ທີ່​ມີ​ຂະໜາດ​ນ້ອຍ​ລົງ ​ເຊິ່ງອາດ​ມີ​ຜົນ​ໃຫ້​ເສຍ​ຄວາມ​ລະອຽດ​ຂອງ​ຂໍ້ມູນບາງ​ສ່ວນ​ໄປ

     ພາສາ​ຈາ​ວາ​ກຳນົດ​ຂະໜາດ​ຂອງ​ຊະນິດ​ຂໍ້​ມູນ​ຕ່າງໆ ທີ່​ສາມາດ​ແປງ​ຂໍ້​ມູນ​ໃຫ້​ກວ້າງ​ຂຶ້ນ​ໄດ້ ດັ່ງ​ສະ​ແດງ​ໃນ​ຮູບ​ທີ2.8 ​ເຊິ່ງມີ​ຫລັກການ​ດັ່ງ​ນີ້
·         ຊະນິດ​ຂໍ້​ມູນ​ຕົວ​ເລກ​ຈຳນວນ​ເຕັມ​ສາມາດ​ແປງ​ໃຫ້​ເປັນ​ຊະນິດ​ຂໍ້​ມູນ​ຕົວ​ເລກ​ທົດ​ສະ​ນິຍົມ​ໄດ້
·         ຊະນິດ​ຂໍ້​ມູນ float ສາມາດ​ແປງ​ໃຫ້​ເປັນ​ຊະນິດ​ຂໍ້​ມູນ double ​ໄດ້
·         ຊະນິດ​ຂໍ້​ມູນ​ຕົວ​ເລກ​ຈຳນວນ​ເຕັມ​ມີ​ຂະໜາດ​ລຽງ​ກັນ​ນ້ອຍ​ໄປ​ຫລາຍ​ດັ່ງ​ນີ້
      byte ® short ® int ® long
·         ຊະນິດ​ຂໍ້​ມູນ char ສາມາດ​ແປງ​ໃຫ້​ເປັນ​ຊະນິດ​ຂໍ້​ມູນ int ​ໄດ້
·         ຊະນິດ​ຂໍ້​ມູນ Boolean ຈະ​ບໍ່ມີຄວາມ​ສຳພັນ​ກັບ​ຊະນິດ​ຂໍ້​ມູນ​ແບບ​ພື້ນຖານ​ອື່ນໆ


ຮູບ​ທີ2.8 ການ​​ແປງຊະນິດ​ຂໍ້​ມູນ

     ​ໃນ​ຄຳ​ສັ່ງ​ກຳນົດ​ຄ່າ ຖ້າ​ຜົນ​ລັບ​ຂອງ​ນິພົດ​ເປັນ​ຊະນິດ​ຂໍ້​ມູນ​ທີ​ມີ​ຂະໜາດ​ນ້ອຍ​ກວ່າ​ຊະນິດ​ຂອງ​ຕົວ​ແປ ພາສາ​ຈາ​ວາ​ຈະ​ທຳ​ການ​ແປງ​ຂໍ້​ມູນ​ໃຫ້​ເປັນ​ຊະນິດ​ຂໍ້​ມູນ​ຂອງ​ຕົວ​ແປ​ດັ່ງກ່າວ​ໂດຍ​ອັດຕະ​ໂນ​ມັດ ​ເຊັ່ນ ຄຳ​ສັ່ງ
int i = 4;
long l = i;
      ນິພົດ I ຈະ​ຖືກ​ປັບ​ຊະນິດ​ຂໍ້​ມູນ​ຈາກ int ​ໃຫ້​ເປັນ long ​ໂດຍ​ອັດຕະ​ໂນ​ມັດ
      ຫລື​ຄຳ​ສັ່ງ
double x = 3;
ນິພົດ​ທີ່​ມີຄ່າ​ເປັນ 3 ຈະ​ຖືກ​ປັບ​ຊະນິດ​ຂໍ້​ມູນ​ຈາກ int ​ໃຫ້​ເປັນ double ​ໂດຍ​ອັດຕະ​ໂນ​ມັດ
      ​ໃນ​ກໍລະນີ​ທີ່​ຄຳ​ສັ່ງ​ກຳນົດ​ຄ່າ​ມີ​ຊະນິດ​ຂໍ້​ມູນ​ຂອງ​ຕົວ​ແປ​ທີ່​ມີ​ຂະໜາດ​ນ້ອຍ​ກວ່າ ຊະນິດ​ຂໍ້​ມູນ​ຂອງ​ນິພົດ ພາສາ​ຈາ​ວາ​ຈະ​ບໍ່​ສາມາດ​ແປງ​ຊະນິດ​ຂໍ້​ມູນ​ຂອງ​ນິພົດ​ໃຫ້​ເປັນຂະໜາດ​ທີ່​ນ້ອຍ​ລົງ​ເທົ່າ​ກັບ​ຊະນິດ​ຂໍ້​ມູນ​ຂອງ​ຕົວ​ແປ​ໂດຍ​ອັດຕະ​ໂນ​ມັດ ​ແຕ່​ຄອມ​ພາຍ​ເລີ​ຈະ​ແຈ້​ງຂໍ້​ຜິດພາດ​ໃນ​ຂັ້ນ​ຕອນ​ການ​ຄອມ​ພາຍ (compile error) ຕົວຢ່າງ​ເຊັ່ນ ຄຳ​ສັ່ງ
             int amount = 123L;
         ຫລື
            float f = 4.0;
      ຈະ​ບໍ່​ສາມາດ​ຄອມ​ພາຍ​ຜ່ານ​ໄດ້ ​ເນື່ອງ​ຈາກ​ຊະນິດ​ຂໍ້​ມູນ​ຂອງ​ນິພົດ​ຂະໜາດ​ໃຫຍ່​ກວ່າ​ຊະນິດ​ຂໍ້​ມູນ​ຂອງ​ຕົວ​ແປ

​ ໂປຣ​ແກຣມທີ2.9 ສະ​ແດງ​ຕົວຢ່າງ​ຂອງ​ຂໍ້​ຜີ​ດພາດ​ໃນ​ການ​ແປງ​ຊະນິດ​ຂໍ້​ມູນ ​ເຊິ່ງຈະ​ທຳ​​ໃຫ້​ເປັນ​ໂປ​ຣແກຣມນີ້​ບໍ່​ສາ​ມາ​ຄອມ​ພາຍ​ຜ່ານ​ໄດ້

Text Box: public class PromotionDemo {
      public void showDemo() {
           int i;
           long l;
           float fl = 4.2f;
           i = 4;
           l = i;
           fl = i;
           double x = fl;
           fl = 4.2;               //illegal
      }
}
ໂປຣ​ແກຣມທີ2.9 ​ໂປຣ​ແກຣມທີ່​ມີ​ຂໍ້​ຜິດພາດ​ໃນ​ການ​ແປງ​ຊະນິດ​ຂໍ້​ມູນ















2.6.2 Typecasting
      ພາສາ​ຈາ​ວາ​ສາມາດ​ທຳ​ການ​ແປງ​ຊະນິດ​ຂໍ້​ມູນ ​ໃຫ້​ເປັນ​ຊະນິດ​ຂໍ້​ມູນ​ທີ່​ມີ​ຂະໜາດ​ນ້ອຍ​ລົງ​ໄດ້ ​ໂດຍ​ໃຊ້​ວິທີ​ການ​ທີ່​ເອີ້​ນວ່າ typecasting ​ເຊິ່ງມີ​ຮູ​ບ​ແບບ​ດັ່ງ​ນີ້
(targetType) expression
(targetType) expression
 
 

ໂດຍ​ທີ່
  • targetType ຄື​ຊະນິດ​ຂໍ້​ມູນ​ທີ່​ຕ້ອງການ
ການ​ໃຊ້ typecasting ຈະ​ຊ່ວຍ​ເຮັດ​ໃຫ້​ໂປຣ​ແກຣມທີ​ມີ​ຄຳ​ສັ່ງ​ເຊິ່ງຈຳ​ເປັນ​ຕ້ອງ​ແປງ​ຊະນິດ​ໃຫ້​ມີ​
ຂະໜາດ​ນ້ອຍ​ລົງສາມາດ​ຄອມ​ພາຍ​ເລີ​ຜ່ານ​ໄດ້ ​ແຕ່​ຈະ​ເຮັດ​ໃຫ້​ຂໍ້​ມູນ​ບາງ​ສ່ວນ​ສູນ​ຫາຍ​ໄປ​ໃນ​ບາງ​ກໍລະນີ
   ຕົວຢ່າງ​ເຊັ່ນ ຄຳ​ສັ່ງ
         int amount = (int)3.0;
   ຈະ​ທຳ​ການ​ແປງ​ນິພົດ 3.0 ທີ່​ມີ​ຊະນິດ​ຂໍ້​ມູນ​ເປັນ double ​ໃຫ້​ເປັນ 3 ທີ່​ມີ​ຂໍ້​ມູນ​ເປັນ int 
   ຫລື​ຕົວຢ່າງ​ຄຳ​ສັ່ງ
        int x;
        double y = 1.25;
        x = (int)y;
    ຈະ​ທຳ​ການ​ແປງ​ນິພົດ y ທີ່​ມີຄ່າ1.25 ​ໃຫ້​ມີ​ຊະນິດ​ຂໍ້​ມູນ​ເປັນ int ທີ່​ມີຄ່າ 1 ​ແຕ່​ຈະ​​ເຮັດ​ໃຫ້​ຕົວ​ເລກ​ທີ່​ເປັນ​ສ່ວນ​ທົດ​ສະ​ນິຍົມ​ຫາຍ​ໄປ
    ​ໂປຣ​ແກຣມທີ2.10 ສະ​ແດງ​ຕົວຢ່າງ​ການ​ໃຊ້ typecasting ໃນ​ການ​ແປງ​ຊະນິດ​ຂໍ້​ມູນ ​ໂດຍ​ນິພົດ b1+b2 ຈະ​ໃຫ້​ຜົນ​ລັບ​ທີ່​ມີ​ຊະນິດ​ຂໍ້​ມູນ​ເປັນ int ຈຶ່ງ​ຕ້ອງ​​ແປງ​ຊະນິດ​ຂໍ້​ມູນ​ໃຫ້​ເປັນ byte ​ເພື່ອ​ທີ່​ຈະ​ສາມາດ​ກຳນົດ​ຄ່າ​ໃຫ້​ກັບ​ຕົວ​ແປ b3 ​ເຊິ່ງມີ​ຊະນິດ​ຂໍ້​ມູນ​ເປັນ byte ​ໄດ້ ​ເຊັ່ນ​ດຽວ​ກັນ​ກັບ​ຄ່າ3.2 ​ເຊິ່ງມີ​ຊະນິດ​ຂໍ້​ມູນ​ເປັນ double ຈະ​ຖືກ​ແປງ​ຊະນິດ​ຂໍ້​ມູນ​ໃຫ້​ເປັນ float
ໂປ​ຣ​ແກຣມທີ2.10 ການ​ໃຊ້ ​ typecasting ໃນ​ການ​ແປງ​ຊະນິດ​ຂໍ້​ມູນ
Text Box: public class TypecastingDemo {
     public void showDemo() {
          byte b1 = 4;
          byte b2 = 3;
          byte b3;
          b3 = (byte) (b1 + b2);
          float f1;
          f1 = (float) 3.2;
     }
}
----------------------------------------------------------------
public class Main {
     public static void main(String args[]) {
          TypecastingDemo obj = new TypecastingDemo();
          obj.showDemo();     }
}
 














2.7 ຊະນິດ​ຂໍ້​ມູນ​ແບບ​ອ້າງ​ອີງ
     ຕົວ​ແປ​ຫລື​ຄ່າ​ຄົງ​ທີ່​ທີ່​ປະກອບ​ເປັນ​ຊະນິດ​ຂໍ້​ມູນ​ອື່ນໆ ​ເຊິ່ງບໍ່​ແມ່ນ​ຊະນິດ​ຂໍ້​ມູນ​ແບ​ບພື້ນຖານ ຈະ​ເປັນ​ຊະນິດຂໍ້​ມູນ​ແບບ​ອ້າງ​ອີງ​ເຊິ່ງກໍ່​ຄື​ອອບ​ເຈັກ​ໃນ​ພາສາ​ຈາ​ວາ ​ໂດຍ​ແບ່ງ​ອອກ​ເປັນ​ສອງ​ແບບ​ຄື:
1.   ຊະນິດ​ຂໍ້​ມູນ​ທີ່​ເປັນຄາດ
2.   ຊະນິດ​ຂໍ້​ມູນ​ທີ່​ເປັນ​ອາ​ເລ
ຕົວຢ່າງ​ຂອງ​ຊະນິດ​ຂໍ້​ມູນ​ທີ່​ເປັນຄາດ​ຄື ຊະນິດ​ຂໍ້​ມູນ String ​ໂດຍ String ບໍ່​ແມ່ນ​ຊະນິດ​ຂໍ້​
ມູນ​ແບບ​ພື້ນຖານ ​ແຕ່​ເປັນ​ຄາດ​ທີ່​ນິຍົມ​ໄວ້​ໃນ Java API ​ເຊັ່ນ​ຄຳ​ສັ່ງ
             String id;
     ​ເປັນ​ຄຳ​ສັ່ງ​ປະກາດ​ຕົວ​ແປ id ​ໃຫ້​ເປັນ​ອອບ​ເຈັກ​ຂອງ​ຄາດ String ສຳ​ຫລັບ​ຕົວຢ່າງ​ຂອງ​ຊະນິຂໍ້​ມູນ​ທີ່​ເປັນ​ອາ​ເລ​ຖືກ​ກ່າວ​ເຖິງ​ໃນ​ບົດ​ທີ8
    ຊະນິດ​ຂໍ້​ມູນ​ແບບ​ອ້າງ​ອີງ​ຈະ​ມີ​ວິທີ​ການ​ເກັບ​ຂໍ້​ມູນ​ໃນ​ໜ່ວຍ​ຄວາມ​ຈຳ​ທີ່​ແຕກ​ຕ່າງ​ຈາກ​ການ​ເກັບ​ຂໍ້​ມູນ​ຂອງ​ຊະນິດ​ຂໍ້​ມູນ​ແບບ​ພື້ນ​ຖານ ທັງ​ນີ້​ຂໍ້​ມູນ​ທີ່​ເກັບ​ໃນ​ໜ່ວຍ​ຄວາມ​ຈຳ​ຂອງ​ຊະນິດ​ຂໍ້​ມູນ​ແບບ​ອ້າງ​ອີງ​ຈ​ະ​ເປັນ​ຕຳ​ແໜ່​ງອ້າງ​ອີງ​ທີ່​ເກັບຂໍ້​ມູນ​ໃນ​ໜ່ວຍ​ຄວາມ​ຈຳ​ ​ແຕ່​ໃນ​ກໍລະນີ​ຂອງ​ຊະນິດ​ຂໍ້​ມູນ​ແບບ​ພື້ນຖານ ຂໍ້​ມູນ​ທີ່​ເກັບ​ໃນ​ໜ່ວຍ​ຄວາມ​ຈຳ​ຈະ​ເປັນ​ຄ່າ​ຂອງ​ຂໍ້​ມູນ​ຈິງ ​ເຊັ່ນ ຄຳ​ສັ່ງ
         int x = 7;
         String s = new String(“Thana”);
     ​ເປັນ​ການ​ປະກາດ​ຕົວ​ແປ​ທີ​ມີ​ຊະນິດ​ຂໍ້​ມູນ​ແບບ​ພື້ນຖານ int ທີ່​ຊື່ x ​ແລະ​​ໃຫ້​ເກັບ​ຄ່າ​ເປັນ 7 ​ແລະ​ເປັນ​ການ​ປະກາດ​ຕົວ​ແປ​ຊະນິດ​ຂໍ້​ມູນ​ແບບ​ອ້າງ​ອີງ (​ເຊິ່ງກໍ່​ຄື​ອອບ​ເຈັກ) s ຂອງ​ຄາດ String
​ແລະ​ໃຫ້​ເກັບ​ຄ່າ​ເປັນ​ຂໍ້ຄວາມ​ວ່າ Thana ​ເຊິ່ງຕົວ​ແປ​ທັງ​ສອງ​ຕົວ​ອາດ​ຈະ​ເກັບ​ຂໍ້​ມູນ​ໃນ​ໜ່ວຍ​ຄວາມ​ຈຳ​ດັ່ງສະ​ແດງ​ໃນ​ຮູ​ບທີ2.9 ​ເຊິ່ງຄ່າ​ທີ່​ເກັບ​ໃນ​ຕົວ​ແປ x ຈະ​ເປັນ​ຄ່າ​ຂໍ້​ມູນທີ່​ເປັນ​ຄ່າ7 ສ່ວນ​ຄ່າ​ຂອງ​ຕົວ​ແປ s ຈະ​ເປັນ​ຕຳ​ແໜ່​ງອ້າງ​ອີງ​ໃນ​ໜ່ວຍ​ຄວາມ​ຈຳ​ທີ່​ໃຊ້​ເກັບ​ຂໍ້ຄວາມ​ວ່າ Thana

ຮູບ​ທີ2.9 ຕົວຢ່າງ​ຂອງ​ການ​ເກັບ​ຂໍ້​ມູນ​ໃນ​ໜ່ວຍ​ຄວາມ​ຈຳ
     ການ​ປະກາດ​ຕົວ​ແປ (ຫລື​ອອບ​ເຈັກ) ຂອງ​ຊະນິດ​ຂໍ້​ມູນ​​ແບບ​ອ້າງ​ອີງ​ຈະ​ເປັນ​ພຽງ​ການ​ປະກາດ​ຊື່​ຕົວ​ແປ (ຫລື​ອອບ​ເຈັກ) ​ແຕຈະ​ບໍ່​ມີ​ການ​ຈອງ​ເນື້ອ​ທີ່​ໃນ​ໜ່ວຍ​ຄວາມ​ຈຳ​ເພື່ອ​ເກັບ​ຂໍ້​ມູນ ​ໃນ​ກໍລະນີ​ທີ່​ຕົວ​ແປ​ດັ່ງກ່າວ​ເປັນ​ຄຸນ​ລັກສະ​ນະ​ຂອງ​ອອບ​ເຈັກ ຫລື​ຄຸນ​ລັກສະນະ​ຂອງ​ຄາດ ພາສາ​ຈາ​ວາ​ກຳນົດ​ຕຳ​ແໜ່​ງອ້າງ​ອີງ​ເລີ່​ມຕົ້ນ​ໃຫ້​ມີຄ່າ​ເປັນ null ​ໂດຍ​ອັດຕະ​ໂນ​ມັດ ​ເຊິ່ງ​ເນື້ອ​ທີ່​ໃນ​ໜ່ວຍ​ຄວາມ​ຈຳ​ເພື່ອ​ເກັບ​ຂໍ້​ມູນ​ຕ່າງ​ໆ ຂອງ​ຕົວ​ແປ​ຊະນິດ​ຂໍ້​ມູນ​ແບບ​ອ້າງ​ອີງ​ຈະ​ຖືກ​ສ້າງ​ຂຶ້ນ ​ເມື່ອ​ມີ​ການ​ເອີ້ນ​ໃຊ້​ຄຳ​ສັ່ງ new ​ເຊັ່ນ ຄຳ​ສັ່ງ
          Date d;
      ​ເປັນຄຳ​ສັ່ງ​ໃນ​ການ​ປະກາດ​ຕົວ​ແປ (ຫລື​ອອບ​ເຈັກ) d ​ໃຫ້​ເປັນ​ຄາດ​ຊະນິດ Date ທີ່​ກຳນົດ​ໄວ້​ໃນ Java API​ ແລະຈະ​ໄດ້​ຄ່າ​ໃນ​ໜ່ວຍ​ຄວາມ​ຈຳ​ດັ່ງ​ສະ​ແດງ​ໃນ​ຮູບ​ທີ2​.10(ກ)
      ​ແລະ​ຄຳ​ສັ່ງ
              d = new Date (16, 8, 2002);
      ຈະ​ເປັນ​ຄຳ​ສັ່ງ​ໃນ​ການ​ຈອງ​ເນື້ອ​ທີ່​ໃນ​ໜ່ວຍ​ຄວາມ​ຈຳ​ເພື່ອ​ເກັບ​ລັກສະນະ​ຂອງ​ອອບ​ເຈັກ​ທີ່​ຊື່ d ທີ່​ມີ​ຢູ່ 3 ຕົວ​ ຄື day, month ​ແລະ year ​ເຊິ່ງມີ​ຊະນິດ​ຂໍ້​ມູນ​ເປັນ int ດັ່ງ​ສະ​ແດງ​ໃນ​ຮູບ​ທີ2.10 (ຂ)

ຮູບ​ທີ2.10 ຕົວຢ່າງ​ຂອງ​ການ​ເກັບ​ຂໍ້​ມູນ​ໃນ​ໜ່ວຍ​ຄວາມ​ຈຳ

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

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