[QUOTE=Sen-Mithrarin]@SlaterB
x.compareTo(y) ist fest definiert :
-1 wenn x kleiner als y ist
0 wenn x gleich y ist
1 wenn x größer y ist
Andere Werte gibt es nicht (zumindest nicht bei einem korrekt implementierten compareTo()).
[/QUOTE]
(falls es überhaupt so ist) aber verlassen kann man sich nicht darauf, da dummerweise kein Zahl-/Datentyp nur mit diesen drei Werten benutzt wird/ existiert,
z.B. hat die nicht ganz unbedeutende Klasse namens String eine Implementation a la
int len1 = value.length;
int len2 = anotherString.value.length;
int lim = Math.min(len1, len2);
char v1[] = value;
char v2[] = anotherString.value;
int k = 0;
while (k < lim) {
char c1 = v1[k];
char c2 = v2[k];
if (c1 != c2) {
return c1 - c2;
}
k++;
}
return len1 - len2;
}
ist auch bisschen aufwendig in Eigenimplementierung, bei jeder int- oder sonstigen Differenz außerhalb [-1,0,1] extra noch auf -1 bzw. 1 herunterzurechnen,
besser wäre es freilich (oder auch nicht wenn doch nicht vorgeschrieben),
aber im eigenene Code kann man gefahr- und aufwandlos sichergehen, wozu ein Risiko eingehen und im Zweifel dann solche Fehler bei anderen bemängeln?
Leider falsch. Die mathematisch korrekte Bezeichnung für eine Fakultät sieht vor dass das Ausrufezeichen VOR der Basis (darum auch der Variablenname) steht. Ein doppeltes Ausrufezeichen (!!x) bedeutet super-Fakultät, und ist fast identisch, nur das in den einzelnen Steps nicht mit Basiswert sondern deren Fakutltät gerechnet wird : !!3 = !3x!2x!1
wenn in Gegenrede angesprochen, und nicht von irgendwem, und selbst Wikipedia
Sie wird durch ein dem Argument nachgestelltes Ausrufezeichen („!“) abgekürzt.
Fakultät
schreibt sowie sicherlich die Lebenserfahrung/ Matheunterricht der gesamten Welt (auch bei dir?),
wäre es dann nicht angebracht, evtl. exotische ‘eigentlich’-Definitionen mit Quellen zu hinterlegen?
Zum clone() eines finalen immutable Parameter : da BigInteger (gutes Beispiel warum es clone() geben sollte) keinen direkten copy-Konstruktor anbietet fallen unnötige Umkonvertierungen an. Als einfachstes Beispiel wäre dass dann BigInteger(BigInteger.toString()) … kommt aber sicher auf den Compiler an. Ein clone() wäre hier hilfreich da lediglich das interne Daten-Array 1-zu-1 kopiert werden müsste was deutlich weniger Aufwand macht.
wozu das clone()? eben weil es immutable ist ist das doch relativ unnötig,
String hat freilich einen Copy-Konstruktor, es ist korrekt dass das hier fehlt, aber gerade besonders nötig?