new-Operator

JavaDaHood

Mitglied
Kürzlich dachte ich, dass ich langsam verstehe, aber nachdem ich folgendes sah, verstehe ich doch noch so gut wie nichts.:(
Weiß schon garnicht mehr wie ich fragen und dabei den Thread-Betreff richtig schreiben soll.:confused:

Es geht um folgende, nicht zusammenhängende, new Operatoren:
Java:
public Liste (int wert) {
listenKopf = new ListenElement (wert);}


BaumKnoten wurzel = new BaumKnoten(6);


public Baum (int wert) {
wurzelKnoten = new BaumKnoten(wert);}

Warum wird einmal die Variable vor, sowie gleichzeitig nach dem new "deklariert"(?) - gut zu sehen bei
Java:
BaumKnoten wurzel = new BaumKnoten(6);
und warum wird bei den anderen zwei Beispielen nach der Variablen und dem new wieder eine andere Variable "deklariert"?

Edit:
Ok, das hintere sind also irgendwelche Klassen.
Beispiele stammen von hier.

Eine Klasse ListenElement gibt es auch als public class (#9.1).
Ebenso BaumKnoten als public class (#9.2).
 
Zuletzt bearbeitet:

mihe7

Top Contributor
Warum wird einmal die Variable vor, sowie gleichzeitig nach dem new "deklariert"(?) - gut zu sehen bei
Die Variable wird nur einmal deklariert und zwar "vor ihrer Verwendung".

Mit new BaumKnoten(6) wird ein neues BaumKnoten-Objekt erzeugt (an den Konstruktor wird ein int-Wert, nämlich 6, übergeben - ist aber Nebensache). Die Referenz auf dieses neu erzeugte BaumKnoten-Objekt wird anschließen in der Variablen wurzel gespeichert. Diese Variable wird BaumKnoten wurzel vom Typ BaumKnoten.
 

temi

Top Contributor
Eigentlich ganz einfach:

Wenn du eine Variable deklarierst, dann legst du zunächst einmal den Typ und den Namen fest, z.B.

int zahl; // eine Variable vom Typ int mit dem Namen zahl

oder

BaumKnoten wurzel; // eine Variable vom Typ BaumKnoten mit dem Namen wurzel

Die Variable hat aber noch keine Inhalt.

zahl = 5; // weißt der Variablen zahl den Inhalt 5 zu

oder

wurzel = new BaumKnoten(6); // erzeugt eine Instanz der Klasse BaumKnoten und weißt diese der Variablen wurzel zu

Das ganze geht natürlich auch in einer Zeile:

BaumKnoten wurzel = new BaumKnoten(6);
 

temi

Top Contributor
@temi
Variablen-Deklaration und - Initialisierung sind mir schon bekannt.;)

Dann hättest du die Fragen ganz am Anfang nicht stellen müssen. Denn das sind alles nur Deklarationen und Initialisierung.

Edit: Ok - zwei davon sind keine Deklaration, sondern nur die Zuweisung eines Wertes. Aber die Zuweisung eines Wertes sollte ja noch einfacher sein, wenn man sich mit Deklaration und Initialisierung von Variablen schon auskennt. :cool:
 
Zuletzt bearbeitet:

JavaDaHood

Mitglied
Wenn ich jetzt nicht ganz daneben liege (da ich mir z.Zt. doch vieles ansehe und vieles lese), dann hat mir u.a. folgendes Video schon ein bisschen geholfen das mit dem new-Operator besser zu verstehen:

Vll. hilft es ja auch dem ein oder anderen Einsteiger (deshalb habe ich es erwähnt).;)
 

temi

Top Contributor
Wenn ich jetzt nicht ganz daneben liege (da ich mir z.Zt. doch vieles ansehe und vieles lese), dann hat mir u.a. folgendes Video schon ein bisschen geholfen das mit dem new-Operator besser zu verstehen:

Vll. hilft es ja auch dem ein oder anderen Einsteiger (deshalb habe ich es erwähnt).;)

Der Begriff "Klassenvariable" wird in dem Video nicht ganz korrekt verwendet. Darum: Vorsicht welche Tutorials du anschaust. Es gibt da auch viel Zweifelhaftes.
 

DrahtEck

Aktives Mitglied
Es liegt mir sehr am Herzen dieses Thema noch mal aufzugreifen und zu posten weil für viele das ein ganz großes Probem ist, wie früher für mich.
Was hat es auf sich mit dem new Operator in Java ??

Ich selbst konnte nie etwas mit Blaupause oder Schablone oder anderen Beispielen anfangen. Wenn das auch bei dir der Fall ist dann, kann dir vielleicht meine Erklärung helfen das ganze zu verstehen.

Zuerst nehmen wir als Beispiel eine einfache Variable z.B.:
Java:
int a = 2;
In diesem Fall weißt der Computer dass der Datentyp int 4 Byte groß ist,
also muss ich es dem Computer nicht mitteilen.

Der Computer geht also davon aus dass wir nur 4 Byte Speicherplatz benötigen und der new Operator nicht benötigt wird .

In diesem Fall weist der Computer nicht, wieviel Speicherplatz er benötigt:

Java:
public class Freunde {

String freundName1;
String freundName2;
}

weil in der Komplexenvariablen = Klasse = public class Freunde unter String freundName1; und String freundName2
keine Werte zugewiesen worden sind, also weißt der Computer nicht wieviel Speicherplatz er benötigt oder reservieren muss, weil er nicht weißt wie lang die Namen(freundName1 oder freundName2 ) letztendlich werden.


Durch den Operator new teilen wir dem Computer mit: „Ich brauche Speicherplatz.“ um der Komplexenvariable = Klasse (Freunde) Speicherplatz zu zu weisen .

Einfach gesagt ist der der new Operator dafür da in der Klasse Freunde den definierten Strings einen Wert zu zuweisen.

new = ich weise den Strings in public class Freunde {} einen wert zu, also benötige ich dafür Speichetpalz bitte stelle diesen zur verfügung oder reserviere diesen.


Wenn das von Grundsatz nicht stimmen sollte lass es mich gerne wissen, ich lerne gerne dazu .
 
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
weil in der Komplexenvariablen = Klasse = public class Freunde unter String freundName1; und String freundName2
keine Werte zugewiesen worden sind, also weißt der Computer nicht wieviel Speicherplatz er benötigt oder reservieren muss, weil er nicht weißt wie lang die Namen(freundName1 oder freundName2 ) letztendlich werden.
Das ist falsch. Die Variablen freundName1 und freundName2 sind Referenzen und natürlich steht dann fest, was für Speicher hier benötigt wird. Sonst wäre es ja auch unmöglich, eine Instanz von Freunde zu erstellen.

