1. วิธีจัดระเบียบหน่วยความจำ
คอมพิวเตอร์ทุกเครื่องมี หน่วยความ จำภายใน มันคืออะไร? มันมีคุณสมบัติอะไรบ้าง? และที่สำคัญมีประโยชน์ต่อเราอย่างไร?
ทุกโปรแกรม (รวมถึงโปรแกรมที่เขียนด้วยภาษาจาวา) จะถูกโหลดลงในหน่วยความจำหลักก่อนดำเนินการ หน่วยความจำหลักประกอบด้วยรหัสโปรแกรม (ซึ่งดำเนินการโดยโปรเซสเซอร์) เช่นเดียวกับข้อมูลโปรแกรม (เช่น ข้อมูลที่โปรแกรมใส่ไว้ในหน่วยความจำ)
หน่วยความจำคืออะไรและเป็นอย่างไร
สเปรดชีต Excel ประกอบด้วยเซลล์ แต่ละเซลล์มีตัวระบุเฉพาะ ของตัวเอง ( A1
, A2
, ... B1
, B2
) หากคุณทราบตัวระบุของเซลล์คุณสามารถเขียนค่าบางอย่างลงในเซลล์นั้นหรือรับค่าใดๆ ก็ได้ที่เก็บไว้ที่นั่น หน่วยความจำของคอมพิวเตอร์มีการจัดระเบียบในลักษณะที่คล้ายกันมาก

