Unterschied zwischen "type x = value" & "type x = new Type(value)"?

...komplette Frage anzeigen

2 Antworten

Könntest du bitte ein kurzes Codebeispiel posten (nutze die Webseite pastebin/...), bei dem dieses Verhalten reproduzierbar ist?

Grundsätzlich liegt der Unterschied darin, dass du mit dem Aufruf von new und einem Typkonstruktor ein neues Objekt des Typen erstelllst.

int a = new Integer(5);

In diesem Fall wird ein Integer-Objekt erstellt, mit dem Wert 5, und via Auto Unboxing in einen primitiven Datentyp gesteckt.

int a = 5;

Hier dagegen wird nur ein primitiver Datentyp mit einem konkreten Wert initialisiert.

Grundsätzlich kommt bei beiden Fällen das gleiche Ergebnis (eine initialisierte Ganzzahlvariable mit primitiven Datentyp) heraus.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Eurocrafter
14.10.2016, 23:43

Heißt das, ich kann von außen nur auf Objekte, nicht aber auf primitive Datentypen, wie int, boolean, char, byte etc zugreifen?


Das erklärt einiges.


Hier nochmal der pastebin link. Eigentlich handelt es sich um boolean, das ist jedoch genau wie int ja auch ein primitiver Datentyp.

http://pastebin.com/HdJ2mjqP


Dem Thread t wird übrigens mit new CheckThread(client) ein Socket übergeben... das ganze ist für einen Server gedacht... 

0

Nein, nein und nochmals Nein.

Ich möchte gar nicht erst wissen, wer dir das Programmieren beigebracht hat, aber so wie du das Ganze angehst, wird das nichts.

Als erstes macht es keinen Sinn, dass du ein Attribut static machst (du weißt vermutlich nicht mal, was das bedeutet, also lass am besten die Finger davon) und zweitens sind Attribute fast IMMER private. 

Auf diese Variablen wird dann per Getter- und Setter-Methoden zugegriffen.

Nun zu deiner Frage:

Bei "x=5" weißt du x einen Integer zu. Bei "x=new Integer(5)" weißt du x ein Objekt vom Typ Integer zu! Standardmäßig ist ein int kein Objekt (im Gegensatz zu String).

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von regex9
14.10.2016, 23:10

Du kennst doch weder Konzept noch konkrete Implementierung seiner Anwendung. Daraufhin einschätzen zu wollen, ob er wirklich weiß, was static macht und ob es hier sinnvoll ist, würde ich vorerst ihm überlassen. 

2
Kommentar von Eurocrafter
14.10.2016, 23:29

1. ich kann auf die Variable von einer anderen Klasse aus nicht zugreifen, wenn sie private ist. Das kann ich nur wenn sie public oder protected ist.

2. Weiß ich schon, was static bedeutet. Statische Variablen kann es nur "einmal" pro Klasse geben. (z.B. wenn man ne Klasse Dog hat. Dann kann es bei 5 Hunden auch 5 mal die Variable age oder height geben. Die Anzahl, also wieviele Hunde es insgesamt gibt, gibt es allerdings nur einmal, wenn diese als static definiert ist)

3. Wieso macht es "keinen Sinn" static zu benutzen? Ich habe mich dabei hier grob orientiert: http://www.java-forum.org/thema/zugriff-auf-variablen-anderer-klassen.102201/

4. Ja, man kann das über die genannten Getter- bzw. Settermethoden machen... ja kann man, das wird auf der Seite auch erwähnt.

5. Ich habe "das Programmieren" in 2 Büchern (darunter "Java ist auch eine Insel" zum nachschlagen) erlernt und mehrere Tutorials in Form von Text und Video genutzt.

6. Nur weil mein Acc-Name vlt n bisschen nach nem 13 jährigen Jungen klingt (ok, das gebe ich zu), ist das noch lange keine Grund, sich hier so dermaßen aufzuführen und den Fragesteller als Deppen darzustellen.

7. Wieso kann man von außerhalb nur auf Objekte und nicht etwa auf Integer oder Boolean zugreifen?

Danke schonmal

0

Was möchtest Du wissen?