Diese Seite ist auch erreichbar unter link.ngb.schule/java-python
Auf den ersten Blick wirken Java und Python wie sehr unterschiedliche Sprachen. Bei genauerer Betrachtung stellt man aber fest, dass sie viele Gemeinsamkeiten haben. Java ist grundsätzlich eine Objektorientierte Sprache, wobei einzelne Methoden imperativ (von oben nach unten) programmiert und ausgeführt werden. Python legt kein primäres Paradigma fest, und erlaubt sowohl imperative, als auch objektorientierte Programmierung.
Das heißt, dass beide Sprachen für die Programmierung imperative Konstrollstrukturen (Schleifen, bedingte Anweisungen, ...). Hast Du diese Konzepte in einer der Sprachen verstanden, kannst Du sie leicht auf die andere anwenden. Du musst nur die schreibweise (Syntax) der anderen Sprache kennen.
Auf dieser Seite findest Du eine Gegenüberstellung der wichtigsten Kontrollstrukturen und Konzepte von Java und Python, und dir einen schnellen Einstieg in Python zu erlauben.
Grundsätzliches
Blöcke
In Java wird ein Block durch {
und }
eingerahmt. In Python werden Blöcke durch Einrückungen gekennzeichnet. Alle Anweisungen auf derselben Ebene gehören zum selben Block. Das ein neuer Block beginnt, wird mit einem Doppelpunkt gekennzeichnet.
Einrückungen können durch dieselbe Anzahl Leerzeichen oder Tabulatoren gekennzeichnet werden. Wichtig ist nur, dass im ganzen Skript nur Leerzeichen *oder* Tabulatoren benutzt werden.
Java
|
Python
|
if( bedingung ) {
// Alle
// Anweisungen
// gehören zum
// Block
}
// Nicht mehr im Block
|
def eineFunktion():
# Alle
# Anweisungen
# gehören zum
# Block
# Nicht mehr im Block
|
Kommentare
Java
|
Python
|
// Alles hinter "//" bis zum Ende der Zeile ist ein Kommentar
int zahl = 4; // Zeilenkommentar
|
# Alles hinter "#" bis zum Ende der Zeile ist ein Kommentar
zahl = 4 # Zeilenkommentar
|
/*
Dies ist ein
mehrzeiliger
Kommentar
*/
|
# In Python
# gibt es keine
# mehrzeiligen Kommentare
|
Ein- und Ausgaben
Java
|
Python
|
System.out.println("Hallo Welt!");
|
|
Scanner input = new Scanner(System.in);
System.out.print("Gib eine Zahl ein: ");
int eingabe = input.nextInt();
|
eingabe = input("Gib eine Zahl ein: ")
|
Die Main-Methode
Die main
-Methode stellt in Java den Einsteigspunkt für das Programm dar. Sie wird als erste Aufgerufen und instanziiert die ersten Objekte. In Python werden alle Anweisungen in der Datei von oben nach unten abgearbeitet. Eine main
-Methode ist nicht notwendig. Dennoch kann der Programmeinstiegspunkt ähnlich gekennzeichnet werden:
Java
|
Python
|
public static void main( String[] args ) {
// Do something
}
|
if __name__ == "__main__":
# Do something
|
Variablen
Java ist eine streng typisierte Sprache. Das bedeutet, der Datentyp jeder Variablen muss bei der Deklaration eindeutig festgelegt sein (oder zumindest vom Compiler eindeutig bestimmbar sein). Python dagegen ist dynamisch typisiert. Eine Variable kann zur Laufzeit des Programms Werte von verschiedenen Typen enthalten. Welche, das muss vorher nicht feststehen.
Java
|
Python
|
int eineZahl = 4;
String einText = "Hallo Welt!";
eineZahl = "Bye"; // Erzeugt einen Fehler
|
eineZahlOderSo = 4
einTextOderSo = "Hallo Welt!"
eineZahlOderSo = "Bye" # Kein Fehler
|
Kontrollstrukturen
Schleifen
Java
|
Python
|
while( bedingung ) {
// Anweisungen ...
}
|
while bedingung:
# Anweisungen ...
|
for( int i = 0; i < obereGrenze; i++ ) {
// Anweisungen ...
}
|
for i in range(obereGrenze):
# Anweisungen ...
|
List<String> list = new ArrayList<String>();
for( String s: list ) {
// Anweisungen ...
}
|
list = ["a", "b", "c"]
for s in list:
# Anweisungen ...
|
Bedingte Anweisungen
Java
|
Python
|
if( bedingung ) {
// Anweisungen ...
} else if( bedingung2 {
// Anweisungen ...
} else {
// Anweisungen ...
}
|
if bedingung:
# Anweisungen ...
elif bedingung2:
# Anweisungen ...
else:
# Anweisungen ...
|
Methoden / Funktionen
Java
|
Python
|
public int berechne( int pZahl, String pText ) {
if( pText.equals("quadrieren") ) {
return pZahl*pZahl;
} else {
return pZahl;
}
}
System.out.println(berechne(4, "quadrieren"));
|
def berechne( zahl, text ):
if text == "quadrieren":
return zahl*zahl
else:
return zahl
print(berechne(4, "quadrieren"))
|
Pakete / Module importieren
Java
|
Python
|
import java.io.File;
import java.util.Random;
|
import os
from random import randint
|
Einige übliche Operationen
Mit Strings arbeiten
Java
|
Python
|
System.out.printf("%02d / %05.2f\n", 3, 4.2568);
// 03 / 04.26
|
print("{:02d} / {:05.2f}".format(3, 4.2568))
# 03 / 04.26
|
int eineZahl = 56;
double eineKommazahl = 12.00001;
String einText = "Hallo Welt!";
System.out.printf("Zahl: %02d\nKommazahl: %05.2f\nText: %s\n", eineZahl, eineKommazahl, einText);
// Zahl: 56
// Kommazahl: 12.00
// Text: Hallo Welt!
|
eineZahl = 56
eineKommazahl = 12.00001
einText = "Hallo Welt!"
print(f"Zahl: {eineZahl:02d}\nKommazahl: {eineKommazahl:05.2f}\nText: {einText}")
# Zahl: 56
# Kommazahl: 12.00
# Text: Hallo Welt!
|
Zufallszahlen
Java
|
Python
|
// Klasse importieren
import java.util.Random;
// In der Methode
Random r = new Random();
int zufall1 = r.nextInt(100); // Zahl zwichen 0 und 100 (100 exklusive)
int zufall = 50 + r.nextInt(50); // Zahl zwischen 50 und 100 (100 exklusive)
|
from random import randint
zufall1 = randint(0, 100) // Zahl zwischen 0 und 100 (100 inklusive)
zufall2 = randint(50, 100) // Zahl zwischen 50 und 100 (100 inklusive)
|