Wenn dann irgendwann in freundName1 oder freundName2 ein String gespeichert werden soll, dann bedeutet das unter dem Strich, dass da dann für den String der notwendige Speicherplatz belegt wird um eine neue Instanz der Klasse String zu erzeugen (und zu initialisieren).

Einfach gesagt ist der der new Operator dafür da in der Klasse Freunde den definierten Strings einen Wert zu zuweisen.
Nein, der new Operator erstellt eine neue Instanz einer Klasse und initialisiert diese. Wenn Variablen aber nicht explizit initialisiert werden (durch direkte Zuweisung oder im Rahmen des Konstruktors), dann bekommen diese einen Default Wert. Ich bezeichne diesen gerne Umgangssprachlich als Nullwert und ist bei Zahlen 0, bei boolean false, bei Referenzen die Null-Referenz (null), ...

Im Rahmen einer Zuweisung kannst Du einen Ausdruck verwenden, der eine neue Instanz erzeugt (mit new). Das hat aber mit dem Speicher von der Instanz Freunde nichts zu tun. Wenn Du mit new einen neuen String erzeugst, dann ist das eine eigenständige String Instanz. Lediglich eine Referenz wird dann in der Variablen gespeichert.

Die ganz genauen Details finden sich In der Java Language Specification unter 15.9 Class Instance Creation Expression im Detail beschrieben. (Nichts für Anfänger, die es erst grundlegend verstehen wollen, aber da wäre die genaue Definition incl. Cross-Referenzen zu diversen Punkten)
 

Barista

Top Contributor
Zuerst nehmen wir als Beispiel eine einfache Variable z.B.:
Java:
int a = 2;
In diesem Fall weißt der Computer dass der Datentyp int 4 Byte groß ist,
also muss ich es dem Computer nicht mitteilen.
int ist ein primitiver Wert, kein Objekt.

In Java gibt es zwei Welten, die primitiven Werte und andererseits die Objekte.
 

DrahtEck

Aktives Mitglied
Hallo KonradN, danke für deinen feedback 👍.
Nein, der new Operator erstellt eine neue Instanz einer Klasse und initialisiert diese. Wenn Variablen aber nicht explizit initialisiert werden (durch direkte Zuweisung oder im Rahmen des Konstruktors), dann bekommen diese einen Default Wert. Ich bezeichne diesen gerne Umgangssprachlich als Nullwert und ist bei Zahlen 0, bei boolean false, bei Referenzen die Null-Referenz (null), ...

Wenn Du mit new einen neuen String erzeugst, dann ist das eine eigenständige String Instanz. .
Jaa .. der Operator erstelle eine neu Insatnz ( also ein Objekt umgangsprachlich ) einer Klasse und initialisiert diese. Ok

Wenn Du mit new einen neuen String erzeugst, dann ist das eine eigenständige String Instanz. ?? Warum erzeuge ich mitznew einen neuen String ? Was hat man mir beigebracht ?? 🙈 sorry

ok .. Ich erstelle eine klasse
Code:
 

Barista

Top Contributor
Wenn Du mit new einen neuen String erzeugst, dann ist das eine eigenständige String Instanz. ?? Warum erzeuge ich mitznew einen neuen String ? Was hat man mir beigebracht ??
"Ich erzeuge einen neuen String" ist eine umgangssprachliche Abkürzung für "Ich erzeuge eine neue String-Instanz".

In Java gibt es die Klasse String, für einen neuen String musst Du keine neue Klasse erstellen.

Erstellen einer Klasse ist das Hinschreiben im Editor (mal abgesehen von speziellen Sachen, die erst mal nicht wichtig sind).

Man muss sich der Begriffe klar werden, Klasse: Ei, Instanzen: eine Packung Eier aus dem Laden.
 

DrahtEck

Aktives Mitglied
"Ich erzeuge einen neuen String" ist eine umgangssprachliche Abkürzung für "Ich erzeuge eine neue String-Instanz".

In Java gibt es die Klasse String, für einen neuen String musst Du keine neue Klasse erstellen.
Erstellen einer Klasse ist das Hinschreiben im Editor (mal abgesehen von speziellen Sachen, die erst mal nicht wichtig sind).
Danke für den tipp , Frage was sol das ??
Code:
Scanner scan2  = new Scanner(System.in);
 

kk-4k

Mitglied
Einfach gesagt ist der der new Operator dafür da in der Klasse Freunde den definierten Strings einen Wert zu zuweisen.

Prinzipiell ist das richtig. new legt ein neues Objekt einer Klasse an. Es kommt aber dann auf die Klasse an, wie viel Speicherplatz zuzuweisen (also zu reservieren) ist.

Und man muss hier dringend zwischen primitiven Typen und Referenzen unterscheiden. Ja primitive Typen sind fest, aber Referenzdatentypen können eine beliebige Größe annehmen.

Darum kümmert sich aber alles intern die Jvm, also die Laufzeitumgebung.
 

Barista

Top Contributor
Danke für den tipp , Frage was sol das ??
Code:
Scanner scan2 = new Scanner(System.in);
Ich merke schon, Du quälst Dich ganz schön.

Am Besten ist, dass Du den Gedanken an Speicher erst mal vergisst. Hast Du Dir dieses Denkmuster durch Programmierung in Assembler oder C zugelegt?

Wenn Du einfach akzeptierst, dass sich die JVM um den Speicher kümmert, kommst Du besser klar.

In dem Fall mit dem Scanner kann man sich folgendes vorstellen:
Code:
+-----------+               +--------+             +----------+
| Dein Code |----nutzt----->|Scanner |----nutzt--->|System.in |
+-----------+               +--------+             +----------+

Der Scanner erweitert die Möglichkeiten des System.in (ist ein Reader, glaube ich, habe die IDE jetzt nicht offen).

Wenn Du tiefer gehen willst, ich würde sagen, dass ist das Dekorator-Pattern.
 

kk-4k

Mitglied
In erster Linie ist es ein Iterator :

All Implemented Interfaces:
Closeable, AutoCloseable, Iterator<String>

Kann also nicht dort verwendet werden, wo ein Input stream erwartet würde.
 

DrahtEck

Aktives Mitglied
Hahaha, cool vielen Dank für eure Rückmeldungen und den Input, und vielen Dank für die Antworten.

Bitte gib mir Zeit um die Gedanken zu sortieren.
Mein Anliegen ist, dass nicht nur Anfänger sondern auch Fortgeschrittene damit ein Problem haben, und das sind sind viele die programmieren es aber nicht wirklich vestehen.

