Hallo,
bin neu in der Java-Welt und muss sagen ist schon irgendwie ein Durcheinander, im Gegensatz zu MS. Viele schimpfen über MS, wie ich finde absolut zu unrecht. Habe mir ein bißchen was zu Java durchgelesen und mir sind folgende Nachteile aufgefallen (vor allem im Gegensatz zu C#).
- int, double... sind Primitive Typen, keine Referenztypen
- Keine Operatorüberladung möglich, String + String dennoch überladen
- Keine Exception bei Überlauf von primitiven Datentypen
- Java akzeptiert keine numerischen Werte als Wahrheitswerte
- Kein Datentyp für int32, int64, int128
- Division durch Null bei Ganzzahlen liefert ArithmeticException, besser wäre wie bei .Net DividedByZeroException
- Division durch Null bei Gleitkommazahlen liefert 0.0 keine Exception
- Modulorechnung, der erste Operand (Divident) bestimmt immer das Vorzeichen des Restes. Bei Division durch 0 gibt es entweder eine
ArithmeticException oder eine 0.0. Ein Test ob eine Zahl gerade ist mit: value % 2 == 1 funktioniert nur bei positiven Zahlen.
- Bessere Implementierung für das Switch Case in C#, da das break zwingend erforderlich ist.
- break und continue unterstützten Sprungmarken, wie beim goto
- Klassen werden groß geschrieben, nicht aber System.out das out Objekt wird kleingeschrieben, kein durchgängiges Konzept
- Keine Unterstützung von Standardwerten in Parametern
- final verhindert nicht, dass Objekte geändert werden dürfen (kein const wie in C++)
Gebt ihr mir Recht, oder nicht?
Bei OO bin ich noch nicht angelangt, aber ich bin mal gespannt was mich da für Schreckliches erwartet.
LG Isaak
bin neu in der Java-Welt und muss sagen ist schon irgendwie ein Durcheinander, im Gegensatz zu MS. Viele schimpfen über MS, wie ich finde absolut zu unrecht. Habe mir ein bißchen was zu Java durchgelesen und mir sind folgende Nachteile aufgefallen (vor allem im Gegensatz zu C#).
- int, double... sind Primitive Typen, keine Referenztypen
- Keine Operatorüberladung möglich, String + String dennoch überladen
- Keine Exception bei Überlauf von primitiven Datentypen
- Java akzeptiert keine numerischen Werte als Wahrheitswerte
- Kein Datentyp für int32, int64, int128
- Division durch Null bei Ganzzahlen liefert ArithmeticException, besser wäre wie bei .Net DividedByZeroException
- Division durch Null bei Gleitkommazahlen liefert 0.0 keine Exception
- Modulorechnung, der erste Operand (Divident) bestimmt immer das Vorzeichen des Restes. Bei Division durch 0 gibt es entweder eine
ArithmeticException oder eine 0.0. Ein Test ob eine Zahl gerade ist mit: value % 2 == 1 funktioniert nur bei positiven Zahlen.
- Bessere Implementierung für das Switch Case in C#, da das break zwingend erforderlich ist.
- break und continue unterstützten Sprungmarken, wie beim goto
- Klassen werden groß geschrieben, nicht aber System.out das out Objekt wird kleingeschrieben, kein durchgängiges Konzept
- Keine Unterstützung von Standardwerten in Parametern
- final verhindert nicht, dass Objekte geändert werden dürfen (kein const wie in C++)
Gebt ihr mir Recht, oder nicht?
Bei OO bin ich noch nicht angelangt, aber ich bin mal gespannt was mich da für Schreckliches erwartet.
LG Isaak