Hallo,
Beispiele.
1. Java kennt keine Pointer! Wirklich? Jede Variable ist ein Pointer! (Nennt sich halt nur
Verweis), d.h. das ganze Speichermanagment ist undurchsichtig.
Beispiel:
Code:
String a = new String ;
legt einen String an, denn man dann füllen kann.
Aber
Code:
String a[] = new String [4];
legt nicht 4 Strings an, sondern nur 4 Verweise. Wozu brauch ich dann aber den
new-Operator?. Wenn eh jede Variable ein Verweis ist, würde es doch auch
Code:
String a[4];
tun, was in sich konsistenter wäre. In C/C++ -Logik steht dann eben vor jeder Variable immer ein '*'.
Durch diese ich tu so als ob och keine Pointer habe, verwende sie aber ständig bin ich mir
nie ganz sicher auf welchem Objekt ich gerade arbeite. Und umgekehrt, wie oft sinnlose
Kopien angelegt werden, wo ein Pointer reichen würde (Methode-Aufruf z.B.)
2. Ich hatte dann glücklich einen String geüllt und war hocherfreut das es die
trim()-Methode gibt. Ich muss zugeben, flüchtig gelesen zu haben. Aber warum legt
Code:
str.trim();
eine Kopie von str an und trimt diese, statt wie es IMHO der OOP-Logik entspräche sich zu trimmen.
3. Warum muss es zig Stream-Klassen geben, die alle Spezialfälle abdecken, statt einer (oder
zwei) mächtiger Klassen pro Richtung, die alles wesentliche abdecken, quasi eine Klasse die
alle C-Funktionen, die auf FILE * arbeiten in sich vereint. Ich hab keine Klasse gefunden, die
- Characterweise lsen kann (analog fgetc,fputc)
- Speichernblöcke lesen kann (analog fread, fwrite)
- zielenweise (analog fgets()), in diesem Fall müsste man sowohl nach String als auch anch char/byte-Arrays)
- und formatiert lesen (analog zu fscanf() ).
Formatierte I/O hab ich bisher gar nciht gefunden
4. Warum muss der File mit der Main.-Klasse Main heissen?
Das ist das was mir an Frust der letzten Tag spontan einfällt.
Zur Formatierten Ausgabe.
Ich wünschte mir eine
Code:
sprintf(str,"%02d:%02d:%02d",now.get(Calendar.HOUR_OF_DAY)+":"+now.get(Calendar.MINUTE)+":"+now.get(Calendar.SECOND));
Bis dann
R"udiger