Dieser Artikel ist derzeit in Bearbeitung von jneug

Gegenüberstellung von Java und Python

Aus Informatik-Box
Zur Navigation springen Zur Suche springen

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!");
print("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)