// Aufgabe
int a = 1000000;
int b = 1000000;
int c = a * b;
// Falsch: Overflow, da a*b mit int-Genauigkeit berechnet wird
long c = a * b;
// Falsch: Explizitere Variante von obigem Code
long c = (long) (a * b);
// Korrekt: a*b wird mit long-Genauigkeit berechnet wird
long c = (long) a * b;
int (dazu gleich mehr)// Aufgabe
byte a = 24;
byte b = 7;
byte c = a * b;
// Falsch: Behebt den ursprünglichen Fehler, führt aber zu Overflow
byte c = (byte) (a * b);
// Korrekt
int c = a * b;
int to byte)
int (siehe JLS §5.6.2)// Aufgabe: ergibt true
1E300 * 1E20 == 1 / 0.0;
// Aufgeschlüsselt
double a = 1E300 * 1E20; // Infinity
double b = 1 / 0.0; // Infinity
// Eine gute Lösung
Math.abs(a - b) < 0.1E-5
// Aufgeschlüsselt
double c = a - b; // NaN
double d = Math.abs(c); // NaN
boolean e = d < 0.1E-5 // false
xEn entspricht x⋅10ⁿ1/0.0 mit sich selbst vergleicht?Math.pow(Math.pow(coneX.height, 2) + Math.pow(coneX.base.radius, 2), 0.5);
// vs.
Math.sqrt(Math.pow(coneX.height, 2) + Math.pow(coneX.base.radius, 2));
// vs.
Math.hypot(coneX.height, coneX.base.radius);
java.lang ist kein import nötig!Math.hypot() ist kürzer und behandelt Overflows// So nicht
class Cone {
double base;
// ...
}
coneX.base = circleX.area;
// ...
coneX.surface = coneX.base + Math.PI * circleX.radius * s;
// So wird’s gemacht
class Cone {
Circle base;
// ...
}
coneX.base = circleX;
// ...
coneX.surface = coneX.base.area + Math.PI * coneX.base.radius * s;
Circle sein// So nicht
class Cone {
double surfacearea;
// ...
}
// So wird’s gemacht
class Cone {
double surfaceArea;
// ...
}
surfaceAreaRobotUnicorn// So nicht
coneX.surface=coneX.base.area+coneX.base.radius*Math.PI⤦
*Math.sqrt(Math.pow(coneX.base.radius,2.0)+Math.pow(coneX.height,2.0));
// So auch nicht
coneX.surfaceLine=Math.sqrt(Math.pow(coneX.base.radius,2.0)⤦
+Math.pow(coneX.height,2.0));
coneX.surface=coneX.base.area+coneX.base.radius*Math.PI*surfaceLine;
// So wird’s gemacht
double s = Math.hypot(coneX.height, coneX.base.radius);
coneX.surface = coneX.base.area + coneX.base.radius * Math.PI * s;
// Weniger sinnvolles Kommentar
class Cone {
// Attribute deklarieren
Circle base;
double area;
double volume;
double surfacearea;
}
// Sinnvolle Kommentare
class Cone {
Circle base;
double height; // in cm
double surface; // in cm²
double volume; // in cm³
}
AuthortoString() Methode für alle Klassen
ISO 639-2/T, Date: ISO 8601Dijkstra, Edsger Wybe (*1930-05-11) - Go To Statement Considered Harmful [1968-03-01][eng]java.util.Localeif, else und else ifswitch und caseif// Syntax
if (Bedingung) {
Rumpf
}
// Example (x is any given int)
if (x != 42) {
System.out.println("Die Antwort ist falsch");
}
if wertet einen boolschen Ausdruck austrue istelse// x is any given int
if (x == 5) {
System.out.println("x ist 5");
} else {
System.out.println("x ist nicht 5");
}
else wird ausgeführt wenn die vorigen Bedingungen false sindelse if// x is any given int
if (x == 5) {
System.out.println("x ist 5");
} else if (x > 5) {
System.out.println("x ist größer als 5");
} else {
System.out.println("x ist kleiner als 5");
}
if-Statements „aneinander hängen“switch und case// syntax
switch (Variable oder Ausdruck) {
case WERT1:
// do something
break;
case WERT2:
// do something else
break;
default:
// do something in (no)case
}
switch und case in der Java Documentationswitch und case// x is any given int
switch (x) {
case 42:
System.out.println("x is _the_ answer");
case 1337:
System.out.println("x is leet");
break;
default:
System.out.println("x is boring");
}
Was wird ausgegeben wenn x == 42?
Wird das break weggelassen oder vergessen wird der nächste Codeblock auch ausgeführt
Checkstyle ist ein in der Softwareentwicklung verwendetes Werkzeug für die statische Code-Analyse zur Prüfung des Programmierstils von Java Sourcecode.
Artikel zu Checkstyle im Programmieren Wiki
Nein.
java -jar <CS-JAR> -c <REGELSATZ> <JAVA-DATEI>
<CS-JAR>:Pfad zur checkstyle-X.X-all.jar<REGELSATZ>: Pfad zum Regelsatz (.xml)<JAVA-DATEI>: Pfad zur zu testenden Datei (.java)