Ich wollte nur mit meiner Veranschlichung das anderen verständlich machen .

Sorry ich möchte niemanden verärgern. Andereseits kann selten jemand das ganze so Formulieren dass jeder Mensch es versteht .

Mein Beispiel: Ich erstelle eine Kasse: mini Komplexeklasse.

Java:
public class Freunde {
   
    String freundName1;
    String freundName2;

}

Also dafür wird kein Speicherplatz benötigt ? nehme ich einfach so hin :

Nein, der new Operator erstellt eine neue Instanz einer Klasse und initialisiert diese
Das bedeutet dass ein neues Objekt( Instanz)erstelt wurde, einer klasse zugewiesen würde und diesem werte zugewiesen wurden.
Wenn nicht bitte ich um eine Begründung ?
Benötigt das keinen neuen Speicherplatz ??

Ich möchte nur sagen das niemand wirklich mit einfachen Worten erklären kann was der new operator bedeuet.
Jeder sagt was anderes.

Beispiel: eine einfache classe, laut meiner Ausbildung ist das nur eine Schablone eine Blaupause ..... ok nehme ich in meiner unwisseheit das ganze einfach so hin .

Java:
public class Auto{ // das nimmt keien Speicher ein da ist nicht reserviert ?? oK.
int reifen;
double preis;
}
 

Barista

Top Contributor
Das bedeutet dass ein neues Objekt( Instanz)erstelt wurde, einer klasse zugewiesen würde und diesem werte zugewiesen wurden.
Wenn nicht bitte ich um eine Begründung ?
Benötigt das keinen neuen Speicherplatz ??
Eine Klasse ist wie eine Tierart, wenn das Tier geboren wird, hat es eine Art.
Es wird nicht nach der Geburt einer Tierart zugewiesen.

Wenn das Programm gestartet wird, ist die Klasse vorhanden (vereinfacht gesagt).
Ein Klasse ist Code.

Mit new erzeugst Du ein Objekt einer Klasse.
Das Objekt nimmt Speicher im Speicherbereich Heap ein.
Das Objekt ist über eine Referenz erreichbar.

Das Zuweisen von Werten kann im Konstruktor erfolgen. Das Objekt ist im Konstruktor schon vorhanden und wird dann befüllt.

Anfangs-Werte können auch bei der Deklaration eines Feldes festgelegt werden.
Diese Anfangs-Werte werden dann von der JVM unmittelbar nach dem Erzeugen des Objektes noch vor dem Lauf des Konstruktors zugewiesen.

Ich habe mir überlegt, dass es sicher sinnvoll wäre, den Sachverhalt grafisch darzustellen, Text im Geist in ein Bild umzuwandeln ist nicht so einfach.
Code:
+-----------+                      +-----------+
|Stack      |                      |Heap       |
|           |                      |           |
| Variable  |-------zeigt auf----->| Objekt 1  |  
+-----------+                      |  Felder:  |
                                   |   freund  |----zeigt auf------+
                                   |           |                   |
                                   | Objekt 2  |<------------------+
                                   |           |
                                   +-----------+

Ich hoffe, das hilft.
 

Barista

Top Contributor
Beispiel: eine einfache classe, laut meiner Ausbildung ist das nur eine Schablone eine Blaupause ..... ok nehme ich in meiner unwisseheit das ganze einfach so hin .

Java:
public class Auto{ // das nimmt keien Speicher ein da ist nicht reserviert ?? oK.
int reifen;
double preis;
}
Mit dem Hinschreiben der Klasse legst Du fest, wie die Objekte/Instanzen der Klasse aussehen sollen.
Damit ist noch kein Datenspeicher belegt (Vergiss erst mal, dass Code auch Speicher benötigt, ist schließlich eine von-Neumann-Maschine).
 

DrahtEck

Aktives Mitglied
Haha danke, für euren Einsatz und und Mühe.

Das Problem ist :

Java:
public class Freunde {
  
    String freundName1;
    String freundName2;

}

Viele sagen dazu Blaupause oder Schablone oder was auch immer.
Es ist letztendlich eine Klasse oder eine Komplexevariable.
Alles gut und schön .



Warum langt es nicht nur :

Code:
public class Main {

