Skip to content

🔭 Ein wachsender Wegweiser für die Grundlagen der Java-Programmierung

Notifications You must be signed in to change notification settings

DH-Cologne/java-wegweiser

Repository files navigation

Softwaretechnologie: Java

All Contributors

  GitHub forks   GitHub issues   Visitors

Ein Wegweiser zur Java-Programmierung, der mit seinen Aufgaben wächst. Für die Teilnehmer*innen des Moduls "Softwaretechnologie: Java" der Studiengänge Informationsverarbeitung und Medieninformatik am IDH (Institut für Digital Humanities, Universität zu Köln) und für alle Interessierten! 👐

Work in progress. 🚧 🐌 Diese Lern- und Orientierungs-Ressource ist weit davon entfernt, vollständig zu sein. Aber das ist okay. Wenn dir auffällt, dass etwas Wichtiges fehlt oder unzureichend erläutert ist, dann eröffne ein Issue oder trage eigene Änderungen bei!

Übrigens 💬

📖   Inhalt — Zum Inhaltsverzeichnis springen! 🤔   Was ist das hier — Bzw. was ist es nicht? 👩‍💻   Contributing — Oder: Wie kann ich hier mitwirken? 🛋️   Lese-Ansicht — Wenn du aus Versehen im Repository gelandet bist! 📕   Glossar — Allgemeine Terminologie der Programmierung (wichtig)! 🔗   Link-Liste — Weitere empfehlenswerte (online-) Ressourcen! 🏷   Java Naming Conventions ...wollen befolgt werden!

Inhalt 📖

👉 Die einzelnen Themenbereiche sind hier mit Schlagworten kurz zusammengefasst. Die jeweilige Überschrift verlinkt auf das Dokument mit allen Inhalten zum entsprechenden Thema.

Einstieg

JDK Eclipse IDE Download Installation ...

Warum Java? Warum nicht? Besonderheiten Java Platform Java Ecosystem Packages Hello World! ...

IDE Warum Eclipse? Workspaces Views Editor Die wichtigsten Funktionen Import Export Console Ausführen von Programmen Automatisch generierter Code...

Grundlagen

Das erste Programm Was ist das alles? main

Packages Pakete Paket-Pfade package import

// inline /* multi-line */

Was ist das? Syntax naming conventions Typisierung ...

primitive Datentypen komplexe Datentypen byte short int long float double boolean char default-Werte Wrapper-Klassen...

Typumwandlung implizit explizit upcast downcast cast-Operator Casting bei komplexen Datentypen ...

Rechenoperatoren Vergleichsoperatoren logische Operatoren Zuweisungsoperatoren + - * / % ++ -- == != > < >= <= && || = += -= /= *= %= &= |= ...

die Klasse "String" Literals special characters Unveränderbarkeit von Strings UTF-16 String Formatting ...

Rückgabewerte Parameter/Argumente return Überlagerung Java ist immer pass-by-value ...

if else :? (Ternary-Operator) switch

while do-while for for-each

Datenstrukturen Deklaration Typisierung Initialisierung Array Literals Zugriff Mehrdimensionale Arrays ...

Error Exception try catch finally try-with-resources throws ...

Wozu? /** @param @return <code></code> best practices ...

Objektorientierte Programmierung (OOP)

Definition Nutzen Beispiele Klasse Objekt Kuchen ...

new-Operator Instanzvariablen Instanzmethoden Zugriffs-/Sichtbarkeitsmodifizierer private (default) protected public this Getter Setter Konstruktoren ...

static Klassenvariablen statische Methoden ...

Wozu? Terminologie extends super instanceof-Operator Überschreiben von Methoden ...

final finale Variablen finale Klassen finale Methoden Konstanten in Java ...

toString() Objekt-Identität Objekt-Gleichheit equals() hashCode() Der Vertrag zwischen equals() und hashCode() ...

abstrakte Klassen abstrakte Methoden abstract ...

Interfaces Erweiterung von Interfaces Default-Methoden Statische Methoden in Interfaces ...

Anonyme Klassen Innere Klassen ...

Abstrakte Konzepte und Fortgeschrittenes

Streams Buffering Reader Writer Objektserialisierung User-Input über Stdin ...

verkettete Listen zweifach verkettete Listen Binärbäume binäre Suchbäume siehe auch "Collections Framework"! ...

Iterable Iterator Bezug zu for-each Implementierung ...

Was? Wozu? <Syntax> Typsicherheit trotz generischer Programmierung Gültigkeit bei Kompilierung und zur Laufzeit ...

Aufbau List Set Map Objekt-Identität im Kontext von HashMaps/HashSets ...

Enums ...

Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.

Comparable Comparator Collections.sort() Sortieralgorithmen ...

Prozess Thread Runnable synchronized volatile ...

Was? Wozu? Wie werden sie eingebunden? Maven Gradle ...

Wozu? Schreiben von Unit-Tests Test-driven-development JUnit ...

Über den Seminarinhalt hinaus ...

... gehen die folgenden Themen. Das heißt jedoch nicht, dass sie nicht wichtig wären. Wer das Gelernte noch weiter vertiefen oder ergänzen möchte, kann sich von diesen Empfehlungen leiten lassen:

Java Stream API

🔗 Introduction to Java 8 Streams (baeldung.com) 🔗 The Java 8 Stream API Tutorial (baeldung.com) 🔗 String Operations with Java Streams (baeldung.com) 🔗 Java Stream API (tutorials.jenkov.com)

Lambda Expressions und Functional Interfaces

🔗 Lambda Expressions (docs.oracle.com) 🔗 Java Functional Interfaces (beginnersbook.com) 🔗 Lambda Expressions and Functional Interfaces: Tips and Best Practices (baeldung.com)

Statische Methoden in Interfaces

🔗 Static and Default Methods in Interfaces in Java (baeldung.com) 🔗 Default and Static Methods in Interfaces in Java 8 (codenuclear.com)

Contributors ✨

Das ist alles. Bis jetzt! Wie wäre es mit deinem Beitrag?

Dank für die Mitarbeit an diesem Repository gebührt den folgenden fleißigen Mitwirkenden (emoji legende):


bkis

🖋 💡 🤔 🚧

Nicolas David Werner

🖋 💡

Lelalue

🖋 💡

mkamphausen

🖋 💡

Julian Kamphausen

🖋 💡

Demirro

🤔

Valeria Gavrilova

🐛

jspringe

🖋

Sandeep Mishra

🖋

👉 Dieses Projekt folgt der all-contributors-Spezifikation. Contributions (Beiträge) jeder Art sind willkommen und werden an dieser Stelle wie oben zu sehen aufgeführt!