CodeGym /Kurse /Java Syntax /Speicheradressierung und Variablen

Speicheradressierung und Variablen

Java Syntax
Level 1 , Lektion 3
Verfügbar

„Da bin ich wieder. Ich habe etwas vergessen, das ich dir erklären wollte. Ich werde dir jetzt etwas über Variablen und Speicheradressierung erzählen. Wir werden nicht zu tief einsteigen, aber es lohnt sich, wenn du dir zumindest etwas davon merkst.“

„Ich finde es gut, wie ihr an die Lektionen herangeht: Wenn man etwas versteht – super. Wenn man nichts verstanden hat – auch okay.“

„Liebe lässt sich nicht erzwingen. Das ist offensichtlich. Ist das auf eurem Planeten anders?“

„Ja. Bei uns ist es anders. Wenn man Lust hat, dann lernt man; wenn man keine Lust hat, dann lernt man auch, aber gegen seinen Willen.“

„Was für eine veraltete Lernmethode! So verschwendet man viel Energie und Zeit und bekommt nur schlechte Ergebnisse.“

„Das stimmt schon. Aber lass uns nicht über so etwas Trauriges reden.“

„Okay. Denk mal an Excel. Excel kennt jeder. Ein Excel-Arbeitsblatt besteht aus Zellen. Jede Zelle hat ihren eigenen eindeutigen Bezeichner (A1, A2, … B1, B2). Wenn du den Bezeichner einer Zelle kennst, kannst du jederzeit einen Wert hineinschreiben oder den enthaltenen Wert abrufen. Computerspeicher wird auf sehr ähnliche Art organisiert.“

image-ru-01-25

„Soweit kann ich dir folgen.“

„Wenn das Programm ausgeführt wird, werden das Programm und die Programmdaten im Arbeitsspeicher abgelegt. Der ganze Computerspeicher ist in kleine Zellen aufgeteilt, die Bytes. Jede Zelle hat einen eindeutigen Bezeichner bzw. eine Nummer, die dazu gehört: 0, 1, 2, 3, … (die Nummern beginnen bei 0). Wenn du die Nummer einer Zelle kennst, kannst du darin Daten speichern. Oder Daten daraus abrufen. In manchen Zellen wird der Programmcode gespeichert, d. h. der Befehlssatz für den Prozessor. In anderen werden die vom Programm benutzten Daten gespeichert. Die Nummer einer Zelle wird ihre Adresse genannt.“

„Der Professor hat mir schon vom Prozessor und Befehlen erzählt, aber nicht im Detail.“

„Der Prozessor weiß, wie man Befehle ausführt, die in den Speicher geladen wurden. Fast alle Prozessorbefehle tun so etwas wie ‚hol Daten aus bestimmten Zellen, mach etwas mit ihnen, schick das Ergebnis an andere Zellen‘. Wir kombinieren Hunderte einfacher Befehle, um komplexe und nützliche Befehle zu erzeugen.“

„Aber wozu brauche ich das alles?“

„Wenn eine Variable im Code deklariert wird, dann wird ihr ein bisschen Speicher zugewiesen, der noch nicht benutzt wird. Dabei handelt es sich normalerweise um einige Bytes. Wenn du eine Variable deklarierst, musst du den Typ der Daten angeben, den das Programm darin speichern soll: Zahlen, Text oder andere Daten. Außerdem bekommt jede Variable aus praktischen Gründen einen eindeutigen Namen.“

„Das bedeutet also, dass eine Variable gleichzeitig ein Name, ein Typ, ein Speicherbestandteil und ein Wert ist?“

„Sie ist all das in einem. Schau dir ein paar Beispiele an:“

Code Erläuterung
1
String s;
In dieser Zeile wird eine Variable namens s erstellt. Wir deklarieren sie mit dem Typ String, denn wir werden sie zum Speichern von Text benutzen.
Innerhalb der gleichen Funktion oder Klasse können wir keine weitere Variable mit dem gleichen Namen deklarieren.
2
String s2 = "I'm Diego";
In dieser Zeile wird eine String-Variable namens s2 deklariert und gleichzeitig wird ihr der Wert "I'm Diego" zugewiesen.
3
int a;
Hier erstellen wir eine Variable namens a. Ihr Datentyp entspricht dem, was wir darin speichern möchten. Der Datentyp int steht kurz für integer (ganze Zahl).
4
int b = 4;
Wir erstellen eine Variable namens b. Ihr Datentyp (int) ist dazu bestimmt, ganze Zahlen zu speichern. Gleichzeitig wird der Variablen der Wert 4 zugewiesen.

