Zielsetzung ist, die Lesbarkeit des Quelltextes zu verbessern.Warum dieser Aufwand?
Wenn man das macht, was ist dadurch möglich geworden?
BigDecimal result = new BigDecimal("5.2").multiply(new BigDecimal("3.1").add(new BigDecimal("4.2")));
BigDecimal result = new BigDecimal("5.2") * (new BigDecimal("3.1") + new BigDecimal("4.2"));
Siehe https://de.wikipedia.org/wiki/Referenz_(Programmierung) (und C++ lässt seitens der Programmierung auch mehr Manipulationen am Speicher (inkl. Vor- und Nachteilen) zu als z.B. Java / Python...)Unterschied zwischen einer Referenz und einem Pointer ist?
Wo hast Du das gefunden? Und das gilt so nicht für Java würde ich sagen. Denn String string1 = null; erzeugt mir ja eine Null Reference in Variable string1. Und ich kann string1 = "hallo"; danach schreiben und die Referenz sozusagen überschreiben. Und ich muss es nicht initialisieren, wenn ich es erzeuge. In einer Methode kann ich erst eine Variable deklarieren um diese dann später zu initialisieren.References vs Pointers
References are often confused with pointers but three major differences between references and pointers are −
- You cannot have NULL references. You must always be able to assume that a reference is connected to a legitimate piece of storage.
- Once a reference is initialized to an object, it cannot be changed to refer to another object. Pointers can be pointed to another object at any time.
- A reference must be initialized when it is created. Pointers can be initialized at any time.
Geht ja hier auch um C++Und das gilt so nicht für Java würde ich sagen
Ja, das ist natürlich richtig und das war mir so bei der neuen Fragestellung entgangen. Danke für den Hinweis.Geht ja hier auch um C++
main() {
int* pi = new int(7);
foo(pi);
delete pi;
int i = 7;
bar(i);
int j = 7;
baz(j); // wirkungslos
)
void foo(int* pi) {
*pi = 8;
}
void bar(int& i) {
i = 8;
}
void baz(int i) {
i = 8;
}
Ja, das die Java Entwickler so entschieden haben, sehen wird. Aber man sieht auch, dass dies nichts ist, das man mit der Zeit eingesehen hat.und zwanzig Jahre später (bei der Entwicklung von Java) hat man gesehen, dass das Operator-Overloading dann doch nicht so hilfreich ist, dass sich die ganze Mühe lohnt.
Ja natürlich. Ich hatte das auch nur erwähnt, da man in Deinen Post vielleicht rein interpretieren könnte, dass da über die Zeit eine neue Erkenntnis gekommen ist, was besser ist ... Ich gehe auch davon aus, dass dies nicht deine Aussage sein sollte.Wir sind uns doch fast einig:
- Operator-Overloading macht den Code (manchmal) lesbarer,
- Operator-Overloading macht den Compiler komplizierter und das Lernen der Programmiersrache (etwas) schwerer.
Das ist ein Interessenkonflikt, in dem man sich so oder so entscheiden kann.
Python kennt Operator Overloading.In Java und Phyton gibt es das ja nicht.
Was ist denn für dich der offensichtlich ja eindeutige und sprach-unabhängige Unterschied zwischen Referenz und Pointer?Wer den Unterschied zwischen Referenz und Pointer nicht kennt sollte sich nicht Programmierer nennen dürfen egal welche Sprache und egal ob man es nun aktiv nutzt, wie in C, oder nur passiv wie in Java. Als Programmierer sollte man sich zumindest ein wenig mit der Architektur eines Computers beschäftigen und verstehen was unter der Hochsprache passiert.
Naja, Du hast in #27 nach dem sprach-unabhängigen Unterschied gefragt und das war der Versuch einer Beschreibung, in die sich die verschiedenen Ansätze unterschiedlicher Sprachen einfügen können.Vom Konzept her, aus einer theoretischen Sicht, würde dir da sogar zustimmen, @mihe7.
Aber bei konkreten Umsetzungen in Programmiersprachen hilft einem das halt fast gar nicht weiter. Den Unterschied zwischen Referenzen und Pointern in C++ wird niemand, der nicht schon weiß was genau es in C++ ist, damit erklären können. Und ebenso wird niemand der Referenzen in Java kennt deshalb auch Referenzen in C++ verstehen, und andersrum.