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+0X+1X+2X+30123

เมื่อเรานึกถึงที่อยู่สัมพัทธ์ภายในบล็อกข้อมูล การสร้างดัชนีจากศูนย์เป็นสิ่งที่สมเหตุสมผล นี่คือเหตุผลหลักในการนับจากศูนย์