Vertiefung der Programmierung

Unterschiede JOE und Java
Motivation
- Java Online Editor (JOE) soll leichten Einstieg in Programmierung ermöglichen
- Sprache ist an Java angelehnt
- Einiges aus Java soll bewusst nicht 1:1 übernommen werden, z.B.
- "Boilerplate Code": siehe Beispiel 🫨
public class Main {
public static void main(String[] args) {
System.out.println("Hello World");
}
}Java
println("Hello World");JOE
vs.

Wechsel von JOE zu Java
Boilerplate Code
Keine Shortcuts
bei Ausgaben
public class Main {
public static void main(String[] args) {
System.out.println("Hello World");
}
}Alles braucht eine Klasse!
Es wird immer eine main()
benötigt
Wir brauchen Imports
import java.util.List;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
}
}Alle Klassen außerhalb des eigenen Packages müssen über import eingebunden werden.
Je Klasse eine Datei
public class Point {
private double x;
private double y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
}import java.util.List;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
List<Point> points = new ArrayList<>();
}
}Main.java
Point.java
Jede Klasse muss in eine eigene Datei. Es gibt nur wenige Ausnahmen (u.a. eingebettete Klassen, anonyme Klassen).
Ausgaben (auf der Konsole)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Gib deinen Namen ein: ");
String name = scanner.nextLine();
System.out.print("Gib dein Alter ein: ");
int alter = scanner.nextInt();
System.out.println("Hallo " + name + ", du bist " + alter + " Jahre alt.");
scanner.close();
}
}Einlesen von der Kommandozeile muss mittels der Klassen Scanner und System.in durchgeführt werden.
Modifizierer static
- static bei Variablen
- Objekte teilen sich Variable (und Werte!)
- static bei Methoden
- z.B. für Methoden ohne Objekt(Instanz)
static Methoden / Variablen gehören zu Klassen und nicht zum (individuellen) Objekt
class MathUtil {
static int add(int a, int b) {
return a + b;
}
}
// von außerhalb aufrufen
MathUtil.add(2, 3)class Counter {
// ...
static float scale = 0.2;
// ...
}
// scale-Faktor für alle
// Objekt(instanzen) gleichtoString() überschreiben
- JOE ermöglicht uns immer relativ einfach Ausgaben wie:
In Java wird für die Ausgabe von Objekten mit System.out.println(obj);
immer eine überladene toString-Methode benötigt.
@Override
public String toString() {
return (this.name + ": " +
this.number + " \n");
}println(contact)
/* hier wird alles irgendwie
* (wenn auch nicht immer optimal)
* ausgegeben
*/Java
JOE
- Java:
toString-Methode überladen:
⌨️ Let's go!

IntelliJ Community Edition
Unterschiede JOE und Java
By blackbill
Unterschiede JOE und Java
- 133