Lokale variablen in methode

  • Themenstarter Themenstarter Ezet
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
E

Ezet

Gast
Hallo,

ist die methode so ok?

Code:
public void str(String hallo , int test)
	{
		
		hallo = "bla";
		test = 1;
		
	}

oder sollte ich das so schreiben?:

Code:
public void str(String hallo , int test)
{
	String bla;
        int bla1;

      bla = hallo;
      bla1 = test;	
		
}
 
Funktionieren wird das schon.
Aber weshalb du das so machen solltest weiß ich nicht?

Wenn du schreibst was passieren soll, könnte man dir besser helfen.
 
Ariol hat gesagt.:
Funktionieren wird das schon.
Aber weshalb du das so machen solltest weiß ich nicht?

Wenn du schreibst was passieren soll, könnte man dir besser helfen.

oh es soll nichts bestimmtes passieren dies war eine allgemeine Frage zu programmierstil.
 
Du überschreibst damit deine Parameter. Die werden doch schon beim Methodenaufruf mittels Argumenten 'gefüllt'.
Auch wenn das nur eine allgemeine Frage sein soll, verbirgt sich mir hier der Sinn... 🙂
 
Ezet hat gesagt.:
Hallo,

ist die methode so ok?

Code:
public void str(String hallo , int test)
	{
		
		hallo = "bla";
		test = 1;
		
	}

oder sollte ich das so schreiben?:

Code:
public void str(String hallo , int test)
{
	String bla;
        int bla1;

      bla = hallo;
      bla1 = test;	
		
}

Hallo,

mit dem ersten Beispiel überschreibst du, wie schon gesagt, die Daten die an Methode str() übergeben wurden. Das macht keinen Sinn.
Im zweiten Beispiel sicherst du die Daten in passenden Variablen der Methode. Letzteres hat manchmal einen Sinn.

tschüs
exi
 
es ist nicht richtig aber auch nicht falsch.
wir wissen ja nicht was du vor hast.

Wenn du eine lokale Variable in einer Methode haben möchtest, musst du sie nicht übergeben.
Code:
public void str() 
   { 
       
     String hallo = "bla"; 
int test = 1; 
       
   }

funktioniert auch.

wenn du innerhalb dieser methode, die werte verändern möchtest und die änderung soll ausserhalb gültig sein, dann ist es falsch. int wird call by value übergeben, also der wert wird kopiert. Bei objekten wird die referenz auf das obejekt kopiert. Bei String müsste es funktionieren, tut es aber nicht wegen der "Unveränderbarkeit von Strings". Es wird praktisch ein neues objekt angelegt wenn du einem string einen anderen wert zuweist.

Andere Objekte kannst du schon mitgeben und dann verändern.

So zb

Code:
public class AA {
	
	public static void main(String[] args) {
				
		String test = "test";
		int x = 99;
		Container c = new Container();
		c.setI(x);
		c.setStr(test);
		c.print();
		change(c);
		c.print();

		
	}
	
	public static void change(Container c){
		c.setI(8888);
		c.setStr("was neues");
	}
	
	public static class Container{
		String str;
		int i;
		public String getStr() {
			return str;
		}
		public void setStr(String str) {
			this.str = str;
		}
		public int getI() {
			return i;
		}
		public void setI(int i) {
			this.i = i;
		}
		
		public void print(){
			System.out.println("str:"+str+" i:"+i);
		}		
		
	}
	

}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben