Java Language Tutorial
Erste Schritte mit Java Language
Suche…
Bemerkungen
Die Java-Programmiersprache ist ...
Allzweck : Es ist für das Schreiben von Software in einer Vielzahl von Anwendungsdomänen vorgesehen und verfügt über keine speziellen Funktionen für eine bestimmte Domäne.
Klassenbasiert : Seine Objektstruktur ist in Klassen definiert. Klasseninstanzen haben immer diese Felder und Methoden in ihren Klassendefinitionen angegeben (siehe Klassen und Objekte ). Dies steht im Gegensatz zu nicht klassenbasierten Sprachen wie JavaScript.
Statisch typisiert : Der Compiler prüft zur Kompilierzeit, ob Variablentypen beachtet werden. Wenn eine Methode beispielsweise ein Argument des Typs
String
erwartet, muss dieses Argument beim Aufruf der Methode tatsächlich eine Zeichenfolge sein.Objektorientiert : Die meisten Dinge in einem Java-Programm sind Klasseninstanzen, dh Zustandsbündel (Felder) und Verhalten (Methoden, die Daten verarbeiten und die Schnittstelle des Objekts zur Außenwelt bilden).
Portable : Es kann auf jeder Plattform mit
javac
kompiliert werden, und die resultierenden Klassendateien können auf jeder Plattform mit JVM ausgeführt werden.
Java soll Anwendungsentwicklern das "einmalige Schreiben, überall ausführen" (WORA) ermöglichen. Das bedeutet, dass kompilierter Java-Code auf allen Plattformen, die Java unterstützen, ohne Neukompilierung ausgeführt werden kann.
Java-Code wird zu Bytecode (den .class
Dateien) kompiliert, die wiederum von der Java Virtual Machine (JVM) interpretiert werden. In der Theorie sollte der von einem Java-Compiler erstellte Bytecode auf jeder JVM auf die gleiche Art und Weise laufen, selbst auf einem anderen Computer. Die JVM kann (und in realen Programmen) die häufig ausgeführten Teile des Bytecodes in native Maschinenbefehle kompilieren. Dies wird als "Just-in-Time-Kompilierung (JIT)" bezeichnet.
Java-Editionen und -Versionen
Es gibt drei "Ausgaben" von Java, die von Sun / Oracle definiert werden:
- Java Standard Edition (SE) ist die Edition, die für den allgemeinen Gebrauch bestimmt ist.
- Java Enterprise Edition (EE) fügt eine Reihe von Möglichkeiten hinzu, um "Enterprise-Grade" -Dienste in Java zu erstellen. Java EE wird separat behandelt .
- Java Micro Edition (ME) basiert auf einer Teilmenge von Java SE und ist für den Einsatz auf kleinen Geräten mit begrenzten Ressourcen vorgesehen.
Zu den Java SE / EE / ME-Editionen gibt es ein eigenes Thema.
Jede Ausgabe hat mehrere Versionen. Die Java SE-Versionen sind unten aufgeführt.
Java installieren
Es gibt ein eigenes Thema zum Installieren von Java (Standard Edition) .
Java-Programme kompilieren und ausführen
Es gibt separate Themen zu:
- Java-Quellcode kompilieren
- Java-Bereitstellung einschließlich der Erstellung von JAR-Dateien
- Java-Anwendungen ausführen
- Der Klassenpfad
Was kommt als nächstes?
Hier finden Sie Links zu Themen, um die Java-Programmiersprache weiter zu erlernen und zu verstehen. Diese Themen sind die Grundlagen der Java-Programmierung, um Ihnen den Einstieg zu erleichtern.
- Primitive Datentypen in Java
- Operatoren in Java
- Zeichenfolgen in Java
- Grundlegende Steuerungsstrukturen in Java
- Klassen und Objekte in Java
- Arrays in Java
- Java-Codestandards
Testen
Java bietet zwar keine Unterstützung für Tests in der Standardbibliothek, es gibt jedoch Bibliotheken von Drittanbietern, die Tests unterstützen. Die zwei beliebtesten Unit-Test-Bibliotheken sind:
- JUnit ( Offizielle Seite )
- TestNG ( Offizielle Seite )
Andere
- Entwurfsmuster für Java werden in Entwurfsmuster behandelt .
- Die Programmierung für Android ist in Android enthalten .
- Java Enterprise Edition-Technologien werden in Java EE behandelt .
- Die JavaFX-Technologien von Oracle werden in JavaFX behandelt .
1. Im Abschnitt " Versionen " endet das Ende der Lebensdauer (kostenlos), wenn Oracle keine weiteren Updates von Java SE auf seinen öffentlichen Download-Sites mehr veröffentlichen wird. Kunden, die weiterhin Zugriff auf wichtige Fehlerbehebungen und Sicherheitsupdates sowie allgemeine Wartungsarbeiten für Java SE benötigen, können über den Oracle Java SE-Support langfristig Unterstützung erhalten.
Versionen
Java SE-Version | Code Name | Ende des Lebens (kostenlos 1 ) | Veröffentlichungsdatum |
---|---|---|---|
Java SE 9 (früher Zugriff) | Keiner | Zukunft | 2017-07-27 |
Java SE 8 | Spinne | Zukunft | 2014-03-18 |
Java SE 7 | Delphin | 2015-04-14 | 2011-07-28 |
Java SE 6 | Mustang | 2013-04-16 | 2006-12-23 |
Java SE 5 | Tiger | 2009-11-04 | 2004-10-04 |
Java SE 1.4 | Merlin | vor dem 2009-11-04 | 2002-02-06 |
Java SE 1.3 | Turmfalke | vor dem 2009-11-04 | 2000-05-08 |
Java SE 1.2 | Spielplatz | vor dem 2009-11-04 | 1998-12-08 |
Java SE 1.1 | Keiner | vor dem 2009-11-04 | 1997-02-19 |
Java SE 1.0 | Eiche | vor dem 2009-11-04 | 1996-01-21 |
Erstellen Sie Ihr erstes Java-Programm
Erstellen Sie in Ihrem Texteditor oder der IDE eine neue Datei mit dem Namen HelloWorld.java
. Fügen Sie dann diesen Codeblock in die Datei ein und speichern Sie:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
Hinweis: Für Java , dies zu erkennen als public class
(und nicht werfen der Kompilierung Fehler ), muss der Dateiname sein , der gleiche wie der Klassenname ( HelloWorld
in diesem Beispiel) mit einer .java
- Erweiterung. Davor sollte auch ein Modifikator für den public
Zugriff vorhanden sein.
Benennungskonventionen empfehlen, dass Java-Klassen mit Großbuchstaben beginnen und im Kamelformat sind (wobei der erste Buchstabe jedes Wortes groß geschrieben wird). Die Konventionen empfehlen gegen Unterstriche ( _
) und Dollarzeichen ( $
).
Öffnen Sie zum Kompilieren ein Terminalfenster und navigieren Sie zum Verzeichnis HelloWorld.java
:
cd /path/to/containing/folder/
Hinweis: cd ist der Terminalbefehl zum Ändern des Verzeichnisses.
Geben Sie javac
gefolgt von Dateiname und Erweiterung wie folgt ein:
$ javac HelloWorld.java
Es ist üblich, dass der Fehler 'javac' is not recognized as an internal or external command, operable program or batch file.
selbst wenn Sie das JDK
installiert haben und das Programm von IDE
ex ausführen können. eclipse
usw. Da der Pfad standardmäßig nicht zur Umgebung hinzugefügt wird.
Falls Sie dies unter Windows erhalten, versuchen Sie zunächst, zu Ihrem javac.exe
Pfad zu javac.exe
. Er befindet sich höchstwahrscheinlich in C:\Program Files\Java\jdk(version number)\bin
. Dann versuchen Sie es mit unten auszuführen.
$ C:\Program Files\Java\jdk(version number)\bin\javac HelloWorld.java
Als wir javac
, war es derselbe Befehl wie oben. Nur in diesem Fall wusste Ihr OS
, wo sich javac
. Sagen wir es jetzt, auf diese Weise müssen Sie nicht jedes Mal den gesamten Pfad eingeben. Wir müssen dies unserem PATH
hinzufügen
So bearbeiten Sie die Umgebungsvariable PATH
in Windows XP / Vista / 7/8/10:
- Systemsteuerung ⇒ System ⇒ Erweiterte Systemeinstellungen
- Wechseln Sie auf die Registerkarte "Erweitert" ⇒ Umgebungsvariablen
- Scrollen Sie unter "Systemvariablen" nach unten, um "PFAD" auszuwählen ⇒ Bearbeiten
Du kannst das nicht ungeschehen machen, also sei vorsichtig. Kopieren Sie zunächst Ihren vorhandenen Pfad in den Merkzettel. Um den genauen Pfad zu Ihrem javac
navigieren Sie manuell zu dem Ordner, in dem sich javac
befindet, klicken Sie in die Adressleiste und kopieren Sie ihn. Es sollte c:\Program Files\Java\jdk1.8.0_xx\bin
wie c:\Program Files\Java\jdk1.8.0_xx\bin
Fügen Sie im Feld "Variablenwert" diese IN FRONT aller vorhandenen Verzeichnisse gefolgt von einem Semikolon (;) ein. LÖSCHEN SIE KEINE vorhandenen Einträge.
Variable name : PATH
Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[Existing Entries...]
Das sollte sich jetzt lösen.
Für Linux-basierte Systeme versuchen Sie es hier .
Anmerkung: Der Befehl javac
ruft den Java-Compiler auf.
Der Compiler generiert dann eine Bytecode- Datei namens HelloWorld.class
die in der Java Virtual Machine (JVM) ausgeführt werden kann . Der Java-Programmiersprachen-Compiler javac
liest Quelldateien, die in der Java-Programmiersprache geschrieben sind, und kompiliert sie in bytecode
Klassendateien. Optional kann der Compiler auch Anmerkungen in Quell- und Klassendateien mithilfe der Pluggable
Annotation-Verarbeitungs-API verarbeiten. Der Compiler ist ein Befehlszeilentool, kann aber auch mit der Java Compiler-API aufgerufen werden.
Um Ihr Programm auszuführen, geben Sie java
gefolgt vom Namen der Klasse ein, die die main
enthält (in unserem Beispiel HelloWorld
). Beachten Sie, wie die .class
weggelassen wird:
$ java HelloWorld
Hinweis: Der java
Befehl führt eine Java-Anwendung aus.
Dies wird auf Ihrer Konsole ausgegeben:
Hallo Welt!
Sie haben Ihr erstes Java-Programm erfolgreich codiert und erstellt!
Hinweis: Damit Java-Befehle ( java
, javac
usw.) erkannt werden, müssen Sie Folgendes sicherstellen:
- Ein JDK ist installiert (zB Oracle , OpenJDK und andere Quellen)
- Ihre Umgebungsvariablen sind ordnungsgemäß eingerichtet
Sie müssen einen Compiler ( javac
) und einen von Ihrer JVM bereitgestellten Executor ( java
) verwenden. Um herauszufinden, welche Versionen Sie installiert haben, geben javac -version
in der Befehlszeile java -version
und javac -version
. Die Versionsnummer Ihres Programms wird im Terminal gedruckt (z. B. 1.8.0_73
).
Ein genauerer Blick auf das Hello World-Programm
Das „Hallo Welt“ Programm enthält eine einzelne Datei, die aus einer besteht HelloWorld
Klassendefinition, ein main
und eine Erklärung innerhalb des main
public class HelloWorld {
Das class
beginnt mit der Klassendefinition für eine Klasse mit dem Namen HelloWorld
. Jede Java-Anwendung enthält mindestens eine Klassendefinition ( Weitere Informationen zu Klassen ).
public static void main(String[] args) {
Dies ist eine Einstiegspunktmethode (definiert durch ihren Namen und die Signatur von public static void main(String[])
), von der aus die JVM
Ihr Programm ausführen kann. Jedes Java-Programm sollte eine haben. Es ist:
-
public
: Bedeutet, dass die Methode auch außerhalb des Programms aufgerufen werden kann. Weitere Informationen hierzu finden Sie unter Sichtbarkeit . -
static
: bedeutet, dass es existiert und von ihm selbst ausgeführt werden kann (auf Klassenebene, ohne ein Objekt zu erstellen). -
void
: bedeutet, dass kein Wert zurückgegeben wird. Hinweis: Dies unterscheidet sich von C und C ++, wo ein Rückgabewert wieint
erwartet wird (Javas Weg istSystem.exit()
).
Diese Hauptmethode akzeptiert:
- Ein Array (normalerweise als
args
) vonString
als Argument an die Hauptfunktion übergeben (z. B. von Befehlszeilenargumenten ).
Fast alles ist für eine Java-Einstiegspunktmethode erforderlich.
Nicht benötigte Teile:
- Der Name
args
ist ein Variablenname, daher kann er beliebig genannt werden, obwohl er normalerweiseargs
. - Ob der Parametertyp ein Array (
String[] args
) oder Varargs (String... args
) ist, spielt keine Rolle, da Arrays in Varargs übergeben werden können.
Hinweis: Eine einzelne Anwendung mehrere Klassen haben einen Eintrittspunkt (enthaltend main
) -Methode. Der Einstiegspunkt der Anwendung wird durch den Klassennamen bestimmt, der als Argument an den java
Befehl übergeben wird.
In der Hauptmethode sehen wir folgende Aussage:
System.out.println("Hello, World!");
Lassen Sie uns diese Anweisung Element für Element aufschlüsseln:
Element | Zweck |
---|---|
System | Dies bedeutet, dass der nachfolgende Ausdruck die Klasse System aus dem Paket java.lang aufrufen wird. |
. | Dies ist ein "Punktoperator". Punktoperatoren bieten Ihnen Zugriff auf die Klassenmitglieder 1 ; dh seine Felder (Variablen) und ihre Methoden. In diesem Fall können Sie mit diesem Punktoperator auf das statische out Feld in der System verweisen. |
out | Dies ist der Name des statischen Feldes von PrintStream innerhalb der System - Klasse , um die Standardausgabe - Funktionalität enthält. |
. | Dies ist ein weiterer Punktoperator. Dieser Punktoperator ermöglicht den Zugriff auf die println Methode innerhalb der out Variablen. |
println | Dies ist der Name einer Methode innerhalb der PrintStream-Klasse. Diese Methode druckt insbesondere den Inhalt der Parameter in die Konsole und fügt anschließend eine neue Zeile ein. |
( | Diese Klammer zeigt an, dass auf eine Methode (und nicht auf ein Feld) zugegriffen wird, und beginnt mit der println der Parameter an die Methode println . |
"Hello, World!" | Dies ist das String- Literal, das als Parameter an die Methode println wird. Die doppelten Anführungszeichen an jedem Ende begrenzen den Text als String. |
) | Diese Klammer bedeutet, dass die Parameter geschlossen werden, die an die Methode println werden. |
; | Dieses Semikolon markiert das Ende der Anweisung. |
Hinweis: Jede Anweisung in Java muss mit einem Semikolon ( ;
) enden.
Der Methodenkörper und der Klassenkörper werden dann geschlossen.
} // end of main function scope
} // end of class HelloWorld scope
Hier ist ein weiteres Beispiel, das das OO-Paradigma veranschaulicht. Lassen Sie uns eine Fußballmannschaft mit einem (ja, einem!) Mitglied modellieren. Es kann mehr geben, aber wir werden das besprechen, wenn wir zu Arrays kommen.
Zuerst definieren wir unsere Team
:
public class Team {
Member member;
public Team(Member member) { // who is in this Team?
this.member = member; // one 'member' is in this Team!
}
}
Nun definieren wir unsere Member
Klasse:
class Member {
private String name;
private String type;
private int level; // note the data type here
private int rank; // note the data type here as well
public Member(String name, String type, int level, int rank) {
this.name = name;
this.type = type;
this.level = level;
this.rank = rank;
}
}
Warum benutzen wir hier private
? Wenn jemand Ihren Namen wissen wollte, sollte er Sie direkt fragen, anstatt in Ihre Tasche zu greifen und Ihre Sozialversicherungskarte herauszuziehen. Dieses private
macht so etwas: Es verhindert, dass externe Entitäten auf Ihre Variablen zugreifen. Sie können private
Mitglieder nur über Getter-Funktionen (siehe unten) zurückgeben.
Nachdem wir alles zusammengefügt und die Getter und die Hauptmethode wie zuvor besprochen haben, haben wir:
public class Team {
Member member;
public Team(Member member) {
this.member = member;
}
// here's our main method
public static void main(String[] args) {
Member myMember = new Member("Aurieel", "light", 10, 1);
Team myTeam = new Team(myMember);
System.out.println(myTeam.member.getName());
System.out.println(myTeam.member.getType());
System.out.println(myTeam.member.getLevel());
System.out.println(myTeam.member.getRank());
}
}
class Member {
private String name;
private String type;
private int level;
private int rank;
public Member(String name, String type, int level, int rank) {
this.name = name;
this.type = type;
this.level = level;
this.rank = rank;
}
/* let's define our getter functions here */
public String getName() { // what is your name?
return this.name; // my name is ...
}
public String getType() { // what is your type?
return this.type; // my type is ...
}
public int getLevel() { // what is your level?
return this.level; // my level is ...
}
public int getRank() { // what is your rank?
return this.rank; // my rank is
}
}
Ausgabe:
Aurieel
light
10
1
Wieder einmal das main
in der Test
- ist - Klasse der Einstiegspunkt zu unserem Programm. Ohne die main
Methode können wir sagen , der Java Virtual Machine nicht (JVM) , von wo aus der Ausführung des Programms zu beginnen.
1 - Da die HelloWorld
Klasse wenig mit der System
Klasse zusammenhängt, kann sie nur auf public
Daten zugreifen.