1. Wie das Gedächtnis organisiert ist

Jeder Computer verfügt über einen internen Speicher . Was ist es? Welche Eigenschaften hat es? Und vor allem: Welchen Nutzen hat es für uns?

Jedes Programm (auch in Java geschriebene Programme ) wird vor der Ausführung in den Hauptspeicher geladen . Der Hauptspeicher enthält den Programmcode (der vom Prozessor ausgeführt wird) sowie die Programmdaten (also Daten, die das Programm selbst in den Speicher legt).

Was ist Erinnerung und wie ist sie?

Eine Excel-Tabelle besteht aus Zellen . Jede Zelle hat ihre eigene eindeutige Kennung ( A1, A2, ... B1, B2). Wenn Sie den Bezeichner einer Zelle kennen , können Sie jederzeit einen Wert hineinschreiben oder den dort gespeicherten Wert abrufen. Der Computerspeicher ist auf sehr ähnliche Weise organisiert.

Das Programm und die Programmdaten werden bei laufendem Programm im Speicher abgelegt. Der gesamte Computerspeicher besteht aus kleinen Zellen, die Bytes genannt werden . Jeder Zelle ist eine eindeutige Kennung oder Nummer zugeordnet: 0, 1, 2, 3, ...; (Die Nummerierung beginnt bei Null). Wenn wir die Nummer einer Zelle kennen , können wir darin Daten speichern. Oder Daten daraus abrufen. Einige Zellen speichern den Programmcode, also den Befehlssatz für den Prozessor. Andere speichern die vom Programm verwendeten Daten. Die Nummer der Zelle wird auch Zellenadresse genannt .

Der Prozessor weiß, wie er Befehle ausführt, die in den Speicher geladen wurden. Fast alle Prozessorbefehle bestehen darin, Daten von einigen Zellen zu übernehmen , etwas damit zu tun und das Ergebnis dann an andere Zellen zu senden .

Wir kombinieren Hunderte einfacher Befehle, um komplexe und nützliche Befehle zu erhalten.

Wenn eine Variable im Code deklariert wird, wird ihr ein Teil des Speichers zugewiesen, der noch nicht verwendet wird. Dies sind normalerweise einige Bytes. Um eine Variable zu deklarieren, müssen Sie die Art der Informationen angeben, die das Programm darin speichern wird: Zahlen, Text oder andere Daten. Wenn Sie die Art der zu speichernden Informationen nicht kennen, ist schließlich nicht klar, wie viel Speicherblock für die Variable reserviert werden muss.

Zu Beginn des Computerzeitalters arbeiteten Programme direkt mit Speicheradressen, doch dann begann man, den Zellen aus Bequemlichkeitsgründen Namen zu geben. Ein eindeutiger Variablenname dient vor allem der Bequemlichkeit für Programmierer, da das Programm problemlos mit einfachen Speicheradressen umgehen kann.


2. Variablen im Speicher

Insgesamt verfügt Java über 4 Datentypen zum Speichern von Ganzzahlen. Dies sind byte, shortund int.long

Typ Größe in Bytes Herkunft des Typnamens
byte 1 Byte ist eine bewusste Neuformulierung von Bite, um Verwechslungen mit Bit zu vermeiden
short 2 Abkürzung für Short Integer
int 4 Abkürzung für Integer
long 8 Abkürzung für Long Integer

Darüber hinaus gibt es in Java zwei Typen für reelle Zahlen: Float und Double:

Typ Größe in Bytes Herkunft des Typnamens
float 4 Abkürzung für Floating Point Number
double 8 Abkürzung für Double Float

Jedes Mal, wenn die Programmausführung einen Befehl zum Erstellen einer Variablen erreicht, wird ihr ein kleiner Speicherblock zugewiesen (die Größe hängt vom Typ der Variablen ab).

Die Adresse einer Variablen ist die Adresse der ersten Zelle des zugewiesenen Speicherblocks.

Java-Programme dürfen nicht direkt auf den Speicher zugreifen. Jegliche Arbeit mit dem Speicher erfolgt ausschließlich über die Java Virtual Machine.


3. Der StringTyp im Speicher

Der StringTyp kann große Datenmengen speichern, was bedeutet, dass es sich nicht nur um einen Datentyp, sondern um eine vollwertige Klasse handelt.

Das StringObjekt wird in einem zugewiesenen Speicherblock abgelegt, der die Adresse eines anderen Speicherblocks speichert, in dem der Text gespeichert ist.

Die int aVariable belegt 4Bytes und speichert den Wert 1.

Die int bVariable belegt 4Bytes und speichert den Wert 10,555. Als Tausendertrennzeichen verwenden wir ein Komma. Und wir verwenden einen Punkt als Dezimaltrennzeichen.

Die double dVariable belegt 8Bytes und speichert den Wert 13.001.

Die String strVariable belegt 4Bytes und speichert den Wert G13, der die Adresse der ersten Zelle des Speicherblocks ist, der den Text enthält.

Ein Text String objectwird in einem separaten Speicherblock gespeichert. Die Adresse seiner ersten Zelle wird in der strVariablen gespeichert.


4. Warum die Nummerierung in der Programmierung bei Null beginnt

Die Leute fragen sich oft, warum Programmierer fast immer bei Null anfangen zu zählen. Tatsache ist, dass es viele Situationen gibt, in denen es bequemer ist, von Null aus zu zählen (natürlich gibt es auch Situationen, in denen es bequemer ist, von Null aus zu zählen 1).

Das einfachste Beispiel hierfür ist die Speicheradressierung. 4Wenn Ihrer Variablen Speicherbytes zugewiesen wurden und Sie wissen, dass dies Xdie Adresse des ersten Bytes ist, wie lauten dann die Adressen jedes Bytes? , , , . So einfach ist das: Wir haben eine Gruppe von Bytes, auf die mit den Indizes , , , zugegriffen werden kann .X+0X+1X+2X+30123

Wenn wir an eine relative Adresse innerhalb eines Datenblocks denken, ist die Indizierung ab Null sinnvoll. Dies ist der Hauptgrund für das Zählen bei Null .