„Hier ein paar Aufgaben von Diego. Du solltest sie nach und nach bearbeiten.“

Kommentare (39)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Menissa Ji Level 2, Germany, Germany
23 September 2023
Versteht jemand, was mit dem Satz: ‚Wir kombinieren Hunderte einfacher Befehle, um komplexe und nützliche Befehle zu erzeugen.‘ gemeint ist. Irgendwie will ich ihn nicht verstehen. Ich danke schonmal im Voraus für eine Antwort:)
Lukas Level 9, Germany, Germany
13 Oktober 2023
Um ein Programm schreiben zu können, verknüpfen wir die "einfachen Befehle" und erweitern sie immer weiter , hinzu komplexen Codes... macht das Sinn?
Michael Level 1, Germany, Germany
21 April 2023
Coole Idee, vor allem weil man die Aufgaben direkt hier auf der Seite bearbeiten kann, die Premiumversion ist leider einfach zu teuer.
Artur Derr Level 1, Germany, Germany
22 April 2023
Der hohe preis liegt sicherlich an den Lizensierungsgebühren für die Entwicklungsumgebung "IntelliJ"
Dennis Level 1, Germany, Germany
23 Januar 2023
Naja, um auf alle Sachen Zugriff zu haben, reicht ja die einfache Premiummitgliedschaft aus. Und wenn man bedenkt, was man alles dafür benötigt, um eine Vernünftige Seite aufrecht zu erhalten und mit wieviel Liebe zum Detail hier gearbeitet wurde, sind 29 im Monat ja recht human. Da gibt es andere Anbieter, die deutlich teurer sind.^^
Dario Level 12, Germany, Germany
29 Dezember 2022
Gott los sagt, doch das es Kostenpflichtig wird bevor ich mit dem Kurs anfange.
Patrick Level 2, Germany, Germany
25 November 2022
Ich dachte das wenigstens ein paar Grundlektionen umsonst sind.. Bestimmt ein guter Kurs aber auch sehr teuer
Holger Level 3, München, Germany
27 Dezember 2022
umsonst? Ein paar Grundlektionen sind nutzlos? XD Und teuer ist relativ. Ob etwas teuer ist oder erscheint, hängt vom individuellen Einkommen ab, aber auch von der persönlichen Erfahrung und Erziehung. Blöd ist nur die eigenverantwortliche Entscheidung, ob es mir das wert ist oder nicht. Ausserdem sind die Grundlektionen doch kostenlos.
Level 1, Germany, Südafrika
26 Januar 2023
Es ist ziemlich wenig, was man hier mit dem kostenlosen Zugang bekommen hat. In einer Einheit Informatiksysteme am Beruflichen Gymnasium steckt viel mehr, als der freie Zugang bisher zu bieten hat. Auch in 10 Minuten im Praxismodul "Einführung in der Informatik" lernt man mehr, wo sich theoretisch jeder kostenlos reinsetzen kann, der in der Einrichtung studiert. Es ist eher eine schlechte Investition in die eigene Weiterbildung, aber ein lustiges Spiel auf jeden Fall. Zudem kann man sich durch YouTube und anderweitige Recherche aus kostenlosen Medien noch viel mehr aneignen, als hier gegeben ist. Ich finde es ist schön gemacht und es ist auch verständlich, dass es so viel kostet. Aber es lohnt sich einfach nicht, wenn man es wirklich ernst meint mit Java lernen. Vielleicht für nebenbei. In der Zeit in der ich mich mit dieser Quantität der Story Line beschäftigt habe hätte man Java Anfängern durchaus schon Multi Threading zumindest erklären können. Zudem hätte man viel mehr zu den einzelnen Datentypen einbauen können statt gefühlt 10 String Aufgaben. Chars geben Buchstaben aus, sind aber eigentlich Zahlen mit denen man rechnen kann. Man kann einem Anfänger beibringen, das Alphabet mit einer simplen Schleife und vielleicht auch einem char-Array auszugeben. Dann hätte man erklären können das ein String nur ein Array aus Chars ist und wie man diesen Array nun als String ausgeben kann. Stattdessen eine String Aufgabe nach der anderen und nicht einmal die Rechenarten erklärt. Also Anfängern kann man in der Zeit wirklich viel mehr vermitteln, selbst wenn ihr Erkenntnisstand sehr gering ausfällt. Study smarter not harder.
PYJ Level 1, Germany, Germany
5 Juni 2023
Kennst du denn noch andere Webseiten wo man kostenlos gut programmieren lernen kann?
10 September 2023
Ja, auf Udemy kannst dir für die Lebensdauer einen Java Kurs kaufen - kostet an Rabatttagen, was oft vorkommt, 10-20 Euro! Diese Seite ist eine Frechheit! Ich würde Level 1 erst nach den Schleifen vergeben weil String, int und boolean sind nicht die einzigen Variablentypen die es gibt und Java kann Anfangs mehr anfängerfreundliches wie System.out.println(). Zb die Klasse JOptionPane die wenigstens ein Fenster statt Console verwendet um etwas auszugeben.. So denkt sich jeder Anfänger gleich wasn das für ein ...eiss? Langweilige Consolen Ausgaben. public class Main{ public static void main(String[] args){ JOptionPane.showMessageDialog(null, "Hello World"); //null steht dafür da um das Fenster in der Mitte des Bildschirms aufzuzeigen } } probiert das mal aus und an den Betreiber der Seite, Console ist langweilig
Data Level 4, Winterberg, Germany
3 November 2022
Hauptsache ich denk um 8 Ecken und versuch den Befehl erst in ne int zu verpacken um int dann von String anzeigen zu lassen :D Gott ey
Tayyubi Level 2, Tettnang, Germany
2 September 2022
Schon cool das wir hier vieles lernen aber; System.out.println("ich habe kein geld um mir das zu leisten"); verstehen?
amimeyer7 Level 1, Germany, Germany
12 März 2022
Kann man ab Level 1 die Aufgaben nur mit Premium machen?
John Squirrels Level 41, San Francisco, Poland
16 März 2022
Hallo, es gibt nur die Möglichkeit ein 0-Niveau kostenlos zu machen. Wenn Sie die maximale Anzahl an Einheiten der Dunklen Materie für die Lösung von Aufgaben auf dem Niveau 0 verdienen, haben Sie Zugriff auf Vorlesungsstufe 1-2 Die Aufgaben sind jedoch weiterhin nicht verfügbar. Für die Eröffnung der folgenden Lektionen und Aufgaben werden üblicherweise Abonnements benötigt.
Anonymous #10899902 Level 2, Germany, Italy
20 Dezember 2021
while(1)System.out.println("Locked till you give us your money!");
Shark Level 1, Germany
19 Dezember 2021
String text = "wieso kostet auf einmal "; String text2 = "alles Geld D:"; System.out.printIn (text + text2) /* Das ding ist halt das man die Aufgaben machen kann und sie dann mit "korrekte lösung anzeigen" selbst überprüfen kann *\
Holger Level 3, München, Germany
27 Dezember 2022
Was bedeutet Zugriff auf alle (!) CodeGym-Quests, Detaillierte (!) Aufgabenprüfung mit Ergebnissen, Sofortige (!) Aufgabenprüfung, Bonus- (!) Aufgaben und Mini- (!) Projekte sowie Empfehlungen (!) zur Unterstützung (!) bei den Aufgaben, Analyse (!) deines Code-Stils (!) und ReCheck (Möglichkeit, mehrere Lösungen für eine Aufgabe zu prüfen)? Obwohl die Bonus-Aufgaben und der ReCheck einigermassen klar sein dürfte.
XMC Level 1, Germany, Germany
3 September 2023
System.out.printl (text + text2); SEMIKOLON!!!!! xD