ich bin auch nicht so der Javacrack(hatte damit nur ein paar Jahre zu tun).
Java hat wenn du so willst 2 Ansätze.
Alles ist ein objekt aber es gibt auch primitive Datentypen, was zB dem valueType-Klasse in C# entspricht.
Aber du hast auch, Objekte der Primitiven Datentypen(haste in C# auch, ich sach nur new Int());
btw, die teile musste in C# auch als Pointer handhaben können, sonst wäre Marshalling bei Unmannaged Code mit DllImport so eine schwierige Sache, obwohl man da dann einen Wrapper vom Typ System.IntPtr benutzt um den Pointer zu übergeben, aber möglich ist es wenn auch kein Pointer vom Typ *int [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] .
btw: meine argumentationskette ist Grundlage von so ziemlich jeder OOP-Sprache die ich kenne, hat also nicht unbedingt was mit der Sprache zu tun,sondern ist vielmehr eine Frage der Eigenschaften von OOP und cleverem Design.
Und um nochmal auf das Thema zurrückzukommen hier ein kleines Beispiel :
PHP-Code:
import java.lang.Integer;
public class mymain {
public static void test(int h){ System.out.println("Here is test with value "+h); return; }
public static void main(String[] args){ Integer e = new Integer(4); test(e); return;
} }
//edit
BTW, ganz vergessen,
Metphist0,wegen deiner ursprünglichen Fragestellung:
Alles was hier über call-by-reference und call-by-value und objecte etc gesagt wurde ist wahr, aber halt nur bis zu einem gewissen Grad.
Integer ist immutable genauso wie andere Objekte die Datentypen enthalten.
Und sie haben auch noch die Eigenschaft das sie, als einzige objekte mittels call-by-value übergeben werden.
Alle anderen Objekte,vor allem deine eigenen Objekte, sind Call-by-reference.
D.h. wird bei deinem Codebeispiel aus der Klausur auch 1 ausgegeben.
(sowas hat man mir in bezug auf Java nie beigebracht nur dieses call-by-Reference gilt FÜR ALLE OBJEKTE *grübel* naja, selbst lesen macht klug ) und somit ist mein letzter Post vor diesem hier, nicht wirklich richtig.... hey was gelernt
__________________
Meine Rechtschreibfehler dürft ihr gerne behalten.
------------------------------------------------------------
Füttere keine Trolle!->Also unterstütz auch nicht Appel.
ich bin auch nicht so der Javacrack(hatte damit nur ein paar Jahre zu tun).
Ein paar Jahre ist gut....
Ich versuche mich jetzt seit ca. 2 Wochen in C# und in der Schule behandeln wir nun seit ca 1 1/2 Jahren C++, hatten aber merkwürdiger Weise nichts über OOP, das hab ich mir vor ca. einer Woche versucht anzueignen
Aber ich glaube mit Vererbung gehen wir schon viel zu weit, ursprünglich wollte er ja nur wissen warum nicht die 2 ausgegeben wird
@Thema
Zitat:
Code:
Integer i = new Integer();
[...]
jain
Würde es denn mit
Code:
object i=new integer();
klappen?
// Ok, dann hatte ich in dem Artikel was Grundlegendes falsch verstanden, ich les den lieber nochmal...
Lies dir dazu mal Polymorphie durch.
D.h. die Variable vom Typ Object kann jedes Objekt in Java aufnehmen, aber Dank polymorphie hat jedes Objekt das du in die variable vom Typ Object packtst immer noch die gleichen eigenschaften.
__________________
Meine Rechtschreibfehler dürft ihr gerne behalten.
------------------------------------------------------------
Füttere keine Trolle!->Also unterstütz auch nicht Appel.
Das ist zwar alles interessant(und vieles richtig), aber der Grund, dass die Methode nicht funktioniert ist, dass nicht auf dem uebergebenen Objekt gearbeitet wird (ein Array ist auch mit einem primitiven Datentyp ein Objekt) sondern ein neues erzeugt wird und nur in der Methode die Vatiablen geaendert werden:
public static void change_i(int[]i){
i[0]=2;
return;
}
sorgt fuer eine 2
Das mit dem Integer (als Objekt) ist zwar richtig, allerdings ist die set-Methode gesperrt - es laesst sich also nicht so benutzen.
Das ist zwar alles interessant(und vieles richtig), aber der Grund, dass die Methode nicht funktioniert ist, dass nicht auf dem uebergebenen Objekt gearbeitet wird (ein Array ist auch mit einem primitiven Datentyp ein Objekt) sondern ein neues erzeugt wird und nur in der Methode die Vatiablen geaendert werden:
public static void change_i(int[]i){
i[0]=2;
return;
}
sorgt fuer eine 2
Das mit dem Integer (als Objekt) ist zwar richtig, allerdings ist die set-Methode gesperrt - es laesst sich also nicht so benutzen.
Das sorgt auch nicht für eine 2. :-D
Der wirft nur einen Fehler aus. So wie ich das sehe. :-D
Ich weiss nicht was Du meinst - Ich habs gerade noch einmal hieraus zusammenkopiert und es funktioniert genau wie gesagt - oder ich versteh den Witz nicht so ganz