1. Integer
ชั้นเรียน
Integer
ยังดีที่เป็นคลาส ซึ่งหมายความว่าสามารถมีฟิลด์และเมธอดได้ และแน่นอนว่ามันมี จำนวนมาก - หลายสิบคน ที่นี่เราจะพิจารณาสิ่งพื้นฐานที่สุด
คลาสInteger
มีสองฟิลด์ที่มีค่าสูงสุดและต่ำสุดที่เป็นไปได้ของint
ประเภท:
สนาม | คำอธิบาย |
---|---|
|
ค่าที่เป็นไปได้สูงสุดของint ประเภท |
|
ค่าต่ำสุดที่เป็นไปได้ของint ประเภท |
บางครั้งคุณต้องการกำหนดint
ค่าที่น้อยที่สุดหรือมากที่สุดให้กับตัวแปร เพื่อหลีกเลี่ยงการทำให้โค้ดยุ่งเหยิงด้วยค่าคงที่ที่เข้าใจยาก คุณสามารถเขียนสิ่งนี้ให้ชัดเจนได้ดังนี้:
รหัส | คำอธิบาย |
---|---|
|
|
ชั้นInteger
เรียนยังมีวิธีการที่น่าสนใจ พวกเขาอยู่ที่นี่:
วิธีการ | คำอธิบาย |
---|---|
|
ส่งกลับสตริงที่เป็นตัวแทนเลขฐานสิบหกของตัวเลข |
|
ส่งกลับสตริงที่เป็นตัวแทนของเลขฐานสอง |
|
ส่งกลับสตริงที่เป็นตัวแทนเลขฐานแปดของตัวเลข |
|
ห่อสิ่งที่ผ่านไปint ในInteger วัตถุ |
|
ส่งกลับจำนวนที่ได้รับจากสตริงที่ส่งผ่าน |
ก่อนหน้านี้คุณพบInteger.parseInt()
เมธอด แบบสแตติก จำวิธีการทำงาน:
int name = Integer.parseInt(string);
ถ้าสตริงที่มีตัวเลข (เฉพาะตัวเลข) ถูกส่งไปยังparseInt()
เมธอด มันจะแยกวิเคราะห์สตริงและส่งกลับตัวเลขที่มี
วิธีที่เหลือก็มีประโยชน์เช่นกัน ตัวอย่างเช่น บางตัวสามารถแปลงตัวเลขที่ผ่านเป็นสตริงที่มีการแสดงเลขฐานสอง เลขฐานแปด หรือเลขฐานสิบหกของตัวเลข
2. Double
ชั้นเรียน
โดยทั่วไปDouble
คลาสจะคล้ายกับInteger
คลาส แต่จะล้อม a double
แทนที่จะเป็นint
. นอกจากนี้ยังมีฟิลด์และวิธีการที่เราสนใจ พิจารณาสองสามข้อ:
ชั้นDouble
เรียนมีหกสาขาที่น่าสนใจ:
สนาม | คำอธิบาย |
---|---|
|
อินฟินิตี้เชิงลบ |
|
อินฟินิตี้บวก |
|
เลขชี้กำลังขั้นต่ำที่เป็นไปได้ (2 x ) |
|
เลขชี้กำลังที่เป็นไปได้สูงสุด (2 x ) |
|
ค่าต่ำสุดที่เป็นไปได้ของdouble ประเภท |
|
ค่าที่เป็นไปได้สูงสุดของdouble ประเภท |
อินฟินิตี้
ถ้าคุณหาร-1.0
ด้วย0.0
คุณจะได้ค่าอนันต์ติดลบ ถ้าคุณหาร1.0
ด้วย0.0
คุณจะได้ค่าอนันต์เป็นบวก ไม่เพียงแต่คุณสามารถหาร a double
ด้วยศูนย์เท่านั้น แต่คุณยังสามารถใช้เก็บผลลัพธ์ของการดำเนินการเหล่านี้ได้อีกด้วย
เลขชี้กำลังของ adouble
การทำความเข้าใจเกี่ยวกับเลขชี้กำลังเป็นเรื่องง่าย ภายใน double ประกอบด้วย mantissa และ exponent แต่ที่นี่ค่าของเลขยกกำลังไม่ใช่แต่ ดังนั้น ถ้าเลขชี้กำลังเพิ่มขึ้นค่ารวมของตัวเลขจะเพิ่มเป็นสองเท่า10x
2x
1
MIN_EXPONENT == -1024
ซึ่งหมายถึงซึ่งมีค่าโดยประมาณเท่ากับ2-1024
10-308
และแน่นอนว่าDouble
คลาสนี้มีวิธีการที่น่าสนใจคือ
วิธีการ | คำอธิบาย |
---|---|
|
ส่งกลับสตริงที่เป็นตัวแทนเลขฐานสิบหกของตัวเลข |
|
ตรวจสอบว่าตัวเลขที่ผ่านเป็นอนันต์หรือไม่ |
|
ตรวจสอบว่าหมายเลขที่ผ่านคือNaN |
|
ห่อสิ่งที่ส่งผ่านdouble ในDouble วัตถุ |
|
ส่งกลับจำนวนที่ได้รับจากสตริงที่ส่งผ่าน |
ที่น่าสนใจคือมีisInfinite()
เมธอดที่จะคืนค่าtrue
หากตัวเลขที่ผ่านเป็นค่าบวกหรือค่าลบอนันต์
วิธี นี้isNaN()
คล้ายกัน — จะตรวจสอบว่าตัวเลขที่ผ่านเป็นNaN
( ไม่ใช่ตัวเลข ค่าคงที่พิเศษที่ระบุค่าที่ไม่ได้กำหนด)
3. Character
ชั้นเรียน
คลาส นี้Character
มีความน่าสนใจเป็นหลักเนื่องจากมีวิธียูทิลิตี้แบบคงที่จำนวนมากที่ช่วยให้คุณตรวจสอบว่าอักขระอยู่ในหมวดหมู่ต่างๆ หรือไม่
ตัวอย่าง
วิธีการ | คำอธิบาย |
---|---|
|
ตรวจสอบว่าอักขระเป็นอักขระที่เป็นตัวอักษรหรือไม่ |
|
ตรวจสอบว่าอักขระเป็นตัวอักษรหรือไม่ |
|
ตรวจสอบว่าอักขระเป็นตัวเลขหรือไม่ |
|
ตรวจสอบว่าอักขระเป็นช่องว่าง ตัวแบ่งบรรทัด หรือตัวแบ่งหน้า (รหัส: 12, 13, 14) |
|
ตรวจสอบว่าอักขระเป็นช่องว่างหรือไม่: ช่องว่าง แท็บ ฯลฯ |
|
ตรวจสอบว่าอักขระเป็นตัวพิมพ์เล็กหรือไม่ |
|
ตรวจสอบว่าอักขระเป็นตัวพิมพ์ใหญ่หรือไม่ |
|
แปลงอักขระเป็นตัวพิมพ์เล็ก |
|
แปลงอักขระเป็นตัวพิมพ์ใหญ่ |
คุณลักษณะของวิธีการเหล่านี้คือการทำงานกับตัวอักษรที่รู้จักทั้งหมด: เลขอารบิคถูกจัดประเภทเป็นตัวเลข เป็นต้น
4. Boolean
ชั้นเรียน
ประเภทBoolean
เกือบจะเหมือนกับboolean
ประเภท ความแตกต่างมีน้อย
ด้านล่างเราจะแสดงคลาสแบบง่ายBoolean
:
รหัส | คำอธิบาย |
---|---|
|
ค่าคง ที่ : TRUE и ตัวสร้างคลาสตัวแปร เมธอดส่งคืนค่าของตัวแปรภายใน วิธีการสแตติกนี้จะแปลง เป็นและเป็นFALSE Boolean true TRUE false FALSE |
ประเภทBoolean
มีค่าคงที่สองตัว (สองฟิลด์):
ค่าคงที่ของคลาส | คู่กันสำหรับประเภทบูลีน | คำอธิบาย |
---|---|---|
|
|
จริง |
|
|
เท็จ |
คุณสามารถทำงานกับพวกเขาในลักษณะเดียวกับที่คุณทำงานกับboolean
ประเภท:
รหัส | บันทึก |
---|---|
|
คลาสBoolean เป็นคลาสเดียวที่สามารถเขียนได้ภายในเงื่อนไข |
|
ตัวแปรทั้งสามมีค่าเท่ากับtrue /TRUE |
|
สามารถเปรียบเทียบค่าคงที่ได้โดยใช้ทั้งสองอย่างequals และ== สิ่งนี้ก็จะใช้ได้เช่นกัน |
การทำกล่องอัตโนมัติใช้งานได้ดีที่นี่ ซึ่งหมายความว่าคุณสามารถใช้ประเภทนี้ในลักษณะเดียวกับboolean
ประเภท — ไม่มีข้อผิดพลาดให้ระวัง
วิธีการเขียน | มันทำงานอย่างไร |
---|---|
|
|
และนี่คือการเปรียบเทียบboolean
และBoolean
ประเภท:
boolean a = true;
Boolean b = true; // b will be equal to Boolean.TRUE
Boolean c = true; // c will be equal to Boolean.TRUE
a == b; // true (compared by value)
a == c; // true (compared by value)
b == c; // true (compared by reference, but they point to the same object)
หากคุณต้องการBoolean
วัตถุอิสระจริงๆ คุณต้องสร้างมันอย่างชัดเจน:
boolean a = true;
Boolean b = new Boolean(true); // New Boolean object
Boolean c = true; // c will be equal to Boolean.TRUE
a == b; // true (compared by value)
a == c; // true (compared by value)
b == c; // false (compared by reference, and they point to different objects)
อีกตัวอย่างหนึ่ง ที่เราจะใช้ a Boolean
ภายในif
:
รหัส | บันทึก |
---|---|
|
สิ่งนี้จะรวบรวมและทำงาน |
สิ่งนี้จะรวบรวม แต่จะไม่ทำงาน!
รหัส | บันทึก |
---|---|
|
ข้อผิดพลาด . บรรทัดนี้จะทำให้เกิดข้อยกเว้น |
5. การแคชค่าระหว่างการทำกล่องอัตโนมัติ
มีข้อผิดพลาดบางอย่างที่เกี่ยวข้องกับประเภทตัวห่อจำนวนเต็ม
อย่างที่คุณทราบแล้ว ถ้าเราเปรียบเทียบ an int
และ an Integer
จะInteger
ถูกแปลงเป็นint
:
วิธีการเขียน | มันทำงานอย่างไร |
---|---|
|
|
หากคุณเปรียบเทียบInteger
วัตถุสองชิ้นด้วยกัน วัตถุเหล่านั้นจะไม่ถูกแปลงเป็นint
s:
รหัส | เอาต์พุตคอนโซล |
---|---|
|
|
a == c
และแต่เนื่องจากเมื่อเราเปรียบเทียบและเรากำลังเปรียบเทียบข้อมูลอ้างอิง ซึ่งเป็นสิ่งที่เราคาดหวังเป็นหลักb == c
a != b
a
b
เซอร์ไพรส์
แต่ถ้าเราแทนที่500
ด้วย100
เราจะได้ผลลัพธ์ที่แตกต่างไปจากเดิมอย่างสิ้นเชิง:
รหัส | เอาต์พุตคอนโซล |
---|---|
|
|
ปัญหาที่นี่คือวัตถุใหม่ไม่ ได้ ถูกสร้างขึ้นในระหว่างการทำกล่องInteger
อัตโนมัติ ออบเจกต์ถูกแคชสำหรับค่าต่างๆ-128
ผ่าน127
การรวม
คลาสInteger
มีอาร์เรย์ที่ซ่อนอยู่ซึ่งเก็บวัตถุ: Integer(-128)
, Integer(-127)
, ... Integer(126)
,Integer(127)
หากคุณเขียนInteger x = 128
กระบวนการ autoboxing จะสร้างวัตถุใหม่ แต่ถ้าคุณเขียนInteger x = 127
กระบวนการ autoboxing จะดึงวัตถุที่มีอยู่จากแคช (จากอาร์เรย์)
หากคุณไม่ต้องการให้Integer
วัตถุมาจากแคช คุณจะต้องสร้างมันอย่างชัดเจนโดยเขียน:Integer x = new Integer(127);
Wrapper ทุกประเภทมีแคชดังกล่าว: Integer
, Long
, Byte
, Short
, Boolean
. สำหรับBoolean
ประเภท ค่าของมันTRUE
และFALSE
ค่าเป็นทั้งค่าคงที่ ดังนั้นค่าเหล่านี้จึงถูกแคชไว้ด้วย
GO TO FULL VERSION