romy: Array an methode übergeben

Beitrag lesen

Hi Blaubart,

Java interpretiert Fließkommaliterale standardmäßig als Double. Das ist in die Sprache "eingebaut". Deswegen kannst du double d = 2.3 schreiben, aber nicht float f = 2.3. In letzterem Beispiel versuchst du nämlich, eine 64-Bit-Fließkommazahl (Double) in eine Variable zu stecken, die nur 32 Bit Platz bietet (Float). Deshalb mußt du mit dem zusätzlichen Suffix hantieren: float f = 2.3F;

Danke, das macht es noch etwas klarer.
Mich wundert noch etwas.
Ich habe auch gerade gelernt, dass ich ein Array an eine Methode übergeben kann und die Methode, sollte sie tatsächlich etwas verändern, das Original verändert. Das ist doch Mist. Wie verhindere ich denn dann das Manipulieren an Originalen?

Beispiel:

  
 public static void ausgabefeld(int [] a){  
  for(int i=0; i<a.length; i++) {  
   System.out.println("Feld"+i+": " + a[i]);  
  }  
 }  
  
 public static void verdopplefeld(int [] a) {  
  for(int i=0; i<a.length; i++) {  
   a[i] *= 2;  
  }  
 }  
  
 public static void main(String[] args) {  
  int [] feld = {4,9,12};  
  // Ausgabe  
  
  // Hier verändert sich das Original, da ich das gesamte Objekt mitgegeben habe  
  // Call by Reference  
  verdopplefeld(feld);  
  ausgabefeld(feld);  
 }  

Ich meine, dass verdopplefeld eigentlich nichts an feld verändern dürfte, so ist es jedenfalls in den mir bekannten Sprachen. Bei Strings und einfachen Datentypen macht java das nicht.

ciao
romy