    public static void main(String[] args) {
      
      
        Freunde namen;
        namen.freundName1 = "Jan";
        namen.freundName2 = "Joe";
was soll das? die klasse existiert doch schon breits nur ohne Werte.

Warum pake ich in eine Klasse die schon exsitert eine neu Klasse (Blaupause) mit dem gleich namen wenn es diese schon gibt ??
Ich packe also in eine leeren Container (Blaupause) einen neuen Container der exact der gleich ist da wieder rein ? äähh..
Code:
Freunde namen = new Freunde();
Mit dem Hinschreiben der Klasse legst Du fest, wie die Objekte/Instanzen der Klasse aussehen sollen.
Damit ist noch kein Datenspeicher belegt (Vergiss erst mal, dass Code auch Speicher benötigt, ist schließlich eine von-Neumann-Maschine).
Vielen dank für deine Mühe es ergibt dennoch keinen Sinn, oder logischn Schluss. .
Mit dem Hinschreiben der Klasse legst Du fest, wie die Objekte/Instanzen der Klasse aussehen sollen.
Die Klasse existiert doch schon nur die Werte fehlen, warum den noch eine neue die gleichen Namen hat.

Ich denke dass ihr mir nicht folgen könnt.
Danke für euren Feedback und eure Mühe, bin müde bis morgen .
 
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
Das ist strenggenommen falsch, da Scanner nur inline und nicht wiederverwendet werden sollten.
Danke für Deinen Beitrag Tobias. Und da eine Diskussion über sowas nichts bringt heisst es nur: Winke winke.

@DrahtEck: Ignoriere diesen User bitte. Das ist "unser Tobias", der Foren Clown, der immer wieder mit dubiosen Aussagen auffällt. Und diese Aussage ist ganz offensichtlich Quatsch, denn die Beispiele von Scanner in dessen Dokumentation nutzen das ebenso.
 

KonradN

Super-Moderator
Mitarbeiter
Evtl. wird es deutlich, wenn man es sich bildlich vorstellt:

Sieh Variablen als eine Art Papiere an. Die gibt es in diversen Formen und hier hinkt das Beispiel etwas: Das sind magische Papiere. Eine Magie erzwingt Regeln. So gibt es z.B. "int" Papiere: Ein Zauberspruch zwingt Dich, dass da immer eine Zahl steht. Daher steht da von Produktion des Papieres an auch direkt eine 0 drauf. Die kannst Du aber jederzeit überschreiben mit einer anderen Zahl, die gewisse Regeln einhält (bezüglich Größe und so)

Bei den sogenannten Referenz-Typen hast Du einen Zettel, da steht nur ein Ort drauf. Dein Code Freunde namen; ist also ein Zettel, auf dem der Ort für eine Freund Instanz stehen kann. Der ist aber erst einmal leer.

Nehmen wir die Klasse Haus. Es gibt Zettel, auf denen kann eine Adresse stehen. Haus meinHaus; ist aber nun erst einmal ein leerer Zettel. Da kannst Du also nicht einziehen. Wenn ich Dir einen leeren Adresszettel geben würde und sagen würde: "Zieh da ein" (meinHaus.ziehEin();) dann kannst Du das nicht. Nicht nur ist der Zettel leer - Dein Haus ist ja noch nicht einmal gebaut worden!

Es muss also ein neues Haus gebaut werden: new Haus();
Sowas liefert die Referenz auf das Haus zurück, die könnte man auch direkt in einer Variablen speichern, was dann zu dem folgenden Code führen würde:
Haus meinHaus = new Haus();

In das Haus kannst Du dann auch einziehen.

Der wichtige Punkt ist also:
Eine Referenzvariable erzeugt erst einmal keine Instanz. Das ist lediglich eine Variable, die Referenzen (von bestimmten Typen) aufnehmen kann.
Und solche Referenzen muss man erzeugen. Dazu dienen in erster Linie die Anweisung zur Erzeugung von neuen Instanzen.
(Das ist nicht die einzige Möglichkeit, denn es gibt zum einen Automatismen, die Instanzen erzeugen als auch das sogenannte Boxing)

(Vergiss erst mal, dass Code auch Speicher benötigt, ist schließlich eine von-Neumann-Maschine).
Genau das finde ich nicht gut. Wir haben hier eine konkrete Sache: Java. Dies ist sehr genau spezifiziert. Da sollte man auch genau auf der Spezifikation bleiben.

Und das Bedeutet: Auch Klassen sind Instanzen. Eine Klasse, welche verwendet werden soll, muss vom sogenannten Classloader geladen werden. Damit entsteht die Instanz der Klasse java.lang.Class incl. von so Dingen wie statischen Variablen und so.
Das sind aber Details, die beim ersten Erlernen noch nicht wichtig sind, aber dies sind Grundlagen, die man von Anfang an mit erwähnen sollte.
 

Barista

Top Contributor
Und das Bedeutet: Auch Klassen sind Instanzen. Eine Klasse, welche verwendet werden soll, muss vom sogenannten Classloader geladen werden. Damit entsteht die Instanz der Klasse java.lang.Class incl. von so Dingen wie statischen Variablen und so.
Das sind aber Details, die beim ersten Erlernen noch nicht wichtig sind, aber dies sind Grundlagen, die man von Anfang an mit erwähnen sollte.
Ich glaube, das verwirrt den Frager noch mehr, schreibst ja selber: "beim ersten Erlernen noch nicht wichtig".
 

Barista

Top Contributor
Warum langt es nicht nur :

Code:
public class Main {

public static void main(String[] args) {


Freunde namen;
namen.freundName1 = "Jan";
namen.freundName2 = "Joe";
was soll das? die klasse existiert doch schon breits nur ohne Werte.
In C++ wäre das sogar richtig. Dann liegt das Objekt auf dem Stack.

In Java hat man sich entschieden, dass alle Objekte auf dem Heap liegen, deshalb ist das new notwendig.

In C++ muss für die Nutzung der Polymorphie (Vererbung mit dynamischer Nutzung der Methoden der jeweiligen Klasse) aber auch Zeiger oder Referenz (ist eigentlich nur eine Schreiberleichterung für Zeiger) verwendet werden. Dann benötigt man auch new, malloc oder was auch immer.

In Java hat man es eben festgelegt, dass es anders als in C++ funktioniert.

Basta. (ok irgendwann gibt es value types, dann klappt Dein Code auch)
 

KonradN

Super-Moderator
Mitarbeiter
Ich glaube, das verwirrt den Frager noch mehr, schreibst ja selber: "beim ersten Erlernen noch nicht wichtig".
Das kommt aber auch beim Erlernen sehr schnell. Spätestens wenn Klassen eben nicht geladen werden können. Das gehört also mit zu den Java Basics und sind durchaus wichtig. Das ist also nichts, das erst in weiter Ferne interessant wird.

In Java hat man sich entschieden, dass alle Objekte auf dem Heap liegen, deshalb ist das new notwendig.
Und das sind aus meiner Sicht Dinge, die absolut uninteressant sind. Einen Java Entwickler interessiert es absolut nicht, wo was liegt. Und wenn jemand Code schreibt, der optimiert, dass (kleine) Objekte, die nur für eine Nutzung in der Methode da sind, auf dem Stack liegen, dann wäre das so. Ich weiss nicht, ob es so eine Optimierung in Java gibt, aber theoretisch wäre sowas durchaus denkbar.
 

Barista

Top Contributor
Und das sind aus meiner Sicht Dinge, die absolut uninteressant sind. Einen Java Entwickler interessiert es absolut nicht, wo was liegt. Und wenn jemand Code schreibt, der optimiert, dass (kleine) Objekte, die nur für eine Nutzung in der Methode da sind, auf dem Stack liegen, dann wäre das so. Ich weiss nicht, ob es so eine Optimierung in Java gibt, aber theoretisch wäre sowas durchaus denkbar.
Es ist interessant.

static: lebt über die gesamte Laufzeit des Programmes.
Stack: lebt über die Laufzeit der aktuell laufenden Methode/Konstruktor/Initializer
Heap: lebt solange erreichbar.

Außerdem geht es ums Verständnis auf einfachster Ebene, ich glaube nicht, dass dabei die JLS hilft.

Für die Programmierung ist auch wichtig, dass Änderungen auf Primitive und Referenz selbst die aktuelle Methode nicht verlassen, wogegen Änderungen an referenzierten Objekten nach dem Verlassen der aktuellen Methode weiter gelten.

Dass Klassen auch Objekte sind, verwirrt am Anfang sicher nur. Ich glaube auch nicht, dass die TEs so weit kommen, scheinbar ist wieder Immatrikulationszeit, in einem halben Jahr sind nur noch x Prozent der Studenten an Bord.

Die aktuell mögliche Optimierung der Escape-Analyse ist eine verdeckte Technik, ändert nicht die Semantik.

In C (struct) und C++ (struct und class) sind Objekte auf dem Stack nicht polymorph (virtuell), ein wesentlicher semantischer Unterschied.
 

KonradN

Super-Moderator
Mitarbeiter
Also ich wollte dies nicht wirklich vertiefen.
static: lebt über die gesamte Laufzeit des Programmes.
Diese Aussage ist eben so falsch. Ich finde es problematisch, wenn solche Aussagen getroffen werden. Das Ergebnis am Ende sind dann so Aussagen wie von unserem Tobias, der eine Scanner Instanz nicht in einer Variable gespeichert haben will, weil da ganz offensichtlich jemand mit der Problematik Token basiertes Auslesen vs. Zeilen basiertes Auslesen von Werten nicht klar gekommen ist und daher ei jeder Eingabe eine neue Scanner Instanz forder und alles Andere als falsch bezeichnet....

Und das kommt dann bei vielen Dingen, die dann irgendwann doch einmal interessant werden ... und oftmals schneller als erwartet (Das ist halt eine Ausprägung von Murphys Gesetz :) )

Wenn der TE nicht den Unterschied zwischen Klasse und Objekt versteht, wird er durch die Info, dass es Class-Objekte gibt, nur verwirrt.
Die Verwirrung startete doch schon deutlich früher. Daher ist mein Ansatz, sowas bildlich zu beschreiben. Hinweise von theoretische Konstrukte, die nicht bekannt sein dürften, helfen da nicht wirklich. Stack, Heap, von Neumann Architektur, ...

Statt dessen versuche ich lieber, dass die Leute eine bildliche Vorstellung bekommen.

Aber das ist einfach nur meine Meinung. Mir ist bewusst, dass es hier viele unterschiedliche Sichten gibt. Das muss nicht einmal vertieft werden.

Es ist super, dass Du so sehr versuchst, die Dinge zu erklären. Viele Teile finde ich gut. Aber manche halt auch nicht unproblematisch.
 

mihe7

Top Contributor
Ich möchte nur sagen das niemand wirklich mit einfachen Worten erklären kann was der new operator bedeuet.
Jeder sagt was anderes.
Ich glaube, Du erwartest eine einfache Antwort auf ein ganzes Bündel von Fragen, die sich ihrerseits auch noch auf unterschiedlichen Abstraktionsniveaus beantworten lassen. Das kann nicht funktionieren und natürlich wirst Du dann auch unterschiedliche Antworten erhalten. Hinzu kommt, dass Du in den Antworten Begriffe hast, deren Bedeutung Du erst kennen musst, bevor Du die Antwort verstehen kannst.

Etwas wie
Ich packe also in eine leeren Container (Blaupause) einen neuen Container der exact der gleich ist da wieder rein ? äähh..
zeigt beispielsweise, dass Du den Unterschied zwischen Klasse und Objekt noch nicht wirklich verstehst. Eine Antwort wie "new erzeugt Objekte (Instanzen von Klassen)" bringt Dir dann natürlich herzlich wenig.

Da andere Dir hier ja schon Erklärungen gegeben haben, möchte ich da jetzt nicht noch eine weitere Erklärung schreiben. Das verwirrt am Ende nur. Deine Frage, warum Du "new" verwenden musst, kann ich Dir aber ganz einfach beantworten (sofern das im Thread nicht sowieso schon geschehen ist): weil die Sprache Java so spezifiziert wurde.

Was C++ betrifft: da kann man gerne mal die Unterschiede diskutieren, das macht zum aktuellen Zeitpunkt aber wenig Sinn.
 

Barista

Top Contributor
Warum pake ich in eine Klasse die schon exsitert eine neu Klasse (Blaupause) mit dem gleich namen wenn es diese schon gibt ??
Ich packe also in eine leeren Container (Blaupause) einen neuen Container der exact der gleich ist da wieder rein ? äähh..
Eine Blaupause ist sicher kein Container, da könnte aber der Staplerfahrer seine Pausenbrote einwickeln.

In JavaScript gab es früher (keine Ahnung wie der Stand jetzt ist) eine sogenannte Prototypen-Vererbung.
Nach dem Anlegen der Kopie hat man die Methoden (eigentlich Funktionszeiger) ausgetauscht.
Da würde Deine Überlegung passen, aber in das Prototyp-Objekt wird dabei nichts reingepackt.
Es wird nichts in eine Klasse gepackt. Aber vielleicht kennst Du einen Architekten, der das gebaute Haus in die Zeichnung packt 😉
 

Oneixee5

Top Contributor
Warum langt es nicht nur :

Code:
Code:
public class Main {

    public static void main(String[] args) {
     
     
        Freunde namen;
        namen.freundName1 = "Jan";
        namen.freundName2 = "Joe";
was soll das? die klasse existiert doch schon breits nur ohne Werte.

Warum pake ich in eine Klasse die schon exsitert eine neu Klasse (Blaupause) mit dem gleich namen wenn es diese schon gibt ??
Ich packe also in eine leeren Container (Blaupause) einen neuen Container der exact der gleich ist da wieder rein ? äähh..
Möglicherweise verstehst du die neue Schreibweise besser:
Java:
public class Main {


    public static void main(String[] args) {

        var namen;

        namen.freundName1 = "Jan";

        namen.freundName2 = "Joe";
        
    }

}
Jetzt siehst du: var namen; - da ist also nichts als die Reservierung eines Variablennamens. Der Compiler sagt dir sofort: Cannot use 'var' on variable without initializer. Der Fall ist klarer, da hier noch nicht einmal ein Typ festgelegt wird.

var namen = new Freunde(); Jetzt wird der Typ festgelegt und ein Objekt/Instanz zugewiesen. Hier wird späte Bindung angewendet: https://javarush.com/de/groups/posts/de.439.unterschiede-zwischen-frher-und-spter-bindung-in-java

Bei der alten Schreibweise: Freunde namen; legst du zwar den Typ der Variablen fest aber nicht den Wert. Da Java typsicher ist, muss für den Compiler immer der Typ sicher feststellbar sein und dieser wurde immer statisch gebunden - aber kein Wert.
Freunde namen; ist etwa wie Freunde namen = undefined; (dieses Verhalten gibt es in Java aber so nicht) - mit etwas undefinierten kann der Compiler nichts anfangen.
 

Oneixee5

Top Contributor
Möglicherweise wir hier der Unterschied zwischen Typ und Wert noch mal sichtbarer:
Java:
public class Main {

    static class Freunde {
    }

    static class GuteFreunde extends Freunde {
    }

    public static void main(final String[] args) {

        Freunde namen = new GuteFreunde();

    }

}
Der Code lässt sich Fehlerfrei übersetzen. Der Typ GuteFreunde erbt/übernimmt alle Eigenschaften von Freunde und hat daher auch den Typ Freunde.
 

Barista

Top Contributor
Es erfordert ein wenig abstraktes Denken eine Klasse ist eine Kategorie.

Die Kategorie Mensch kannst Du nicht anfassen, aber Du kannst einen Menschen zeigen, der zu dieser Kategorie gehört.

Abstraktes Denken ist nicht so einfach.
Aber es ist nicht so abstrakt wie in der Mathematik, wie bei Grigori Perelman, der in 4-dimensionalen Welten gedacht hat.
Die Kategorie Mensch, Tier, Auto usw. ist allgegenwärtig.
Wenn man es nicht schafft, so weit abstrakt zu denken, wird es sicher nichts mit dem Reichtum von Bill Gates, Jeff Bezos, Elon Musk usw., tut mir leid für Dich.
 

DrahtEck

Aktives Mitglied
NAbend, und danke an alle für die Beiträge und eure Mühe. Es hat gefruchtet.
Bei den sogenannten Referenz-Typen hast Du einen Zettel, da steht nur ein Ort drauf. Dein Code Freunde namen; ist also ein Zettel, auf dem der Ort für eine Freund Instanz stehen kann. Der ist aber erst einmal leer.

Nehmen wir die Klasse Haus. Es gibt Zettel, auf denen kann eine Adresse stehen. Haus meinHaus; ist aber nun erst einmal ein leerer Zettel. Da kannst Du also nicht einziehen. Wenn ich Dir einen leeren Adresszettel geben würde und sagen würde: "Zieh da ein" (meinHaus.ziehEin();) dann kannst Du das nicht. Nicht nur ist der Zettel leer - Dein Haus ist ja noch nicht einmal gebaut worden!

Es muss also ein neues Haus gebaut werden: new Haus();
Sowas liefert die Referenz auf das Haus zurück, die könnte man auch direkt in einer Variablen speichern, was dann zu dem folgenden Code führen würde:
Haus meinHaus = new Haus();
Das ist soweit klar .

Mein Denkfehler war folgender:
Ich dachte ich weise der public class Auto Werte zu durch car.preis = 3500; und car.name = "BMW";

Also

Code:
public class Auto {
         int preis;
     String name;
}

durch die Eingabe in public class Main :

Code:
Auto car = new Auto();
        car.preis = 3500;
        car.name = "BMW";
dachte ich dass die selbe classe dich ich selber erstellt habe nämlich public class Auto so aussehen würde,

Code:
public class Auto {
    
     int preis = 3500;
     String name = "BMW;

}

man aber die Werte nicht sieht weil diese schon in public class Main stehen und in Auto car = new ... zu finden sind.
Dann habe ich mich gefragt warum erstelle ich durch new das gleiche wieder. Das was das Problem.
Man kann in die Referenzvariable nicht reingucken und diese als ganzes objektive betrachten. oder ?? den das würde helfen es zu verstehen.

Vielleicht hilft euch diese Erklärung wie Menschn denken die das auf anhieb nicht verstehen und vielleicht könnt ihr es ihnen anderweitig erklären.

Ich würde das so in diesem Fall formulieren:
mit new Operator erstell ich eine Kopie von derpublic class Autound dessen Inhalt, weise dann dem neuen DatenTyp Auto mit dem Variablennamen car zu, und mit dem
car.preis = 3500; car.name = "BMW"; in der public class Main weise ich den leeren DatenTypenint preis; String name; werte zu.

Damit habe ich eine instanz(Objekt)erstellt.

Sorry nicht alle Fachbegriffe sind mir geläufig, danke noch mal 🤗 !
 

mihe7

Top Contributor
mit new Operator erstell ich eine Kopie von derpublic class Autound dessen Inhalt, weise dann dem neuen DatenTyp Auto mit dem Variablennamen car zu, und mit dem
car.preis = 3500; car.name = "BMW"; in der public class Mainweise ich den leeren DatenTypenint preis; String name; werte zu.
Puh... Du meinst vermutlich das richtige, mit der Formulierung liegst Du aber völlig daneben. Außerdem liest sich "Kopie von public class Auto" für meine Begriffe zu technisch.

Mach doch das einfach der Reihe nach:
Java:
Auto car = new Auto();
car.preis = 3500;
car.name = "BMW";

Mit Auto car deklariere ich eine Variable car vom (Daten)Typ Auto. Mit new Auto() erstelle ich ein Objekt der Klasse Auto, das über die gleichen Attribute und Methoden wie die Klasse Auto verfügt. Wichtig dabei: jedes erzeugte Objekt hat seinen eigenen Satz an Attributen, so dass die Attributwerte für jedes Objekt individuell und unabhängig voneinander festgelegt werden können.

Mit car.preis = 3500 weise ich dem Attribut preis des in Variable car hinterlegten Objekts den Wert 3500 zu. Mit car.name = "BMW" weise ich dem Attribut name des in Variable car hinterlegten Objekts den Wert "BMW" zu.
 

DrahtEck

Aktives Mitglied
Mit new Auto() erstelle ich ein Objekt der Klasse Auto, das über die gleichen Attribute und Methoden wie die Klasse Auto verfügt.
Ist nichts anders als eine Kopie oder ein Muster oder eine Schablone, manche sagen dazu Blaupause daher ist Kopie für mein Verständnis genau richtig.
Aber Danke für deine Formulierung, auf jedefall habe ich verstanden was ein new Operator macht. ;)
 

KonradN

Super-Moderator
Mitarbeiter
Ist nichts anders als eine Kopie oder ein Muster oder eine Schablone, manche sagen dazu Blaupause daher ist Kopie für mein Verständnis genau richtig.
Aber Danke für deine Formulierung, auf jedefall habe ich verstanden was ein new Operator macht.
Also Du solltest bei den Begriffen deutlich besser aufpassen. Denn auch in der Umgangssprache haben die klare Bedeutungen:

a) Kopie: Wenn Du eine Kopie von etwas machst, dann erhältst Du eben wirklich eine Kopie. Eine Kopie von einer LEGO Bauanleitung ist eben eine LEGO Bauanleitung und keine aufgebaute LEGO Struktur.

b) Muster: Ein Muster ist auch etwas ganz klares. Wenn ich Dir ein Muster von etwas gebe, dann hat das nichts mit einer Bauanleitung zu tun. Dann bekommst Du ein fertiges Teil. Also wenn ein Unternehmen, das Kugelschreiber verkaufen will, Muster versendet, dann versendet es fertige Kugelschreiber. Ein Musterhaus ist ein fertig gebautes Haus, das man besichtigen kann.

Das nur ganz am Rande, denn Du solltest hier ggf. an Deinem Verständnis arbeiten, da es sonst zu Verwirrungen führen wird.
 

DrahtEck

Aktives Mitglied
Also Du solltest bei den Begriffen deutlich besser aufpassen. Denn auch in der Umgangssprache haben die klare Bedeutungen:

a) Kopie: Wenn Du eine Kopie von etwas machst, dann erhältst Du eben wirklich eine Kopie. Eine Kopie von einer LEGO Bauanleitung ist eben eine LEGO Bauanleitung und keine aufgebaute LEGO Struktur.

b) Muster: Ein Muster ist auch etwas ganz klares. Wenn ich Dir ein Muster von etwas gebe, dann hat das nichts mit einer Bauanleitung zu tun. Dann bekommst Du ein fertiges Teil. Also wenn ein Unternehmen, das Kugelschreiber verkaufen will, Muster versendet, dann versendet es fertige Kugelschreiber. Ein Musterhaus ist ein fertig gebautes Haus, das man besichtigen kann.