โปรแกรมและข้อมูลโปรแกรมจะถูกเก็บไว้ในหน่วยความจำเมื่อโปรแกรมทำงาน หน่วยความจำของคอมพิวเตอร์ทั้งหมดประกอบด้วยเซลล์ขนาดเล็กที่เรียกว่าไบต์ แต่ละเซลล์มีตัวระบุเฉพาะหรือตัวเลขที่เชื่อมโยง: 0
, 1
, 2
, 3
, ...; (การนับเริ่มต้นจากศูนย์) ถ้าเราทราบจำนวนเซลล์เราสามารถบันทึกข้อมูลในนั้น หรือรับข้อมูลจากมัน บางเซลล์เก็บรหัสของโปรแกรม คือ ชุดคำสั่งสำหรับโปรเซสเซอร์ อื่น ๆ เก็บข้อมูลที่ใช้โดยโปรแกรม หมายเลขของเซลล์เรียกอีกอย่างว่าที่อยู่ของเซลล์
โปรเซสเซอร์รู้วิธีดำเนินการคำสั่งที่โหลดลงในหน่วยความจำ คำสั่งตัวประมวลผลเกือบทั้งหมดมีลักษณะเช่นรับข้อมูลจากบางเซลล์ทำบางอย่างกับเซลล์เหล่านั้นแล้ว ส่ง ผลลัพธ์ไปยังเซลล์อื่น
เรารวมคำสั่งง่ายๆ หลายร้อยคำสั่งเพื่อให้ได้คำสั่งที่ซับซ้อนและมีประโยชน์
เมื่อมีการประกาศตัวแปรในรหัส หน่วย ความจำก้อนหนึ่งที่ไม่ได้ใช้จะถูกจัดสรรให้กับตัวแปรนั้น โดยปกติจะเป็นไม่กี่ไบต์ การประกาศตัวแปรจำเป็นต้องระบุประเภทของข้อมูลที่โปรแกรมจะจัดเก็บไว้: ตัวเลข ข้อความ หรือข้อมูลอื่นๆ ท้ายที่สุด หากคุณไม่ทราบประเภทของข้อมูลที่จะจัดเก็บ ก็ไม่ชัดเจนว่าจะต้องจัดสรรบล็อกหน่วยความจำขนาดใหญ่เท่าใดสำหรับตัวแปร
ในช่วงเริ่มต้นของยุคคอมพิวเตอร์ โปรแกรมทำงานโดยตรงกับที่อยู่หน่วยความจำ แต่จากนั้น เพื่อความสะดวกของโปรแกรมเมอร์ เซลล์จึงเริ่มได้รับชื่อ เหนือสิ่งอื่นใด ชื่อ ตัวแปร เฉพาะเพื่อความสะดวกของโปรแกรมเมอร์ เนื่องจากโปรแกรมจัดการกับที่อยู่หน่วยความจำธรรมดาได้ดี
2. ตัวแปรในหน่วยความจำ
Java มีข้อมูลทั้งหมด 4 ประเภทสำหรับเก็บจำนวนเต็ม เหล่า นี้คือbyte
, short
, int
และlong
พิมพ์ | ขนาดเป็นไบต์ | ที่มาของชื่อประเภท |
---|---|---|
byte |
1 |
ไบต์เป็นการจงใจปฏิเสธการกัดเพื่อหลีกเลี่ยงความสับสนกับบิต |
short |
2 |
ย่อมาจากShort Integer |
int |
4 |
ย่อมาจากจำนวนเต็ม |
long |
8 |
ย่อมาจากLong Integer |
นอกจากนี้ Java มี 2 ประเภทสำหรับจำนวนจริง: float และ double:
พิมพ์ | ขนาดเป็นไบต์ | ที่มาของชื่อประเภท |
---|---|---|
float |
4 |
ย่อมาจากเลขทศนิยม |
double |
8 |
ย่อมาจากDouble Float |
แต่ละครั้งที่การดำเนินการของโปรแกรมไปถึงคำสั่งเพื่อสร้างตัวแปร บล็อกหน่วยความจำขนาดเล็กจะถูกจัดสรรให้ (ขนาดขึ้นอยู่กับประเภทของตัวแปร)
ไม่อนุญาตให้โปรแกรม Java เข้าถึงหน่วยความจำโดยตรง การทำงานใดๆ กับหน่วยความจำจะเกิดขึ้นผ่านเครื่องเสมือน Java เท่านั้น
3. String
ประเภทในหน่วยความจำ
ประเภทString
สามารถจัดเก็บข้อมูลจำนวนมาก ซึ่งหมายความว่าไม่ได้เป็นเพียงประเภทข้อมูล แต่เป็นคลาสที่สมบูรณ์
อString
อบเจกต์ถูกวางในบล็อกหน่วยความจำที่จัดสรรซึ่งเก็บที่อยู่ของหน่วยความจำอีกบล็อกหนึ่งซึ่งเก็บข้อความไว้
ตัวแปรint
a
ครอบครอง ไบต์และ เก็บ4
ค่า1
ตัวแปรint
b
ครอบครอง ไบต์และ เก็บ4
ค่า 10,555
เราใช้เครื่องหมายจุลภาคเป็นตัวคั่นหลักพัน และเราใช้จุดเป็นตัวคั่นทศนิยม
ตัวแปรdouble
d
ครอบครอง ไบต์และ เก็บ8
ค่า13.001
ตัวแปรString
str
ครอบครอง4
ไบต์และเก็บค่าG13
ซึ่งเป็นที่อยู่ของเซลล์แรกของบล็อกหน่วยความจำที่มีข้อความ
ข้อความของ the String
object
ถูกจัดเก็บไว้ในบล็อกหน่วยความจำแยกต่างหาก ที่อยู่ของเซลล์แรกจะถูกเก็บไว้ในstr
ตัวแปร
4. ทำไมการนับเลขจึงเริ่มต้นด้วยศูนย์ในการเขียนโปรแกรม
ผู้คนมักสงสัยว่าทำไมโปรแกรมเมอร์มักจะเริ่มนับหนึ่งจากศูนย์ ความจริงก็คือมีหลายสถานการณ์ที่สะดวกกว่าในการนับจากศูนย์ (แน่นอนว่ายังมีสถานการณ์ที่สะดวกกว่าในการนับจาก1
)
ตัวอย่างที่ง่ายที่สุดคือการระบุที่อยู่หน่วยความจำ หากตัวแปรของคุณได้รับการจัดสรร4
ไบต์ของหน่วยความจำ และคุณรู้ว่านั่นX
คือแอดเดรสของไบต์แรก แล้วแอดเดรสของแต่ละไบต์คืออะไร , , , . ง่ายๆ เพียงเท่านี้ เรามีกลุ่มของไบต์ที่สามารถเข้าถึงได้ด้วยดัชนี, , ,X+0
X+1
X+2
X+3
0
1
2
3
เมื่อเรานึกถึงที่อยู่สัมพัทธ์ภายในบล็อกข้อมูล การสร้างดัชนีจากศูนย์เป็นสิ่งที่สมเหตุสมผล นี่คือเหตุผลหลักในการนับจากศูนย์
GO TO FULL VERSION