Frage zu new
-
Hi !
Folgende Situation :
X var = new X[5];
...
....
var = new X (var.length);Was macht diese Zeile ? Wäre nett wenn mir einer das mal erklären könnte !
Thx
-
X var = new X[5] geht nicht denn X ist was anderes als X[]
-
primitive datentypen erfordern in java kein aufruf von new.
da wird nur bei arrays, strings und objekten gebraucht.
und length is ne instanzvarialbe die bei nem aray zB die anzahl der elemente liefert
-
primitive datentypen erfordern in java kein aufruf von new.
Sicher? lol
-
Dabei hat er schon recht.
int x = 5;
int y;sind gültige Anweisungen. Nur wenn ein Array eines primitiven Typs erzeugt werden soll muss new angewandt werden.
-
x[] var = new X[10] würde gehen.
gruss
-
x[] var = new X[10] würde gehen.
Naja, das gibt wohl n compilerfehler.
du solltest auf Groß- und Kleinschreibung achten!
und außerdem fehlt der datentyp oder soll X ein objekt sein?!edit: *lol* na klar is X der Typ..wo war ich beim posten nur wieder mit meinen gedanken?!
[ Dieser Beitrag wurde am 16.01.2003 um 13:55 Uhr von Griffin editiert. ]
-
Neee X ist der Typ
-
Hi !
Sorry, hab mich auch noch vertippt
Richtig sollte die Zeile so lauten (jetzt mal nicht aus dem Kontext rausgerissen...)
public void p (X[] x) { //blabla, wir arbeiten mit x x = new X [x.length]; //<-- so, was macht das ? }
Danke schonmal im voraus für eure Bemühungen
-
Das ist total unschön. Er erzeugt ein neues Array vom Typ X mit der selben Größe des übergebenen Arrays (X[] x).
-
Hab ich doch recht gehabt !!! Heute morgen ham wir darüber diskutiert...
Und jedesmal wird der Constructor nochmal aufgerufen, richtig ?
-
Nein, es wird lediglich das Array angelegt. Jedes Array-Element muss dann explizit den Konstruktor via new aufrufen. Also
x[0] = new X;
[ Dieser Beitrag wurde am 16.01.2003 um 16:02 Uhr von CengizS editiert. ]
-
Mh.
Aber das neu angelegte Array ist noch mit den alten Werten "gefüllt" ? Ich kann damit direkt weiterarbeiten, oder ?
-
Hmmm das sollte nicht sein. Du holst Dir ja im Prinzip eine neue Startadresse.
-
Original erstellt von Headhunter:
**
Aber das neu angelegte Array ist noch mit den alten Werten "gefüllt" ? Ich kann damit direkt weiterarbeiten, oder ?**Ein neues Array wird erstmal automatisch von vorne bis hinten mit "null" gefüllt. ...bzw. 0, wenn die Elemente primitive Datentypen sind.
-
Also hab ich ein Objekt der Klasse, *ohne* ihren Konstruktor aufgerufen zu haben ??
Das ist mir aber suspekt
-
Nein, du hast nur ein Array das Objekte vom Typ X halten kann. Mehr nicht...
-
Danke, jetzt hab ichs verstanden
-
Ein Beispiel (anlehnend an Deinen Entwurf)
[java]public class X
{
public X(String name) {
System.out.println("X() called with Name '"+name+"'");
}public void p (X[] x)
{
x = new X [x.length]; //<-- so, was macht das ?
for (int i=0; i<x.length; ++i) {
System.out.println(x[i]);
}
}
}[/code] Das ist also die Klasse mit der ominösen Methode p(X[] x) und nun das Startprogramm ... [java]public class Y
{
public static void main (String args[]) {
X myX = new X("Main-Object");
X[] xArray = new X[5];
xArray[0] = new X("temp_1");
xArray[1] = new X("temp_2");
xArray[2] = new X("temp_3");
xArray[3] = new X("temp_4");
xArray[4] = new X("temp_5");
myX.p(xArray);
}
}[/code]Wenn Du es ausführen lässt wirst Du folgenden Output bekommen:X() called with Name 'Main-Object' X() called with Name 'temp_1' X() called with Name 'temp_2' X() called with Name 'temp_3' X() called with Name 'temp_4' X() called with Name 'temp_5' null null null null null
[ Dieser Beitrag wurde am 16.01.2003 um 17:05 Uhr von CengizS editiert. ]
-
jo, soll beides ein grosses X sein!!:)