Das nur ganz am Rande, denn Du solltest hier ggf. an Deinem Verständnis arbeiten, da es sonst zu Verwirrungen führen wird.
Ja richtig das ist mir klar, und dem stimme ich auch zu, und werde es auch bestimmt so anwenden, es ist lediglich nur für mein Verständins und ich möchte es auch nicht weiter ausdiskutieren, ausserder muss ich
irgend wie das "Beamten Deutsch ( der new Operator erstellt eine neue Instanz einer Klasse und initialisiert diese)" 😬 für einen normal Sterblichen übersetzen. Für mich ist noch lange nicht alles so klar wie für Profis.
Ich lerne halt etwas langsmer.
Danke !
 

mihe7

Top Contributor
daher ist Kopie für mein Verständnis genau richtig.
Wenn Du das richtige meinst, ist das ja auch völlig in Ordnung. Allerdings kann ich das nicht ganz nachvollziehen. Bei einem Rezept für Gugelhupf würdest Du doch auch nicht sagen, dass ein fertig gebackener Kuchen eine Kopie des Rezepts Gugelhupf ist, oder?
 

DrahtEck

Aktives Mitglied
Allerdings kann ich das nicht ganz nachvollziehen. Bei einem Rezept für Gugelhupf würdest Du doch auch nicht sagen, dass ein fertig gebackener Kuchen eine Kopie des Rezepts Gugelhupf ist, oder?
Richtig.
Die Klasse ist für mich ein Rezept/Bauplan aus einem Rezept/Bauplan kann ich kein/e Instanz(Objekt) erstellen.
Ich kann nur nach einem Rezept/Bauplan Kochen/Bauen. Also wird in Auto car eine Kopie von der Klasse übergeben und deren Inhalt (also die gleichen Attribute und Methoden wie die Klasse Auto verfügt beseer gesagt deren Inhalt)
Dann werden Werte zugewiesen - dadurch erstelle ich eine Instanz.

