Home / ພື້ນຖານ Java / ຕົວປ່ຽນ ແລະ ປະເພດຂໍ້ມູນ
ໃນພາສາ Java ມີຂໍ້ມູນພື້ນຖານ 8 ຊະນິດໃຫ້ສາມາດໃຊ້ງານ ເຮົາມັກຈະເອີ້ນຂໍ້ມູນເຫຼົ່ານີ້ວ່າ Primitive types ໃນການຂຽນໂປຣແກຣມເຮົາຈຳເປັນຕ້ອງເລືອກໃຊ້ປະເພດຂໍ້ມູນໃຫ້ກົງກັບຂໍ້ມູນທີ່ເຮົາຈະເກັບຫຼາຍທີ່ສຸດ ເພາະມັນຈະຊ່ວຍຫຼຸດການໃຊ້ຫນ່ວຍຄວາມຈຳ ແລະ ຄວາມວ່ອງໄວໃນການເຮັດວຽກງານ ຍົກຕົວຢ່າງເຊັ່ນ ເຮົາຕ້ອງການເກັບຕົວເລກລະຫວ່າງ 1 - 100 ເຮົາຄວນຈະໃຊ້ຂໍ້ມູນຊະນິດ byte ເພາະມັນພຽງພໍຕໍ່ການເກັບແລ້ວ
Type
byte
short
int
long
float
double
char
boolean
Explanation
8-bit (1 byte) integer value
16-bit (2 byte) integer value
32-bit (4 byte) integer value
64-bit (8 byte) integer value
32 bit (4 byte) floating-point value
64 bit (8 byte) floating-point value
16-bit (2 byte) character Unicode encoding value
1-bit boolean value
Values Rank
-128 - 127
-32768 - 32767
-2147483648 - 2147483647
-9223372036854775808 - 9223372036854775807
1.4E-45 - 3.4028235E38
4.9E-324 - 1.7976931348623157E308
true and false
ໝາຍເຫດ: ໃນຕາຕະລາງຂ້າງເທິງ ເປັນປະເພດຂອງຕົວປ່ຽ ຫລື ຊະນິດຂໍ້ມູນໃນພາສາ Java ຂະໜາດທີ່ໃຊ້ເກັບນັ້ນອາດຈະແຕກຕ່າງກັນອອກໄປຂຶ້ນກັບລະບົບຄອມພິວເຕີຂອງເຮົາ ທາງລຸ່ມນີ້ເປັນຕົວຢ່າງຂອງໂປຣແກຣມທີ່ສະແດງຄ່າຂອງ Rank ທີ່ຕົວປ່ຽນປະເພດຕ່າງໆ ເກັບຂໍ້ມູນໄດ້ ແລະ ຂະໜາດຂອງມັນ
public class DataType {
public static void main (String[] args) {
System.out.println("Date Type Rank");
System.out.println("Byte\t" + Byte.MIN_VALUE + " - " + Byte.MAX_VALUE);
System.out.println("Short\t" + Short.MIN_VALUE + " - " + Short.MAX_VALUE);
System.out.println("Integer\t" + Integer.MIN_VALUE + " - " + Integer.MAX_VALUE);
System.out.println("Long\t" + Long.MIN_VALUE + " - " + Long.MAX_VALUE);
System.out.println("Float\t" + Float.MIN_VALUE + " - " + Float.MAX_VALUE);
System.out.println("Double\t" + Double.MIN_VALUE + " - " + Double.MAX_VALUE);
System.out.println("Boolean\t" + Boolean.TRUE + " and " + Boolean.FALSE);
System.out.println("\nDate Type Size (bit)");
System.out.println("Byte\t" + Byte.SIZE);
System.out.println("Short\t" + Short.SIZE);
System.out.println("Integer\t" + Integer.SIZE);
System.out.println("Long\t" + Long.SIZE);
System.out.println("Float\t" + Float.SIZE);
System.out.println("Double\t" + Double.SIZE);
}
}
ໝາຍເຫດ: ຈາກຕົວຢ່າງທາງເທິງ ຕົວປ່ຽນທຸກປະເພດຈະສ້າງມາຈາກຄາດ ດັ່ງນັ້ນເຮົາສາມາດເອີ້ນເບິ່ງຂໍ້ມູນຂອງມັນໄດ້ຜ່ານ property member ຂອງມັນ MIN_VALUE ໃຊ່ສຳລັບຮັບຄ່າຕ່ຳສຸດຂອງຂໍ້ມູນປະເພດນັ້ນ ແລະ MAX_VALUE ຮັບຄ່າສູງສຸດຂອງຂໍ້ມູນປະເພດນັ້ນມາ ແລະ SIZE ເບິ່ງຂະໜາດທີ່ໃຊ້ເກັບຂໍ້ມູນມີຫນ່ວຍເປັນ bit
Date Type Rank
Byte -128 - 127
Short -32768 - 32767
Integer -2147483648 - 2147483647
Long -9223372036854775808 - 9223372036854775807
Float 1.4E-45 - 3.4028235E38
Double 4.9E-324 - 1.7976931348623157E308
Boolean true and false
Date Type Size (bit)
Byte 8
Short 16
Integer 32
Long 64
Float 32
Double 64
ຕົວປ່ຽນ ຄືສິ່ງທີ່ໃຊ້ເກັບຂໍ້ມູນເທິງຄອມພິວເຕີຈາກຫນ່ວຍຄວາມຈຳ ແລະ ສາມາດນຳກັບມາໃຊ້ໃໝ່ໄດ້ ເຊັ່ນ ດຽວກັນກັບຕອນທີ່ເຮົາຮຽນຄະນິດສາດໃນມັດຍົມ ມັນມີຕົວປ່ຽນ x, y ແລະ ມັນສາມາດຄິດໄລ່ຜົນລັບໄປເກັບໄວ້ໃນຕົວປ່ຽນ z ດ້ວຍຕົວດຳເນີນການທາງຄະນິດສາດ ແນວຄິດນີ້ຖືກນຳມາໃຊ້ກັບຄອມພິວເຕີເຊັ່ນດຽວກັນ ເຮົາໃຊ້ຕົວປ່ຽນເພື່ອເກັບຂໍ້ມູນເພື່ອນຳໄປຄິດໄລ່ ແລະ ຈັດການເພື່ອໃຫ້ໄດ້ຜົນລັບໃໝ່ອອກມາ
ກ່ອນທີ່ຈະໃຊ້ງານຕົວປ່ຽນເພື່ອເກັບຂໍ້ມູນ ເຮົາຈະຕ້ອງໄດ້ມີການປະກາດຕົວປ່ຽນກ່ອນ ເພື່ອໃຫ້ຄອມພິວເຕີຈອງພື້ນທີ່ໃນໜວຍຄວາມຈຳສຳລັບຂໍ້ມູນຂອງເຮົາ ໂດຍການປະກາດຕົວປ່ຽນໃນພາສາ Java ນັ້ນມີຮູບແບບດັ່ງນີ້
dataType variableName;
dataType variableName = value;
ໂດຍທີ່ dataType ເປັນປະເພດຂໍ້ມູນໃນພາສາ Java ເຊັ່ນ int long ຫລື double ແລະ variableName ເປັນຊື່ຂອງຕົວປ່ຽນ ໂດຍມັນຈະມີຫຼັກການຕັ້ງຊື່ຕົວປ່ຽນຄື ຕົວປ່ຽນຕ້ອງປະກອບໄປດ້ວຍ ຕົວອັກສອນພິມນ້ອຍ ພິມໃຫຍ່ ຕົວປ່ຽນຕົວເລກ ແລະ ເຄື່ອງໝາຍ Underscore (_)ເທົ່ານັ້ນ ແລະ ຕົວປ່ຽນຕ້ອງບໍ່ຂຶ້ນຕົ້ນດ້ວຍຕົວເລກ ສຳລັບ value ເປັນຕົວເລືອກວ່າເຮົາຈະກຳນົດຄ່າໃຫ້ກັບຕົວປ່ຽນໃນທັນທີພາຍຫລັງຈາກທີ່ເຮົາໄດ້ປະກາດຕົວປ່ຽນນັ້ນ ຫລື ບໍ່
ໝາຍເຫດ: ການຕັ້ງຊື່ຕົວປ່ຽນນີ້ຍັງໃຊ້ກັບການປະກາດຕົວປ່ຽນປະເພດອອບເຈັກ ແລະ String ເຊິ່ງເປັນຕົວປ່ຽນຊະນິດທີ່ຜູ້ໃຊ້ສ້າງຂຶ້ນເອງ ເຊິ່ງເຮົາຈະໄດ້ຮຽນຮູ້ໃນຕອນຫຼັງຂອງບົດຮຽນນີ້ ໃນເລື່ອງຄາດ ແລະ String
int a; // declare variable
float b, c; // declare multi variables
int n = 8; // declare and assign
char c = 'y'; // declare and assign
int d;
d = n + 10; // declare variable with expression
ຕົວຢ່າງດ້ານເທິງເປັນການປະກາດຕົວປ່ຽນໃນແບບຕ່າງໆ ເຮົາສາມາດປະກາດຕົວປ່ຽນ ແລະ ກຳນົດຄ່າໃຫ້ມັນພາຍຫຼັງ ຫລື ກຳນົດໃນຕອນເລີ່ມຕົ້ນກໍ່ໄດ້ ແລະ ເຮົາາສາມາດປະກາດຕົວປ່ຽນໄດ້ຫຼາຍຕົວໃນເທື່ອດຽວໄດ້ໂດຍການໃຊ້ເຄື່ອງໝາຍ comma (,) ເຊັ່ນ double x, y, z; ເປັນການປະກາດຕົວປ່ຽນ 3 ຕົວ ເພື່ອເກັບຂໍ້ມູນປະເພດ double
ຢ່າງທີ່ໄດ້ເຄີຍບອກ ໃນການປະກາດຊື່ຕົວແປຣນັ້ນ ຈະມີຫຼັກການຕັ້ງຊື່ຂອງມັນ ໂດຍຫຼັກການຕັ້ງຊື່ນີ້ ຍັງໃຊ້ກັບເມຕອດ ຄາດ ແລະ ການປະກາດອື່ນທີ່ user-defined ຂຶ້ນມາ ໂດຍມີດັ່ງນີ້
ການຕັ້ງຊື່ນັ້ນຈະປະກອບໄປດ້ວຍ ຕົວອັກສອນ ຕົວເລກ ແລະ ເຄື່ອງໝາຍ (_)ເທົ່ານັ້ນ
2. ຕົວແປຣຕ້ອງບໍ່ຂຶ້ນຕົ້ນດ້ວຍຕົວເລກ
3. ຕົວແປຣຕ້ອງບໍ່ໃຊ້ Keyword ໃນພາສາ Java ໃນບົດກ່ອນຫນ້າທີ່ເຮົາເວົ້າເຖິງ
4. ເຖິງແມ່ນວ່າການປະກາດຕົວແປຣສາມາດໃຊ້ພາສາອື່ນໆ ໄດ້ແຕ່ເຮົາແນະນຳໃຫ້ໃຊ້ພາສາອັງກິດ
// valid
int a = 2;
int myNumber = 4;
float _money = 65.3f;
double my_money1 = 54;
// invalid
int 1ab = 3; // invalid start with number
int for = 4; // invalid using reserved keyword
ໝາຍເຫດ: ໃນການຕັ້ງຊື່ຕົວແປຣ ແລະ ເມຕອດນັ້ນໃນພາສາ Java ເຮົາມັກຈະຂຶ້ນຕົ້ນດ້ວຍຕົວນ້ອຍ ຖ້າຫາກມີຫຼາຍຄຳໃຫ້ໃຊ້ຕົວໃຫຍ່ຂັ້ນໜຶ່ງຕົວ ດັ່ງໃນຕົວຢ່າງທີ່ເຮົາເຫັນຂ້າງເທິງ ເຊັ່ນ myNumber
ຄ່າຄົງທີ່ ຄືຕົວແປຣທີ່ໃຊ້ອ້າງອິງຂໍ້ມູນຂອງຄ່າໃດຄ່າໜຶ່ງທີ່ບໍ່ຖືກປ່ຽນແປງ ແລະ ບໍ່ສາມາດປ່ຽນແປງໄດ້ ການໃຊ້ຄ່າຄົງທີ່ນັ້ນມີປະໂຫຍດໃນການຂຽນໂປຣແກຣມ ມັນສາມາດເຮັດໃຫ້ເຮົາເຂົ້າໃຈໄດ້ວ່າຕົວແປຣ ຫລື ຄ່ານັ້ນໝາຍເຖິງຫຍັງ ຍົກຕົວຢ່າງເຊັ່ນ ເມື່ອເຮົາຢາກຈະບອກເຖິງແຮງໂນ່ມຖວງຂອງໂລກ ເຮົາມັກຈະເວົ້າວ່າຄ່າ g (gravity) ເຮົາມັກຈະບໍ່ເວົ້າວ່າຄ່າ 9.8 ເຖິງແມ່ນວ່າມັນມີຄ່າເທົ່າກັບ 9.8 ກໍ່ຕາມ ແນວຄິດນີ້ໄດ້ນຳມາໃຊ້ສຳລັບການສ້າງຄ່າຄົງທີ່ໃນການຂຽນໂປຣແກຣມພາສາ Java ເຊັ່ນກັນ
ຮູບແບບໃນການປະກາດຄ່າຄົງທີ່ນັ້ນຄ້າຍຄືກັບ ການປະກາດຕົວແປຣທົ່ວໄປ ແຕ່ມັນຈະຂຶ້ນຕົ້ນດ້ວຍຄຳສັ່ງ final ເພື່ອບອກຄອມໄພເລີ້ວ່າມັນເປັນຕົວແປຣຄ່າຄົງທີ່
final dataType constantName = value;
ໝາຍເຫດ: ໃນການປະກາດຄ່າຄົງທີ່ ເຮົາຕ້ອງກຳນົດຄ່າໃຫ້ກັບມັນໃນຕອນທຳອິດສະເໝີ ແລະ ບໍ່ສາມາດປ່ຽນແປລງຄ່າຂອງມັນໄດ້ໃນພາຍຫຼັງ ບໍ່ເຊັ່ນນັ້ນການຄອມໄພໂປຣແກຣມຂອງເຮົາຈະຜິດພາດ
ຕົວຢ່າງ: ກນາສ້າງ ແລະ ໃຊ້ງານຄ່າຄົງທີ່ໃນພາສາ Java
ຕໍ່ໄປມາເບິ່ງຕົວຢ່າງການປະກາດຕົວແປຣຄ່າຄົງທີ່ ແລະການໃຊ້ງານ ໂດຍໂປຣແກຣມໃນຕົວຢ່າງຈະເປັນໂປຣແກຣມໃນການຫາ ພື້ນທີ່ ເສັ້ນອ້ອມວົງ ບໍລິມາດ ແລະພື້ນທີ່ຜິດໃນສາມມິຕິ ຂອງວົງກົມ ໂດຍເຮົາຮູ້ຣັດມີຂອງມັນ
public class Constant {
public static void main (String[] args) {
final float PI = 3.14f;
int r = 8;
System.out.println("Circle with radius: " + r );
System.out.println("Area = " + (PI * r * r ));
System.out.println("Circumference = " + (2 * PI * r ));
System.out.println("Volume = " + (4.0f / 3.0f * PI * r * r * r));
System.out.println("Surface Area = " + (4.0f * PI * r * r ));
r = 10;
System.out.println("\nCircle with radius: " + r );
System.out.println("Area = " + (PI * r * r ));
System.out.println("Circumference = " + (2 * PI * r ));
System.out.println("Volume = " + (4.0f / 3.0f * PI * r * r * r));
System.out.println("Surface Area = " + (4.0f * PI * r * r ));
}
}
ໝາຍເຫດ: ໃນຕົວຢ່າງຂ້າງເທິງ ເຮົາໄດ້ປະກາດຕົວແປຣຄ່າຄົງທີ່ໃນຄຳສັ່ງ final float PI = 3.14f; ໂດຍຕົວແປຣນີ້ເກັບຄ່າ floating-point ຂອງຄ່າ PI ເພື່ອນຳໄປໃຊ້ໃນການຄິດໄລ່ຫາລາຍລະອຽດຂອງວົງມົນ ເຮົາສາມາດໃຊ້ identifier PI ແທນຄ່າ 3.14 ໄດ້ທັງໝົດ ແລະ ຜົນລັບຂອງໂປຣແກຣມດ້ານລຸ່ມແມ່ນ
Circle with radius: 8
Area = 200.96
Circumference = 50.24
Volume = 2143.5735
Surface Area = 803.84
Circle with radius: 10
Area = 314.0
Circumference = 62.800003
Volume = 4186.667
Surface Area = 1256.0
ໝາຍເຫດ: ເທື່ອຕໍ່ໄປເຮົາຄິດວ່າມັນບໍ່ລະອຽດພຽງພໍ ເຮົາສາມາດປ່ຽນຄ່າຂອງ PI ໄດ້ເທື່ອດຽວ ໂດຍປ່ຽນແປງຄ່າຂອງ final float PI = 3.14159f; ຄ່າ PI ແລະ ຄ່າຂອງ PI ທັງໝົດຈະປ່ຽນໄປ ແລະ ຈະໄດ້ຜົນລັບດັ່ງນີ້ ເຊິ່ງຂຶ້ນກັບຄ່າ PI ຂອງເຮົານັ້ນເອງ
Circle with radius: 8
Area = 201.06177
Circumference = 50.26544
Volume = 2144.659
Surface Area = 804.2471
Circle with radius: 10
Area = 314.159
Circumference = 62.831802
Volume = 4188.787
Surface Area = 1256.636
ເພື່ອໃຫ້ເຈົ້າເຂົ້າໃຈກ່ຽວກັບຄ່າຄົງທີ່ຫລາຍຂຶ້ນ ຕໍ່ໄປມາເບິ່ງຕົວຢ່າງເພິ່ມເຕິມໃນການໃຊ້ງານຄ່າຄົງທີ່ກັບອາເຣ ເຮົາຈະໃຊ້ຄ່າຄົງທີ່ໃນການກຳນົດຂະໜາດຂອງອາເຣ ຮັບຄ່າລົງໄປໃນອາເຣ ແລະ ສະແດງຂໍ້ມູນໃນອາເຣອອກມາ
import java.util.Scanner;
public class Constant2 {
public static void main(String[] args) {
final int SIZE = 10;
int[] n = new int[SIZE];
Scanner reader = new Scanner(System.in);
for (int i = 0; i < SIZE; i++) {
System.out.print("n[" + i + "] = ");
n[i] = reader.nextInt();
}
System.out.print(SIZE + " numbers in array: ");
for (int i = 0; i < SIZE; i++) {
System.out.print(n[i] + ", ");
}
}
}
ໃນຕົວຢ່າງ ເປັນໂປຣແກຣມທີ່ສ້າງອາເຣຂະໜາດຕາມທີ່ກຳນົດຂອງຄ່າຄົງທີ່ ແລະ ຫຼັງຈາກນັ້ນເຮົາຮັບຂໍ້ມູນ ແລະ ສະແດງຜົນຂໍ້ມູນໃນອາເຣອອກມາ
final int SIZE = 10;
int[] n = new int[SIZE];
ໃນຕອນທຳອິດຂອງໂປຣແກຣມ ເຮົາໄດ້ກໍ່ການປະກາດຄ່າຄົງທີ່ SIZE ຊຶ່ງມີຄ່າເທົ່າກັບ 10 ແລະ ນຳໄປສ້າງອາເຣຕາມຂະໜາດຂອງຄ່າຄົງທີ່ທີ່ກຳນົດ
Scanner reader = new Scanner(System.in);
ໃນຄຳສັ່ງນີ້ ເປັນການປະກາດອອບເຈັກສຳລັບການຮັບຄ່າດ້ວຍຄລາດ Scanner ຊຶ່ງເຮົາຈະໃຊ້ຮັບຄ່າຈາກຄີບອດລົງໄປໃນອາເຣທີ່ໄດ້ສ້າງຂຶ້ນ ຄລາດນີ້ມີຫນ້າທີ່ຈັດການກ່ຽວກັບການຮັບຄ່າທາງ Stream ເຊັ່ນ ຄີບອດ
for (int i = 0; i < SIZE; i++) {
System.out.print("n[" + i + "] = ");
n[i] = reader.nextInt();
}
System.out.print(SIZE + " numbers in array: ");
for (int i = 0; i < SIZE; i++) {
System.out.print(n[i] + ", ");
}
ຕໍ່ມາເຮົາໄດ້ໃຊ້ຄຳສັ່ງ For loop ໃນການວົນອ່ານຄ່າຕາມຈຳນວນຂອງຄ່າຄົງທີ່ SIZE ໂປຣແກຣມຈະກໍ່ການອ່ານຄ່າຕົວເລກລົງໃນອາເຣຈົນຄົບ ເມທອດ nextInt() ເປັນເມທອດສຳລັບການອ່ານຄ່າຂອງ Integer ແລະ ຫຼັງຈາກນັ້ນເຮົາໄດ້ສະແດງຜົນຂໍ້ມູນໃນອາເຣໂດຍການໃຊ້ຄຳສັ່ງ For loop ເຊັ່ນດຽວກັນ
n[0] = 10
n[1] = 23
n[2] = 35
n[3] = 18
n[4] = 5
n[5] = 82
n[6] = 43
n[7] = 54
n[8] = 20
n[9] = 92
10 numbers in array: 10, 23, 35, 18, 5, 82, 43, 54, 20, 92,
ນິ້ເປັນຜົນລັບການເຮັດວຽກງານຂອງໂປຣແກຣມ
ຈາກສອງຕົວຢ່າງທີ່ຜ່ານມາ ເຈົ້າຈະເຫັນວ່າເຮົາສາມາດໃຊ້ຄ່າຄົງທີ່ຂອງຂໍ້ມູນໂດຍກົງໄດ້ ເຊັ່ນ ໃນຕົວຢ່າງຂອງການປະກາດອາເຣ ເຮົາໃຊ້ຄ່າຄົງທີ່ SIZE ທີ່ໄດ້ປະກາດພຽງເທື່ອດຽວໃນທຸກໆ ທີ່ຂອງໂປຣແກຣມ ບໍ່ວ່າຈະເປັນການປະກາດອາເຣ ແລະ ການໃຊ້ເປັນເງື່ອນໄຂໃນການຮັບຄ່າ ແລະ ສະແດງຄ່າ ຊຶ່ງເຮັດໃຫ້ໂປຣແກຣມຂອງເຈົ້າຍືດຍຸນ ແລະ ກະຊັບຫລາຍຂຶ້ນ ເມື່ອເຈົ້າຕ້ອງການສ້າງອາເຣທີ່ມີຂະໜາດ 20 ເຈົ້າພຽງແຄ່ກຳນົດຄ່າໃຫ້ຄ່າຄົງທີ່ໃໝ່
ຄຳສັ່ງ final ຫຼື final modifier ນັ້ນ ນອກຈາກຈະໃຊ້ກັບຕົວແປຣແລ້ວ ຍັງໃຊ້ກ່ຽວກັບການຂຽນໂປຣແກຣມແບບອອບເຈັກໂດຍເມື່ອໃຊ້
final ກັບ method ຈະເຮັດໃຫ້ method ບໍ່ສາມາດ override (ການຂຽນທັບ) ໄດ້ໂດຍ sub class
final ກັບ class ຈະເຮັດໃຫ້ class ນັ້ນບໍ່ສາມາດສືບທອດ inherit ໄດ້
final class NoInherit {
final void noOverride () {
...
}
}
ທາງເທິງເປັນຕົວຢ່າງຂອງຄລາດ ແລະ ເມທອດ ທີ່ໃຊ້ຄຳສັ່ງ final ໃນການສ້າງ ຢ່າງໃດກໍຕາມ ເຈົ້າຈະຮຽນກ່ຽວກັບການໂປຣແກຣມແບບອອບເຈັກໃນພາຍຫຼັງ ມັນເປັນພື້ນຖານຂອງພາສາ Java ແລະ ສຳຄັນທີ່ເຈົ້າຈະຕ້ອງຮູ້
ໃນບົດນີ້ ເຈົ້າໄດ້ຮຽນຮູ້ກ່ຽວກັບຄ່າຄົງທີ່ ການສ້າງ ແລະ ປະໂຫຍດໃນການໃຊ້ຂອງມັນໃນພາສາ Java ແລະ ຮູ້ຈັກກ່ຽວກັບການໃຊ້ຄຳສັ່ງ final