![]() |
| | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Gast
Beiträge: n/a
|
Also ich habe ein Problem. Und zwar gibt es in Java ja nur Objekt, also sind Variablen auch Objekte und haben ihre Methoden. So müßte bei einem Funktionsaufruf, also auch die Referenz übergeben werden und mit dem Originalwert weitergearbeitet werden.. aber... ********************************** int a = 1; erhoehen(a); System.out.println("Ausgabe: " + a); private void erhoehen (int a) { a++; } ********************************** Eigentlich solte die Ausgabe 2 seien aber leider funktioniert das nicht. Warum nicht? In C++ würde das mit dem AdressOperator (& Also hat einer ne idee??? |
|
| | Nach oben #2 |
| Chefkoch-Mod Registriert seit: 30.05.2004
Beiträge: 432
|
Hi, erst einmal Willkommen hier im Forum. Weiter gibt es hier Code-Tags, welche Du bitte nutzen solltest, damit man den Code besser herauslesen kann. Zu Deinem Problem: So geht das in Java leider nicht bzw. ist es nicht möglich. Du musst entweder mit Rückgabewerten arbeiten oder Du manitpulierst globale Variablen mit dem this-Operator Code: int a = 1;
private void erhoehen() {
this.a++;
}
private void ausfuehrMethode() {
erhoehen();
System.out.println(a);
}
__________________ Denk mal darüber nach... Lars ACHTUNG: wenn ich von Klassen spreche, könnte ich auch deren Instanzen meinen. www.linuxforen.de +++ www.macuser.de +++ www.mrunix.de +++ www.lmprojects.de |
| | |
| | Nach oben #4 |
| Chefkoch-Mod Registriert seit: 30.05.2004
Beiträge: 432
|
Ich verstehe nicht, wie Du das über ein Array lösen möchtest. Prinzipiell geht es hier um die Sicherheit, dass man im Code nichts murksen kann. Wenn Du den richtigen Wert zurückgibst, machst Du das bewusst. Dieses & schiebt sich bei C++ ganz schnell mal mit ein. Auserdem kannst Du in der Methode auf den globalen Variablen arbeiten, dann benötigst Du nur ein erhoehen() und erziehlst genau den Effekt.
__________________ Denk mal darüber nach... Lars ACHTUNG: wenn ich von Klassen spreche, könnte ich auch deren Instanzen meinen. www.linuxforen.de +++ www.macuser.de +++ www.mrunix.de +++ www.lmprojects.de |
| | |
| | Nach oben #5 |
| Gast
Beiträge: n/a
|
Hi, also in Java ist das so: Objekte werden immer als Referenz übergeben. Die einfachen Datentypen (int, char und auch String) werden allerdings als "value" übergeben! Wenn du auch z.B. einen int als Referenz übergeben willst, packe diesen einfach in eine Dummy-Klasse. Beispiel: class MyInt { int i; MyInt(int zahl) { i = zahl; } } Im Programm sähe das dann so aus: ... int i = 7; MyInt iObj = new MyInt(i); ... erhoehe(iObj); ... public void erhoehe(MyInt o) { o.i++; } ... Gruß, Daniel. |
|
| | Nach oben #6 |
| Chefkoch-Mod Registriert seit: 30.05.2004
Beiträge: 432
|
Bitte setze in Deinen kommenden Beiträgen doch Java-Tags, damit man es lesen kann. Danke.
__________________ Denk mal darüber nach... Lars ACHTUNG: wenn ich von Klassen spreche, könnte ich auch deren Instanzen meinen. www.linuxforen.de +++ www.macuser.de +++ www.mrunix.de +++ www.lmprojects.de |
| | |
| | Nach oben #7 |
| Projektleiter Registriert seit: 30.11.2005 Ort: Bottrop
Beiträge: 1.135
|
Es gibt die Klasse Integer, die einen Wrapper für den int-Typ darstellt - erspart dir also die zusätzliche Klasse. Ich weiß allerdings nicht, ob die auch nen Setter hat... guck einfach mal in der Doku (java.lang.Integer). |
| | |
| | Nach oben #8 | |
| Erfahrener Benutzer Registriert seit: 29.05.2004
Beiträge: 228
| Zitat:
http://java.sun.com/j2se/1.5.0/docs/...ng/String.html Das ist auch der Grund wieso du Strings (fast) immer nicht mit == vergleichen kannst. Ausserdem eine Ergänzung: Für die "einfachen" Datentypen wie int und char gibts jeweils auch Wrapper-Klassen wie z.B. Integer und Character die dann jeweils auch wie alle anderen Objekte auch als Referenz übergeben werden. MfG Peschmä
__________________ Amazon.de | The Java Trap | Freie Software | Freie Software vs. Open Source | GNU Classpath | GCJ | SableVM "We should forget about small efficiencies, say about 97% of the time: Premature optimization is the root of all evil." - Donald Knuth | |
| | |
| | Nach oben #9 | ||
| Gast
Beiträge: n/a
| Zitat:
Gruß, Densi. | ||
|
| | Nach oben #10 |
| Erfahrener Benutzer Registriert seit: 29.05.2004
Beiträge: 228
|
Stimmt. Das ist wohl neu - als ich mit Java angefangen hab ging das 100%ig sicher nicht. Ach so, nein, ganz so einfach ist das nicht. Hab mal nachgeguckt: Java Code: ergibt: "Wir sind gleich" - weil es sich hier um Stringkonstanten handelt. Aber mit Strings, die Ergebnisse von Operationen wie + oder substring sind geht das nicht: Java Code: das ergibt "Wir sind nicht gleich". Hätten wir eine übergabe by-Value sollte das aber schon gleich sein (oder auch wenn Sun so schlau gewesen wäre und den == Operator entsprechend überladen hätte) MfG Peschmä
__________________ Amazon.de | The Java Trap | Freie Software | Freie Software vs. Open Source | GNU Classpath | GCJ | SableVM "We should forget about small efficiencies, say about 97% of the time: Premature optimization is the root of all evil." - Donald Knuth |
| | |
| | Nach oben #12 |
| Chefkoch-Mod Registriert seit: 30.05.2004
Beiträge: 432
|
Jupp, ich bin mir ziemlich sicher, dass ich sowas in meinem jetzigen Projekt verwende.
__________________ Denk mal darüber nach... Lars ACHTUNG: wenn ich von Klassen spreche, könnte ich auch deren Instanzen meinen. www.linuxforen.de +++ www.macuser.de +++ www.mrunix.de +++ www.lmprojects.de |
| | |
| | Nach oben #13 | |
| Erfahrener Benutzer Registriert seit: 29.05.2004
Beiträge: 228
| Zitat:
0 h 1 a 2 l 3 l 4 o 5 d.h. 0,0 wäre String mit Länge 0 - 0,1 wäre String mit Länge 1, etc Abgesehen davon stimmt ja der Output: Code: peschmae@thinkpad:/tmp$ java test hallo,hallo du da,hallo, Wir sind nicht gleich Code: peschmae@thinkpad:/tmp$ java test hallo,hallo du da,hall, Wir sind nicht gleich
__________________ Amazon.de | The Java Trap | Freie Software | Freie Software vs. Open Source | GNU Classpath | GCJ | SableVM "We should forget about small efficiencies, say about 97% of the time: Premature optimization is the root of all evil." - Donald Knuth | |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| call By Reference bei EJB | alekz | Enterprise Java | 1 | 24.01.2005 22:50 |