Sorry ich hoffe ich konnte es einigermassen mein denken in kurz Form deutlich vermitteln :oops:
 

KonradN

Super-Moderator
Mitarbeiter
Ich bin mir nicht wirklich sicher, ob man hier noch diskutieren sollte, nachdem Du es nur für Dein eigenes Verständnis so haben willst und Du akzeptiert hast, dass die Wortwahl vermutlich nicht korrekt ist ... Das ist erst einmal ok und Du solltest einfach einmal schauen, ob Du damit weiter kommst. Wenn Du Java weiter erlernst, wirst Du früher oder später auch diese Sichtweise korrigieren.

Nicht desto trotz möchte ich nur ungerne im Thread so eine Aussage stehen lassen, ohne es korrigiert zu haben. Bei den Erläuterungen der einzelnen Punkte greife ich aber dann auf vertiefende Dinge zurück - die musst Du jetzt am Anfang in keiner Weise nachvollziehen.

also die gleichen Attribute und Methoden wie die Klasse Auto
Nein, die Klasse Auto hat nicht die gleichen Attribute und Methoden wie ein Auto. Die Attribute und Methoden der Klasse Auto sind in java.lang.Class beschrieben. Die Klasse Auto ist also eine Instanz von java.lang.Class und enthält nur eine Beschreibung der Klasse. So kann ich mir die Liste der Felder über getFields() geben lassen, was mir ein Array von Field Instanzen zurück gibt.... Ich kann mir also hier die ganzen Details ansehen. Man könnte das also direkt vergleichen und auch damit herum spielen... Man kann die Klasse auch dazu nutzen, dann auf Details einer Instanz zu zu greifen - das fällt dann unter den Oberbegriff Reflection. Das wäre dann ein Szenario wie: Du hast eine KLasse Auto geschrieben und irgendwelche Instanzen erzeugt. Diese soll ich in meinem Code auswerten, aber ich kenne Deine Klasse Auto nicht. Dann kann ich mir die Instanz selbst ansehen und z.B. schauen: Wie heisst die Klasse. Was für Felder gibt es? Und dann kann ich von einem Feld den Wert abfragen. Aber das bedeutet übertragen einfach nur:
  • Du hast eine Black Box gebaut.
  • Für den Bau hast Du einen Bauplan verwendet. Der Bauplan enthält genaue Informationen, was in der Box gespeichert werden kann. Was es z.B. für Fächer gibt.
  • Ich kann mir also so eine BlackBox nehmen, schaue mir deren Bauplan an um da dann das Fach heraus zu suchen, das "xyz" beinhalten soll.
  • Wenn ich nun die Details zu dem Fach habe, kann ich bei der Black Box gezielt dieses Fach öffnen und auf den Inhalt des Faches zugreifen.

Wichtig ist aber: Die Black Box selbst liefert keine Details zu den Feldern und so. Was man bei der Black Box aber hat ist ein Hinweis, wo der Bauplan mit den Details zu finden ist.

Dann von der Vorstellung her: Es gibt einen Bauservice. Du kannst also einen Bauplan an den Bauservice geben und sagen: Bau mir eine neue Instanz. Das ist das, was der Ausdruck mit new macht. Es baut dann eine Instanz nach der Bauanleitung. Also genau so, wie Du einen Kuchen nach einem Rezept backst.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
pkelod Binäre Darstellung Bitwise-Operator Java Basics - Anfänger-Themen 10
U Wie genau funktioniert der ! Operator Java Basics - Anfänger-Themen 3
C ?: Operator Java Basics - Anfänger-Themen 14
L Java operator % Java Basics - Anfänger-Themen 3
KogoroMori21 Erklärung zum Ternären Operator Java Basics - Anfänger-Themen 4
B Modulo-Operator anhand eines Beispieles erklären Java Basics - Anfänger-Themen 7
C Ternärer Operator mit Strings Java Basics - Anfänger-Themen 3
L Modulus Operator Java Basics - Anfänger-Themen 3
A Zuweisungen und -- operator; Java Basics - Anfänger-Themen 2
H << Operator Java Basics - Anfänger-Themen 7
F RegEx "+" nur als Zeichen, nicht als Operator oder Sonstiges Java Basics - Anfänger-Themen 2
H Operatoren Der bedingte Operator ? : ; Java Basics - Anfänger-Themen 2
H this operator - was ist das? Java Basics - Anfänger-Themen 2
R Operatoren Bad operand types for binary operator Java Basics - Anfänger-Themen 4
O Bedingter Operator eine Frage! Java Basics - Anfänger-Themen 10
O Erste Schritte x*y*z mit Shift Operator moeglich? Java Basics - Anfänger-Themen 15
L Operatoren error: bad operand types for binary operator && Java Basics - Anfänger-Themen 8
E Methoden in new-Operator Methode in geschweifter Klammer Java Basics - Anfänger-Themen 3
I bad operand types for binary operator > Java Basics - Anfänger-Themen 5
D Conditional Operator ?: Java Basics - Anfänger-Themen 3
L Operatoren Übungsklausuraufgabe, unbekannter Operator Java Basics - Anfänger-Themen 13
H Operatoren Fehler bad operand types for binary operator Java Basics - Anfänger-Themen 7
snipesss Operator "-" is undefined Java Basics - Anfänger-Themen 1
F Operatoren If mit variabelem Operator Java Basics - Anfänger-Themen 2
J instanceof Operator Java Basics - Anfänger-Themen 3
K Operatoren The Operator * is undefined for the argument type(s) double, String Java Basics - Anfänger-Themen 4
J Operator * benutzen Java Basics - Anfänger-Themen 3
DeVolt Operatoren Frage zum new-Operator Java Basics - Anfänger-Themen 4
N Methoden Modulo Operator Java Basics - Anfänger-Themen 1
S Operatoren ! Operator Java Basics - Anfänger-Themen 4
O Operator undefined Java Basics - Anfänger-Themen 2
N this-Operator Java Basics - Anfänger-Themen 2
ubaro1 Operatoren Der Tide Operator und positive Ganzzahlen in Binär Java Basics - Anfänger-Themen 1
S Hashcode - Operator ^ Java Basics - Anfänger-Themen 11
M Shift Operator Java Basics - Anfänger-Themen 3
V XOR-Operator? Java Basics - Anfänger-Themen 5
K Zugriff einer Klasse auf eine andere Andere -> bad operand for binary operator Java Basics - Anfänger-Themen 5
J bad operand types for binary operator Java Basics - Anfänger-Themen 3
T Pixelmanipulation Sobel-Operator Java Basics - Anfänger-Themen 2
K Frage zu Class Operator Java Basics - Anfänger-Themen 2
L The operator && is undefined for the argument type(s) String, boolean Java Basics - Anfänger-Themen 8
C Operatoren | - Operator Java Basics - Anfänger-Themen 10
K .Class Operator unklar Java Basics - Anfänger-Themen 3
B Operator | Java Basics - Anfänger-Themen 11
R Compiler-Fehler Operator + nicht erlaubt? Java Basics - Anfänger-Themen 6
C Was tut der | Operator? Java Basics - Anfänger-Themen 8
K Polymorphie und instanceOf Operator Java Basics - Anfänger-Themen 6
S Objekt Erzeugung ohne new Operator Java Basics - Anfänger-Themen 6
C Logischer UND Operator funktioniert nicht richtig Java Basics - Anfänger-Themen 5
H Buch: Java lernen mit BlueJ Modulo-Operator Java Basics - Anfänger-Themen 16
K Conditional Operator Java Basics - Anfänger-Themen 16
A Was bedeutet der Operator *= ? Java Basics - Anfänger-Themen 2
A Operator in Java Java Basics - Anfänger-Themen 11
S Modulo Operator Java Basics - Anfänger-Themen 8
C Variablen Problem: variable operator might not have been initialized Java Basics - Anfänger-Themen 9
D : ? Operator -Verständnisproblem Java Basics - Anfänger-Themen 24
K OOP Wertebereich Ergebnis von % Operator Java Basics - Anfänger-Themen 8
L Frage zu Konstruktoren und dem this Operator Java Basics - Anfänger-Themen 16
R Ersatz für Modulo Operator Java Basics - Anfänger-Themen 8
W &-Operator in diesem Zusammenhang Java Basics - Anfänger-Themen 19
J Oder-Operator Tastenkürzel Java Basics - Anfänger-Themen 7
K Cast-Operator Java Basics - Anfänger-Themen 3
D Bit-Operator & Java Basics - Anfänger-Themen 5
Q mathematische Operationen als Methode und nicht Infix-Operator Java Basics - Anfänger-Themen 14
V Cast-Operator Java Basics - Anfänger-Themen 2
G super operator und incompatible types, simple fehler Java Basics - Anfänger-Themen 8
N Operator aus Array lesen Java Basics - Anfänger-Themen 2
G Für was braucht man den This-operator Java Basics - Anfänger-Themen 3
M Binärdarstellung in Java mit Shift-Operator + bitweises und Java Basics - Anfänger-Themen 2
W Seltsamer Operator int var = 1<< 23; Java Basics - Anfänger-Themen 4
P If Abfrage, Variablenvertauschung und UND Operator Java Basics - Anfänger-Themen 4
J Modulo-Operator rechnet falsch Java Basics - Anfänger-Themen 2
B + operator Java Basics - Anfänger-Themen 4
F Generische Methode - was bringt der Wildcard Operator? Java Basics - Anfänger-Themen 7
H Konditional Operator Java Basics - Anfänger-Themen 2
NightmareVirus new operator Java Basics - Anfänger-Themen 5
M %-Operator Java Basics - Anfänger-Themen 3
G string ohne '+' operator Java Basics - Anfänger-Themen 5
S Modulo-Operator Java Basics - Anfänger-Themen 5
S Operator ! auf char nicht anwendbar, was nun? Java Basics - Anfänger-Themen 7
T sobel-operator Java Basics - Anfänger-Themen 3
W %-Operator Java Basics - Anfänger-Themen 4
S Unterschied: ++a & a++ Operator? Java Basics - Anfänger-Themen 9
ven000m Operator += Java Basics - Anfänger-Themen 4
Student Probleme mit dem new-Operator Java Basics - Anfänger-Themen 14
G Operator-Überladung Java Basics - Anfänger-Themen 6
B Operator Java Basics - Anfänger-Themen 2
Z operator ++ Java Basics - Anfänger-Themen 3
N return-Operator Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben