ตัวแปรใช้สำหรับหน่วยความจำเพื่อเก็บค่า กล่าวอีกนัยหนึ่ง เมื่อสร้างตัวแปร คุณจะต้องใช้พื้นที่ในหน่วยความจำ
ระบบการจัดการหน่วยความจำจะจัดสรรพื้นที่จัดเก็บข้อมูลให้กับตัวแปรตามประเภท และพื้นที่ที่จัดสรรสามารถใช้เพื่อจัดเก็บข้อมูลประเภทนั้นเท่านั้น
ดังนั้นโดยการกำหนดตัวแปรประเภทต่างๆ จำนวนเต็ม ทศนิยม หรืออักขระจึงสามารถเก็บไว้ในหน่วยความจำได้
ประเภทข้อมูลหลักสองประเภทของ Java:
ชนิดข้อมูลในตัว
ประเภทข้อมูลอ้างอิง
ภาษา Java มีประเภทพื้นฐานแปดประเภท ประเภทตัวเลขหกประเภท (จำนวนเต็มสี่จำนวน ประเภทจุดลอยตัวสองประเภท) ประเภทอักขระ และประเภทบูลีน
ประเภทไบต์:
ชนิดข้อมูลไบต์เป็นจำนวนเต็ม 8 บิต มีลายเซ็น ซึ่งแสดงเป็นส่วนเสริมของสอง
ค่าต่ำสุดคือ -128 (-2^7);
ค่าสูงสุดคือ 127 (2^7-1)
ค่าเริ่มต้นคือ 0;
ประเภทไบต์ใช้เพื่อประหยัดพื้นที่ในอาร์เรย์ขนาดใหญ่ โดยส่วนใหญ่จะแทนที่จำนวนเต็ม เนื่องจากตัวแปรไบต์ใช้พื้นที่เพียงหนึ่งในสี่ของประเภท int
ตัวอย่าง: ไบต์ a = 100, ไบต์ b = -50
ประเภทสั้น (ประเภทจำนวนเต็มสั้น):
ชนิดข้อมูลแบบสั้นคือจำนวนเต็มเสริมของเลขฐานสองแบบ 16 บิต
ค่าต่ำสุดคือ -32768 (-2^15)
ค่าสูงสุดคือ 32767 (2^15 - 1)
ชนิดข้อมูลแบบสั้นยังสามารถประหยัดพื้นที่เช่นไบต์ได้ ตัวแปรแบบสั้นคือครึ่งหนึ่งของพื้นที่ว่างโดยตัวแปรประเภท int
ค่าเริ่มต้นคือ 0;
ตัวอย่าง: short s = 1,000, short r = -20000
ประเภท int (ประเภทจำนวนเต็ม):
ชนิดข้อมูล int เป็นจำนวนเต็มแบบ 32 บิตที่มีเครื่องหมายซึ่งแสดงเป็นส่วนเสริมของ two;
ค่าต่ำสุดคือ -2,147,483,648 (-2^31)
ค่าสูงสุดคือ 2,147,483,647 (2^31 - 1)
โดยทั่วไปแล้ว ตัวแปรจำนวนเต็มจะมีค่าเริ่มต้นเป็นประเภท int;
ค่าเริ่มต้นคือ 0;
ตัวอย่าง: int a = 100000, int b = -200000
ยาว (ชนิดจำนวนเต็มยาว):
ชนิดข้อมูลแบบยาวเป็นจำนวนเต็มแบบ 64 บิตที่มีเครื่องหมายซึ่งแสดงเป็นส่วนเสริมของสอง
ค่าต่ำสุดคือ -9,223,372,036,854,775,808 (-2^63)
ค่าสูงสุดคือ 9,223,372,036,854,775,807 (2^63 -1)
ประเภทนี้ส่วนใหญ่จะใช้กับระบบที่ต้องการเปรียบเทียบจำนวนเต็มขนาดใหญ่
ค่าเริ่มต้นคือ 0L;
ตัวอย่าง: ยาว a = 100000L, ยาว b = -200000L
ลอย (ชนิดจุดลอยตัวที่มีความแม่นยำเดียว):
ชนิดข้อมูล float เป็นตัวเลขทศนิยม 32 บิตที่มีความแม่นยำเดียว ซึ่งเป็นไปตามมาตรฐาน IEEE 754
float สามารถประหยัดพื้นที่หน่วยความจำเมื่อจัดเก็บอาร์เรย์จุดลอยตัวขนาดใหญ่
ค่าเริ่มต้นคือ 0.0f;
ไม่สามารถใช้ตัวเลขจุดลอยตัวเพื่อแสดงค่าที่แม่นยำ เช่น สกุลเงิน ได้
ตัวอย่าง: ลอย f1 = 234.5f
สองเท่า (ประเภทจุดลอยตัวที่มีความแม่นยำสองเท่า):
ชนิดข้อมูลคู่เป็นเลขทศนิยมแบบ 64 บิตที่มีความแม่นยำสองเท่า ตามมาตรฐาน IEEE 754
ประเภทเลขทศนิยมเริ่มต้นคือสองเท่า
ประเภทคู่ไม่สามารถแสดงค่าที่แม่นยำได้ เช่น สกุลเงิน
ค่าเริ่มต้นคือ 0.0d;
ตัวอย่าง: สองเท่า d1 = 123.4
บูลีน:
ชนิดข้อมูลบูลีนแสดงถึงข้อมูลหนึ่งบิต
มีเพียงสองค่าเท่านั้น: จริงและเท็จ;
ประเภทนี้ใช้เป็นแฟล็กเพื่อบันทึกสถานการณ์จริง/เท็จเท่านั้น
ค่าเริ่มต้นเป็นเท็จ
ตัวอย่าง: บูลีนหนึ่ง = จริง
ถ่าน (ประเภทตัวอักษร):
ประเภทถ่านเป็นอักขระ Unicode 16 บิตตัวเดียว
ค่าต่ำสุดคือ 'u0000' (นั่นคือ 0)
ค่าสูงสุดคือ 'uffff' (นั่นคือ 65,535)
ชนิดข้อมูลถ่านสามารถจัดเก็บอักขระใดก็ได้
ตัวอย่าง: ตัวอักษรอักขระ = 'A'
สำหรับช่วงค่าของประเภทพื้นฐานของประเภทตัวเลข เราไม่จำเป็นต้องถูกบังคับให้จำ เนื่องจากค่าของพวกเขาได้ถูกกำหนดไว้แล้วในคลาสบรรจุภัณฑ์ที่เกี่ยวข้องในรูปแบบของค่าคงที่ โปรดดูตัวอย่างต่อไปนี้:
PrimitiveTypeTest ระดับสาธารณะ {
โมฆะคงที่สาธารณะ main (String [] args) {
// ไบต์
System.out.println("ประเภทพื้นฐาน: ไบต์เลขฐานสอง: " + Byte.SIZE);
System.out.println("คลาสบรรจุภัณฑ์: java.lang.Byte");
System.out.println("ค่าขั้นต่ำ: Byte.MIN_VALUE=" + Byte.MIN_VALUE);
System.out.println("ค่าสูงสุด: Byte.MAX_VALUE=" + Byte.MAX_VALUE);
System.out.println();
// สั้น
System.out.println("ประเภทพื้นฐาน: เลขฐานสองแบบสั้น: " + Short.SIZE);
System.out.println("คลาสบรรจุภัณฑ์: java.lang.Short");
System.out.println("ค่าต่ำสุด: Short.MIN_VALUE=" + Short.MIN_VALUE);
System.out.println("ค่าสูงสุด: Short.MAX_VALUE=" + Short.MAX_VALUE);
System.out.println();
// int
System.out.println("ประเภทพื้นฐาน: int เลขฐานสอง: " + Integer.SIZE);
System.out.println("คลาสบรรจุภัณฑ์: java.lang.Integer");
System.out.println("ค่าขั้นต่ำ: Integer.MIN_VALUE=" + Integer.MIN_VALUE);
System.out.println("ค่าสูงสุด: Integer.MAX_VALUE=" + Integer.MAX_VALUE);
System.out.println();
// ยาว
System.out.println("ประเภทพื้นฐาน: ยาว จำนวนเลขฐานสอง: " + Long.SIZE);
System.out.println("คลาสบรรจุภัณฑ์: java.lang.Long");
System.out.println("ค่าต่ำสุด: Long.MIN_VALUE=" + Long.MIN_VALUE);
System.out.println("ค่าสูงสุด: Long.MAX_VALUE=" + Long.MAX_VALUE);
System.out.println();
// ลอย
System.out.println("ประเภทพื้นฐาน: float จำนวนเลขฐานสอง: " + Float.SIZE);
System.out.println("คลาสบรรจุภัณฑ์: java.lang.Float");
System.out.println("ค่าขั้นต่ำ: Float.MIN_VALUE=" + Float.MIN_VALUE);
System.out.println("ค่าสูงสุด: Float.MAX_VALUE=" + Float.MAX_VALUE);
System.out.println();
//สองเท่า
System.out.println("ประเภทพื้นฐาน: เลขฐานสองคู่: " + Double.SIZE);
System.out.println("คลาสบรรจุภัณฑ์: java.lang.Double");
System.out.println("ค่าต่ำสุด: Double.MIN_VALUE=" + Double.MIN_VALUE);
System.out.println("ค่าสูงสุด: Double.MAX_VALUE=" + Double.MAX_VALUE);
System.out.println();
//ถ่าน
System.out.println("ประเภทพื้นฐาน: char เลขฐานสอง: " + Character.SIZE);
System.out.println("คลาสบรรจุภัณฑ์: java.lang.Character");
// เอาท์พุต Character.MIN_VALUE ไปยังคอนโซลในรูปแบบตัวเลขแทนรูปแบบอักขระ System.out.println("ค่าขั้นต่ำ: Character.MIN_VALUE="
+ (int) ตัวละคร MIN_VALUE);
// เอาท์พุต Character.MAX_VALUE ไปยังคอนโซลในรูปแบบตัวเลขแทนรูปแบบอักขระ System.out.println("ค่าสูงสุด: Character.MAX_VALUE="
+ (int) อักขระMAX_VALUE);
-
-
ผลลัพธ์ของการคอมไพล์โค้ดด้านบนจะเป็นดังนี้:
ประเภทพื้นฐาน: ไบต์ เลขฐานสอง: 8
คลาสการห่อ: java.lang.Byte
ค่าต่ำสุด: Byte.MIN_VALUE=-128
ค่าสูงสุด: Byte.MAX_VALUE=127
ประเภทพื้นฐาน: สั้น เลขฐานสอง: 16
คลาสการห่อ: java.lang.Short
ค่าต่ำสุด: Short.MIN_VALUE=-32768
ค่าสูงสุด: Short.MAX_VALUE=32767
ประเภทพื้นฐาน: int เลขฐานสอง: 32
คลาสการห่อ: java.lang.Integer
ค่าต่ำสุด: Integer.MIN_VALUE=-2147483648
ค่าสูงสุด: Integer.MAX_VALUE=2147483647
ประเภทพื้นฐาน: ยาว จำนวนเลขฐานสอง: 64
คลาสการห่อ: java.lang.Long
ค่าต่ำสุด: Long.MIN_VALUE=-9223372036854775808
ค่าสูงสุด: Long.MAX_VALUE=9223372036854775807
ประเภทพื้นฐาน: float จำนวนเลขฐานสอง: 32
คลาสการห่อ: java.lang.Float
ค่าต่ำสุด: Float.MIN_VALUE=1.4E-45
ค่าสูงสุด: Float.MAX_VALUE=3.4028235E38
ประเภทพื้นฐาน: เลขฐานสองคู่: 64
คลาสการห่อ: java.lang.Double
ค่าต่ำสุด: Double.MIN_VALUE=4.9E-324
ค่าสูงสุด: Double.MAX_VALUE=1.7976931348623157E308
ประเภทพื้นฐาน: char เลขฐานสอง: 16
คลาสการห่อ: java.lang.Character
ค่าต่ำสุด: Character.MIN_VALUE=0
ค่าสูงสุด: Character.MAX_VALUE=65535
ค่าต่ำสุดและสูงสุดของ Float และ Double จะแสดงออกมาในรูปแบบของสัญกรณ์ทางวิทยาศาสตร์ "E+number" ในตอนท้ายหมายความว่าตัวเลขก่อน E ควรคูณด้วย "number" ยกกำลัง 10 ตัวอย่างเช่น 3.14E3 คือ 3.14×1000=3140 และ 3.14E-3 คือ 3.14/1000=0.00314
ในความเป็นจริง มีประเภทพื้นฐานอีกประเภทหนึ่งใน JAVA ซึ่งมีคลาสบรรจุภัณฑ์ที่สอดคล้องกัน java.lang.Void แต่เราไม่สามารถดำเนินการกับประเภทเหล่านั้นได้โดยตรง
ตัวแปรประเภทการอ้างอิงถูกสร้างขึ้นโดย Constructor ของคลาส และคุณสามารถใช้ตัวแปรเหล่านี้เพื่อเข้าถึงอ็อบเจ็กต์ที่อ้างอิงได้ ตัวแปรเหล่านี้จะถูกระบุเป็นประเภทเฉพาะเมื่อมีการประกาศ เช่น Employee, Pubby เป็นต้น เมื่อประกาศตัวแปรแล้ว จะไม่สามารถเปลี่ยนแปลงประเภทของตัวแปรได้
วัตถุและอาร์เรย์เป็นประเภทข้อมูลอ้างอิง
ค่าเริ่มต้นสำหรับประเภทการอ้างอิงทั้งหมดเป็นค่าว่าง
ตัวแปรอ้างอิงสามารถใช้เพื่ออ้างอิงถึงประเภทที่เข้ากันได้
ตัวอย่าง: สัตว์ สัตว์ = สัตว์ใหม่("ยีราฟ")
ค่าคงที่คือค่าคงที่ ไม่จำเป็นต้องคำนวณและแสดงค่าที่เกี่ยวข้องโดยตรง
ค่าคงที่หมายถึงปริมาณที่ไม่สามารถเปลี่ยนแปลงได้ ธงสุดท้ายถูกใช้ใน Java และวิธีการประกาศจะคล้ายกับของตัวแปร:
PI คู่สุดท้าย = 3.1415927;
แม้ว่าชื่อคงที่อาจเป็นตัวพิมพ์เล็กก็ได้ แต่เพื่อความสะดวกในการระบุตัวตน โดยปกติแล้วจะใช้อักษรตัวพิมพ์ใหญ่เพื่อแสดงค่าคงที่
สามารถกำหนดตัวอักษรให้กับตัวแปรประเภทบิวท์อินใดก็ได้ ตัวอย่างเช่น:
ไบต์ ก = 68;
ถ่าน = 'A'
ไบต์, int, ยาว และสั้นสามารถแสดงในรูปแบบทศนิยม เลขฐานสิบหก และฐานแปดได้
เมื่อใช้ค่าคงที่ คำนำหน้า 0 หมายถึงฐานแปด และคำนำหน้า 0x หมายถึงเลขฐานสิบหก ตัวอย่างเช่น:
ทศนิยม int = 100;
ฐานแปดแปด = 0144;
int เฮกซ่า = 0x64;
เช่นเดียวกับภาษาอื่นๆ ค่าคงที่สตริงของ Java คือลำดับของอักขระที่อยู่ระหว่างเครื่องหมายคำพูดสองตัว ต่อไปนี้เป็นตัวอย่างของตัวอักษรสตริง:
"สวัสดีชาวโลก"
"สองnบรรทัด"
""นี่คือเครื่องหมายคำพูด""
ทั้งค่าคงที่สตริงและค่าคงที่อักขระสามารถมีอักขระ Unicode ใดก็ได้ ตัวอย่างเช่น:
ถ่าน = 'u0001';
สตริง a = "u0001";
ภาษา Java รองรับลำดับอักขระหลีกพิเศษบางอย่าง
เครื่องหมาย | ความหมายของตัวละคร |
---|---|
n | ป้อนบรรทัด (0x0a) |
r | เข้า (0x0d) |
ฉ | อักขระฟีดแบบฟอร์ม (0x0c) |
ข | แบ็คสเปซ (0x08) |
อักขระว่าง (0x0) | |
s | เชือก |
t | อักขระแท็บ |
- | เครื่องหมายคำพูดคู่ |
- | คำพูดเดียว |
- | แบ็กสแลช |
ddd | อักขระฐานแปด (ddd) |
uxxxx | อักขระ Unicode เลขฐานสิบหก (xxxx) |
ในส่วนนี้จะอธิบายประเภทข้อมูลพื้นฐานของ Java ส่วนถัดไปจะสำรวจประเภทตัวแปรต่างๆ และการใช้งาน