Code Stück
-
Hallo,
k wird nicht deklariert, aber trotzdem wird k ausgegeben.
int myVar = 2; switch(myVar) { case 1: int k;break; case 2: k=3;System.out.println(k);break; case 3:; default: }
-
Ist doch toll.
-
asdff schrieb:
k wird nicht deklariert,
case 1: int k;break;
Und was ist das?
-
nee ich mein ja bloss case 1 wird ja nie erreicht Aber der Compiler geht da wohl trotzdem mal rein :)a
-
Kann mir mal einer sagen wir man Objekte in einem array initialisert ?
Hab da eine Klasse Player und es gibt einen Konstruktor der Player(String name)
Jetzt will ich sowas machen
Player [] array = new Player[5];
Wie läuft das jetzt mit dem Konstruktor ????
-
Auf gut deutsch will ich wissen wo man die Konstruktor Argumente beim Array anlagen angeben muss
-
Du scheinst dem Irrtum zu unterliegen, dass beim Anlegen des Arrays auch gleich Player-Objekte erzeugt werden. Das ist nicht der Fall.
-
Aso ich erzeuge praktisch nur ein Array mit 5 Player Referenzen .
Ich muss also noch eine Schleife aufsetzen die dann Objekte anlegt.for(int i = 0 ; i < array.length();i++) { array[i] = new Player("Name"); }
Anders gehts wohl nicht?!
-
Oder Streams:
Player[] array = Stream.iterate(new Player("Name"), p -> new Player("Name")).limit(5).toArray(Player[]::new);
-
Wie macht das eigentlich in Java am besten wenn man ein Objekt kopieren möchte ?
Das einfachste ist natürlich alle Instanzvariablen nach einander per value kopieren. Und Instanzvariablen die auch wieder Objekte sind auch wieder die Werttypen kopieren. Dann hat man alle Referenzen eliminiert. Ich würde mir dann in der Klasse eine Methode copyByValue anlegen und die erzeugt mir dann eine deep copy. Oder gibts andere Möglichkeiten ?
-
Schreib dir nen Copy-Konstruktor !
-
Objekte können mit clone() kopiert werden, das geschieht byte für byte. Referenzen werden so auch nur kopiert, die dahinterliegende objekte jedoch nicht. Enthält das objekt also referenzen auf objekte, enthält das neue genau die gleichen referenzen auf die selben objekte. Man kann die clone()-methode überschreiben, um eine tiefe kopie zu erzeugen.
-
wie wird eigentlich sowas vom Compiler gehandelt.
if(3.1234567888888 == 3.1234567888889)
{ // hier wird true ausgegeben}
Die Zahlen werden die standardmäßig in einen double or float gespeichert ?
Es gibt ja auch diese explizite Schreibweise mit:
3.1234567888888f oder 3.1234567888888d obwohl ich jetzt nicht weiss ob es "d" überhaupt gibt.
-
Es meldet sich ja keiner mehr
Mal noch so nee frage.
Wieso funktioniert der Shift Operator nicht bei double Zahlen sondern nur bei int ?
Würde doch bei double auch Sinn machen ??
-
Peter_Mueller schrieb:
Würde doch bei double auch Sinn machen ??
Echt? Was ist denn
6.022140857e23>>5
?
-
Lol bei meinem Beispiel klappt das
Zahl: 1011,101=11,625
Anwendung Shift Operator: >>1 (Verschiebung nach rechts)
Ergibt diese Zahl: 101,1101 = 5, 8125wobei 5,8125 * 2 = 11,625 ist . Folglich hat der Shift Operator funktioniert
-
volkard schrieb:
Echt? Was ist denn
6.022140857e23>>5
?
Sollte doch bei deinem Beispiel auch klappen ??!!
Wird halt dann zu 0.00006022140857e23
-
Also rein logisch macht es keinen Sinn, wie kann man ein Bit beispielsweise um 1,5 Stellen nach Rechts verschieben?
-
häh. Es geht doch nur darum Bits zu verschieben. Klar müsste man beim double noch etwas mehr durchführen wenn man z.B. die nullen hinter dem Komma entfernen möchte und dann noch den Exponent ändern, aber grundsätzlich funktioniert das !
-
Ah, ich dachte eben du meinst sowas:
a >> 1.5
Sorry.