Erste Schritte Dynamische Variablen

funlow

Mitglied
Hallo,

Frage 1 :
In Java ist es ja grundsätzlich nicht ohne weiteres möglich mit Referenzen zu arbeiten oder Zeiger zu benutzen.(korrigiert mich wenn ich hier falsch liege)
Zeiger und Referenzen sind ja nichts anderes als dynamische Variablen.
Heißt das, dass wiederum das es in Java KEINE dynamischen Variablen gibt oder wie ist das zu verstehen ? oder sind die hier anders definiert ?


Frage 2:
Klassen so steht is in meinem Skript was ich in der Uni bekommen habe sind Referenztypen.
Was ist mit Referenztypen gemeint ?
Ist damit gemeint das eine Klasse eine Referenz zu den Variablen hat aus denen sie besteht?
Beispiel:

Code:
Person{
Name;
Alter;
}
ist dann Person.Name eine referenz ?


Google hat mir zu den fragen keine Klare antwort gegeben leider.
Danke schonmal im vorraus
 

Zitrus

Bekanntes Mitglied
Name und Alter sind in deinem Beispiel die Referenzattribute der Klasse Person (Wenn von dieser auch jegliche Zugriffsmodifikatoren etc. fehlen). Meinst du mit dynamischen Variablen, Variablen die sich verändern können?

Wenn ja, dann klappt das mit jeder Variable (außer mit final "betitelte"):
Bsp:
Java:
public class Person {
    int alter;
    String name;

    name = "herberta";
    alter = 10;
//--> Diese Variablen kannst du in einer Methode verändern Bsp:

    public void aendern() {
        alter = 8;
        name = "herbert";
    }
}

Ausserdem fehlen bei dir die Datentypen bzw. die Zugriffsmodifikatoren etc.
 
Zuletzt bearbeitet:

funlow

Mitglied
Dynamische Variablen sind Zeiger

Meinst du mit dynamischen Variablen, Variablen die sich verändern können?
MIt dynamische Variablen meine ich nicht:

int a = 3;
a = a +3;
und das man dann a so verändern kann das meine ich nicht mit dynamischen variablen.

In C oder C++ ist eine dynamische Variable als beispiel :

Code:
int a = 3;
int* pa = &a;    // & bedeutet hier das man auf die speicheradresse von a zeigt, wobei pa der zeiger hier mit int* als zeiger               
                      //deklariert wird.
print("pa ist:" + pa);          //ist jetzt nur ne Pseudoausgabe: Ausgabe : "pa ist 3";
a = 5;
print("pa ist: "pa)           // Ausgabe : " pa ist 5";
 
Zuletzt bearbeitet:

Zitrus

Bekanntes Mitglied
[...] und sie in Sprachen wie Java oder Eiffel zwar intern vorhanden, aber für den Programmierer vollständig verborgen [...]
2 Sekunden googlen :)
Zeiger (Informatik)

[...]Eine Referenz ist damit ein Aliasname für ein Objekt.
Referenz (Programmierung)

Referenzattribut = Attribut eines Objekts.

Ein neues Objekt erzeugst du in Java wie folgt:
Java:
public class Person {
    String name; // Referenzattribut
    int alter; // Referenzattribut

    public Person(String name, int alter) {
        this.name = name; //this.name steht für das Referenzattribut, name für den Parameter.
        this.alter = alter;     //this.alter steht für das Referenzattirbut, alter für den Parameter.
    }
}

public class ZweiPersonen {
    Person alfred; <--- Deklarierung des Objekts Person.
    Person hans;

    public ZweiPersonen() {
        alfred = new Person("Alfred", 38); <-- Initialisierung des Objekts Person.
        hans = new Person("Hans", 54);
    }
}
 
Zuletzt bearbeitet:

funlow

Mitglied
Also erstmal danke die erste Frage haste damit schon genau beantwortet( Hab jetzt nicht einfach nach Zeigern gegoogled sonder immer nach Zeiger Java da kam halt nichts :D)

Dann noch it den Referenzen: Wie ist das dann im Heap und Stack verwaltet ?
Ist dann beispielsweise alfred.name eine Referenz im Heap die auf die Statische Variable name = Alfred im Stack referenziert ?
 

Zitrus

Bekanntes Mitglied
Sorry, aber ich kenne mich mit C++ gar nicht aus^^ Da musst du dich an jemand anderen wenden.

Mit alfred.name greifst du auf das Attribut "name" von deinem erzeugten Objekt auf.

Java:
public class ZweiPersonen {
    Person alfred; <--- Deklarierung des Objekts Person.
    Person hans;
 
    public ZweiPersonen() {
        alfred = new Person("Alfred", 38); <-- Initialisierung des Objekts Person.
        hans = new Person("Hans", 54);
    }
    
    public void NamenAufSystem() {
        System.out.println(alfred.name + hans.name);
    }
}
 
Zuletzt bearbeitet:

funlow

Mitglied
Hätte ja sein können das du dadurch besser verstehst was ich meine ;D

Mit alfred.name greifst du auf das Attribut "name" von deinem erzeugten Objekt auf.

Das versteh ich schon das ist auch garkein problem. hätte vielleicht das erste Schritte beim Thema weglassen sollen...:D

Mir geht es gerade um die Organisation von einem Objekt und dessen Attributen im Speicher ( Heap, Stack)
 

Zitrus

Bekanntes Mitglied
Hier was ich mal schnell gefunden habe (Google doch selbst :D)

[...]Ein ebenfalls wichtiger Unterschied ist die Garbage Collection. Der Entwickler muss sich keine Gedanken darüber machen, dass Speicher wieder freigegeben wird. Die Garbage Collection übernimmt das für einen. Das klingt zunächst gut und funktioniert auch für kleine Programme wunderbar, aber so einfach kommt man aus der Geschichte leider dann doch nicht raus sobald man etwas schreibt, was ernstzunehmend ist. Der Garbage Collector läuft irgendwann an und versucht Speicher freizugeben. In dem Moment stockt das Java-Programm und das kann durchaus merklich stocken.[...]

[...]Ein Garbage Collector beschränkt sich auf eine gewisse Speichergröße, die beim Programmstart festgelegt wird. [...]

Sollte alles soweit klären oder? Sollte auch klären weshalb man keine Zeiger braucht..:rtfm:
 
Zuletzt bearbeitet:

funlow

Mitglied
Das hat aber nichts mit dem zu tun was ich meine.
Das was du jetzt mit der Garbage Collection gepostet hat ist nur die allgemeine Verwaltung vom Speicher im Java.
Was ich wissen will ist wie eine Klasse im Speicher Organisiert wird oder ein abstrakter Datentyp.
 

VfL_Freak

Top Contributor
Moin,

so ganz verstehe ich Deine Frage auch nicht!
Aber mal ganz grundsätzlich
Frage 1 :
In Java ist es ja grundsätzlich nicht ohne weiteres möglich mit Referenzen zu arbeiten oder Zeiger zu benutzen (korrigiert mich wenn ich hier falsch liege)
Es gibt bei Java weder eine Referenzübergabe oder Zeiger, Parameter werden immer per "call-by-value" übergeben !!
Dies gilt auch wenn dieser Value eine Referenz bzw. eine Kopie einer Referenz ist !!
DenkZEIT : Der Unterschied zwischen call-by-value und call-by-reference

Gruß Klaus
 

InfectedBytes

Top Contributor
Der Heap wird für dynamische allokationen verwendet. Immer wenn du ein neues Objekt erzeugst, wird im Heap Speicher dafür reserviert. Im allgemeinen belegt ein Objekt zusammenhängenden Speicher. Dadrin stehen dann Informationen zum Objekt (wie z.B. Typ) und halt die Attribute. Wobei primitive Typen (int, long, etc) direkt dort gespeichert werden und bei Referenztypen wird eben eine Referenz gespeichert, welche auf ein anderes Objekt im Heap zeigt (oder auf null).
Im Grunde kann man Referenzen schon mit Pointern vergleichen, bloß dass die eben weniger mächtig, aber dafür sicherer sind.
 

funlow

Mitglied
Moin,
so ganz verstehe ich Deine Frage auch nicht!
Aber mal ganz grundsätzlich
Also ich möchte nur wissen ob die Schlussfolgerung, dass in Java keine Zeiger und Referenzen für den Benutzer zur Verfügung stehen, bedeutet das Java auch keine Dynamischen Variablen hat ( Die sind ja nichts anderes als Zeiger soweit es mir bekannt ist).

@InfectedBytes

Wie sieht dann aber Konkret folgende Klasse im Speicher aus:
Java:
class Person { // EInfach nur jetzt als stumpfes Beispiel
int alter;
String name;
}

public static void main (){
Person herbert= new Person();
herbert.name = "Herbert"
herbert.alter = 30;
}

Meine Vermutung wäre so:

Heap: Stack
Person Herbert;
Herbert.name --------------------> String "Herbert"
Herbert.alter ----------------------> int 30;

So wie ich es nämlich von Zitrus verstanden habe werden die Attribute eines Objektes im Stack gespeichert und das Objekt an sich liegt im Heap und Verweist auf die Attribute im Stack. Falsch/Richtig ?
Hoffe nun versteht man was gemeint ist :D
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,

Also ich möchte nur wissen ob die Schlussfolgerung, dass in Java keine Zeiger und Referenzen für den Benutzer zur Verfügung stehen, bedeutet das Java auch keine Dynamischen Variablen hat ( Die sind ja nichts anderes als Zeiger soweit es mir bekannt ist).
wenn Du mit "dynamische Variablen" die aus der C/C++-Welt bekannten Zeiger meinst, so wie Du sie in #4 benannt hast, die gibt es Java natürlich nicht !!!

Gruß Klaus
 

InfectedBytes

Top Contributor
Im Heap liegen alle Objekte und auch deren Attribute.
Auf dem Stack wird für jede aufgerufene Methode ein Frame gelegt, welcher lokale Variablen dieser Methode speichert. Diese Variablen sind dann entweder primitive Typen oder eine Referenz, welche in den Heap zeigt.

Dein Beispiel sieht dann ungefähr so aus:
Stack:
Main {
locals: 1
[list of locals]
referenz auf Personen objekt
}

Heap:
String { "Herbert" }
Objekt Person {
referenz auf String
30
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Dynamische Objektnamen / Variablen als Objektnamen verwenden Java Basics - Anfänger-Themen 3
M Dynamische Wertsetzung von Variablen durch Eingaben Java Basics - Anfänger-Themen 9
H Unterschied statischer/dynamische Typ einer Variablen Java Basics - Anfänger-Themen 2
ohneInformatik; Dynamische Zinsen. Wo liegt der Fehler? Java Basics - Anfänger-Themen 4
A Erste Schritte Dynamische Stempel im PDF Exchange programmieren Java Basics - Anfänger-Themen 0
B Fibonacci Zahlen dynamische Programmierung Java Basics - Anfänger-Themen 7
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
L Dynamische Anzahl an Arrays mit verschiedenen Namen erzeugen Java Basics - Anfänger-Themen 6
L Dynamische Bindung Java Basics - Anfänger-Themen 3
W OOP Definition / Abgrenzung dynamische Bindung Java Basics - Anfänger-Themen 11
J Dynamische Datenstrukturen Java Basics - Anfänger-Themen 0
L Variablen Dynamische Variablenname Java Basics - Anfänger-Themen 9
L Dynamische Programmierung Java Basics - Anfänger-Themen 0
M Schlüsselworte Dynamische Polymorhpie Java Basics - Anfänger-Themen 32
J OOP Dynamische Objektnamen Java Basics - Anfänger-Themen 6
Ste3et_C0st Dynamische While/For Schleife Java Basics - Anfänger-Themen 7
M Dynamische Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 11
S Dynamische Variable ist? Java Basics - Anfänger-Themen 11
S Verwirrung - Dynamische Bindung greift nicht Java Basics - Anfänger-Themen 2
C Dynamische Referenz & abstrakte Klassen Java Basics - Anfänger-Themen 3
P Klassen statische oder dynamische(?) Klasse Java Basics - Anfänger-Themen 3
J Dynamische Liste durchsuchen + anpassen Java Basics - Anfänger-Themen 3
A Schlüsselworte dynamische Stringteilung Java Basics - Anfänger-Themen 4
C Dynamische (AJAX) Inhalte einer Webseite mittels Java auslesen Java Basics - Anfänger-Themen 2
W Übungsaufgabe:Dynamische Datenstrukturen Java Basics - Anfänger-Themen 10
B dynamische erzeugung eines Objektes Java Basics - Anfänger-Themen 21
L Dynamische Objektgenerierung Java Basics - Anfänger-Themen 4
K Dynamische Bindungsregel Java Basics - Anfänger-Themen 2
B dynamische/statische Typen Java Basics - Anfänger-Themen 2
C dynamische JTextFields durchlaufen Java Basics - Anfänger-Themen 5
H Dynamische Bindung mit Interfaces und LinkedList Java Basics - Anfänger-Themen 7
N OOP Dynamische Objekte und nach Parametern durchsuchen Java Basics - Anfänger-Themen 4
M dynamische JPanels/Component Java Basics - Anfänger-Themen 3
X dynamische Listen Java Basics - Anfänger-Themen 2
A Schnelle, dynamische, geordnete Datenstruktur? Java Basics - Anfänger-Themen 11
M Dynamische JButtons mit ActionListener Java Basics - Anfänger-Themen 7
Y Kleine Verständnisfrage zum Thema dynamische Polymorphie Java Basics - Anfänger-Themen 3
C Dynamische Matrizen Java Basics - Anfänger-Themen 4
0 Dynamische Datenstruktur ohne Duplikate und mit direkter Elementauswahl Java Basics - Anfänger-Themen 3
N Vererbung/Dynamische Bindungen Java Basics - Anfänger-Themen 15
W Dynamische Bindung Java Basics - Anfänger-Themen 3
P jsp tags und scriplets mischen dynamische werte an jsp tag Java Basics - Anfänger-Themen 2
S Dynamische Tabelle Java Basics - Anfänger-Themen 2
P Suche Ersatz für dynamische arrays Java Basics - Anfänger-Themen 2
T Dynamische Reaktionen Java Basics - Anfänger-Themen 29
P Dynamische Bindung Java Basics - Anfänger-Themen 8
F Dynamische Speicheranpassung und exe Java Basics - Anfänger-Themen 9
J dynamische Auswahl einer überladenen Methode Java Basics - Anfänger-Themen 5
C JTable und dynamische Speicherung Java Basics - Anfänger-Themen 2
J Dynamische Größenveränderung der Komponenten verhindern Java Basics - Anfänger-Themen 8
C Dynamische Operatoren! Java Basics - Anfänger-Themen 5
R dynamische Variablennamen Java Basics - Anfänger-Themen 3
M dynamische, assziative Arrays Java Basics - Anfänger-Themen 2
I dynamische mehrdimensionales Array Java Basics - Anfänger-Themen 8
H statische,dynamische Bindung Java Basics - Anfänger-Themen 4
0 Dynamische Speicherverwaltung Java Basics - Anfänger-Themen 4
B Dynamische If Anweisung Java Basics - Anfänger-Themen 13
B Dynamische Variable Java Basics - Anfänger-Themen 12
C Dynamische Arraygröße Java Basics - Anfänger-Themen 2
M dynamische tabellen Java Basics - Anfänger-Themen 2
G Java dynamische Arrays?? Java Basics - Anfänger-Themen 2
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
T Variablen Java Basics - Anfänger-Themen 1
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
M Aufsummieren von variablen Wertegrößen Java Basics - Anfänger-Themen 17
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
ashi Variablen aufrufen Java Basics - Anfänger-Themen 17
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
C Konstruktoren und Variablen Java Basics - Anfänger-Themen 42
F Auf Variablen eines Konstruktors zugreifen Java Basics - Anfänger-Themen 4
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
Arif Vererbung Methodenvererbung mit finalen Variablen Java Basics - Anfänger-Themen 1
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
S Variablen Variablen in einer Schleife erstellen lassen Java Basics - Anfänger-Themen 11
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
F Variablen Werte einer Klasse überschreiben Java Basics - Anfänger-Themen 4
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
J Frage dazu Variablen klassenübergreifend zu verändern Java Basics - Anfänger-Themen 22
M Java Instanz-Variablen ? Java Basics - Anfänger-Themen 3
B Variablen von Methoden übertragen Java Basics - Anfänger-Themen 2
M Variablen umbenennen Java Basics - Anfänger-Themen 1
T Körper Brechnung - Lokale Variablen in Methoden übergeben Java Basics - Anfänger-Themen 10
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
mars90 Fehler in der Variablen Deklaration Java Basics - Anfänger-Themen 8
E Variablen in formatierter Ausgabe Java Basics - Anfänger-Themen 15
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
M Komisches Verhalten der Variablen Java Basics - Anfänger-Themen 6
H Variablen Multiplikation einer inkrementierten Variablen Java Basics - Anfänger-Themen 5
scratchy1 Variablen vertauschen wenn Bedingung "umgedreht" wird Java Basics - Anfänger-Themen 40
J Variablen mit einer anderen Klasse bekannt machen Java Basics - Anfänger-Themen 7
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben