Java-Grundsyntax

💖 Gefällt es dir? Teilen Sie den Link mit Ihren Freunden

Wenn wir ein Java-Programm betrachten, kann es als eine Sammlung von Objekten definiert werden, die durch gegenseitigen Aufruf ihrer Methoden interagieren. Lassen Sie uns nun kurz verstehen Syntax der Java-Sprache Was bedeuten Klassen-, Objekt-, Methoden- und Instanzvariablen?

Ein Objekt- Objekte haben einen Zustand und ein Verhalten. Zum Beispiel: Ein Hund kann einen Zustand haben – Farbe, Name, sowie Verhalten – nicken, rennen, bellen, fressen. Ein Objekt ist eine Instanz einer Klasse.

Klasse- kann als Muster definiert werden, das das Verhalten eines Objekts beschreibt.

Methode- ist im Grunde Verhalten. Eine Klasse kann mehrere Methoden enthalten. In Methoden werden logisch erfasste Daten manipuliert und alle Aktionen ausgeführt.

Instanzvariablen- Jedes Objekt verfügt über einen eigenen, einzigartigen Satz von Instanzvariablen. Der Zustand eines Objekts wird durch die diesen Instanzvariablen zugewiesenen Werte erstellt.

Das erste Programm und Kennenlernen der Syntax der Sprache

Schauen wir uns einen einfachen Code an, der die Worte „Hallo Welt!“ und die Java-Syntax anzeigt.

Öffentliche Klasse MyFirstJavaProgram ( public static void main(String args) ( /* Dies ist mein erstes Java-Programm. Als Ergebnis der Ausführung wird „Hallo Welt!“ auf dem Bildschirm angezeigt */ System.out.println(“Hallo Welt !“); / / Eine Meldung auf dem Bildschirm anzeigen ) )

  • Öffnen Sie Notepad und fügen Sie den obigen Code hinzu.
  • Speichern Sie die Datei als „MyFirstJavaProgram.java“. Im Folgenden werden wir uns die Java-Syntax ansehen und herausfinden, warum dieser Name verwendet wird.
  • Öffnen Sie ein Eingabeaufforderungsfenster und navigieren Sie zu dem Verzeichnis, in dem die Datei gespeichert wurde. Nehmen wir an, es ist „C:\“.
  • Geben Sie „Javac MyFirstJavaProgram.java“ ein und drücken Sie die Eingabetaste, um den Code zu kompilieren. Wenn der Code keinen Fehler enthält, Befehlszeile wird dich dorthin führen nächste Zeile: (Annahme: Die Pfadvariable ist gesetzt).
  • Geben Sie nun „java MyFirstJavaProgram“ ein, um das Programm auszuführen.
  • Auf dem Fenster wird nun „Hello World!“ gedruckt.
C:>javac MyFirstJavaProgram.java C:>java MyFirstJavaProgram Hallo Welt!

Grundlegende Java-Syntax

Es ist sehr wichtig, die folgenden Punkte in der Syntax zu kennen und zu beachten:

  • Berücksichtigung der Groß- und Kleinschreibung – Java unterscheidet zwischen Groß- und Kleinschreibung, was bedeutet, dass die Bezeichner „Hello“ und „hello“ unterschiedliche Bedeutungen haben.
  • Name der Klassen – bei allen muss der erste Buchstabe drin sein Großbuchstaben.
  • Wenn mehrere Wörter zur Bildung eines Klassennamens verwendet werden, muss der erste Buchstabe jedes inneren Wortes in Großbuchstaben geschrieben sein, z. B. „MyJavaClass“.
  • Methodennamen – In der Java-Syntax müssen alle Methodennamen mit einem Kleinbuchstaben beginnen.
  • Wenn mehrere Wörter zur Bildung eines Methodennamens verwendet werden, muss der erste Buchstabe jedes inneren Wortes in Großbuchstaben geschrieben sein, z. B. „public void myMethodName()“.
  • Name der Programmdatei – der Name der Programmdatei genau übereinstimmen mit dem Klassennamen.
  • Wenn Sie eine Datei speichern, müssen Sie diese unter Verwendung des Klassennamens speichern (achten Sie auf die Groß-/Kleinschreibung) und am Ende des Namens beispielsweise „.java“ hinzufügen (wenn die Namen nicht übereinstimmen, wird Ihr Programm nicht kompiliert). , „MyJavaProgram“ ist der Name der Klasse, dann sollte die Datei als „MyJavaProgram.java“ gespeichert werden.
  • public static void main(String args) – Die Programmverarbeitung beginnt mit der Main()-Methode, die ein erforderlicher Bestandteil jedes Programms ist.

Bezeichner in Java

Identifikatoren- Namen für Klassen, Variablen und Methoden. Alle Java-Komponenten erfordern Namen.

Es gibt mehrere Regeln in der Java-Syntax, die Sie bezüglich des Bezeichners beachten müssen. Sie sind wie folgt:

  • Jeder Bezeichner muss mit „A“ vor „Z“ oder „a“ vor „z“, „$“ oder „_“ beginnen.
  • Nach dem ersten Zeichen kann eine beliebige Kombination von Zeichen stehen.
  • Das Schlüsselwort kann nicht als Bezeichner verwendet werden.
  • Das Wichtigste ist, dass bei der Kennung in Java die Groß-/Kleinschreibung beachtet wird.
  • Beispiel für korrekte Schreibweise: Alter, $Gehalt, _Wert, __1_Wert.
  • Beispiel für falsche Schreibweise: 123abc, -salary.

Überweisungen

Aufzählungen wurden in Java 5.0 eingeführt. Sie beschränken eine Variable darauf, nur einen von mehreren vordefinierten Werten auszuwählen. Die Werte in dieser aufzählbaren Liste werden aufgerufen Überweisungen.

Durch die Verwendung der Aufzählung in Java können Sie die Anzahl der Fehler in Ihrem Code reduzieren.

Wenn wir beispielsweise Anfragen nach frischem Saft in einem Geschäft prüfen würden, könnten wir die Größe der Saftpackungen auf klein, mittel und groß beschränken. Dadurch ist es möglich, durch den Einsatz einer Enumeration in Java sicherzustellen, dass niemand eine andere Paketgröße als Small, Medium oder Large bestellt.

Enum-Codebeispiel in Java

Klasse FreshJuice ( enum FreshJuiceSize( SMALL, MEDIUM, LARGE ) FreshJuiceSize size; ) public class FreshJuiceTest ( public static void main(String args)( FreshJuice Juice = new FreshJuice(); Juice.size = FreshJuice.FreshJuiceSize.MEDIUM; System.out .println("Size: " + Juice.size); ) )

Das resultierende Ergebnis aus dem obigen Beispiel:

Konfektionsgröße M

Notiz: In Java können Aufzählungen entweder unabhängig oder innerhalb einer Klasse deklariert werden. Methoden, Variablen und Konstruktoren können auch innerhalb einer Enumeration definiert werden.

Variablentypen

  • Lokale Variablen.
  • Klassenvariablen (statisch).
  • Instanzvariablen (dynamisch).

Modifikatoren

Wie in anderen Sprachen können Sie in Java Klassen, Methoden usw. mithilfe von Modifikatoren ändern. Modifikatoren in Java sind in zwei Kategorien unterteilt:

  • Mit Zugriff: Standard, öffentlich, geschützt, privat.
  • Ohne Zugriff: final, abstract, strictfp.

Im nächsten Abschnitt werden wir uns Klassenmodifikatoren, Methodenmodifikatoren und andere genauer ansehen.

Array

In Java ist ein Array ein Objekt, das mehrere Variablen desselben Typs speichert. Das Array selbst ist jedoch ein Objekt. In späteren Kapiteln werden wir uns ansehen, wie man ein Array erstellt und füllt.

JSP-Seiten verfügen über eine Hybridsyntax: eine Kombination aus der Standardsyntax, die der HTML-Spezifikation entspricht, und der JSP-Syntax, die durch die Java Server Pages-Spezifikation definiert ist. Die JSP-Syntax definiert die Regeln zum Schreiben von JSP-Seiten bestehend aus Standard HTML-Tags und JSP-Tags. JSP-Seiten enthalten zusätzlich zu HTML-Tags JSP-Tags der folgenden Kategorien:

JSP-Richtlinien

Richtlinien Bereitstellung globaler Informationen zu spezifischen Anfragen, die an die JSP gesendet werden, und Bereitstellung von Informationen, die in der Übersetzungsphase benötigt werden.

Richtlinien werden immer am Anfang der JSP-Seite vor allen anderen Tags platziert, sodass Parser(Analysator) Beim Parsen von Text hat JSP globale Anweisungen ganz am Anfang hervorgehoben. Daher analysiert die JSP-Engine (JSP-Laufzeit) den Code und erstellt aus der JSP ein Servlet. Richtlinien stellen Nachrichten an den JSP-Container dar. Syntax Richtlinien Die JSP sieht folgendermaßen aus:

<%@ директива имяАтрибута="значение" %>Job-Syntax Richtlinien im XML: Richtlinie kann mehrere Attribute haben. In diesem Fall Richtlinie kann für jedes der Attribute wiederholt werden. Gleichzeitig Paare „Attributname=Wert“ kann unter einer Direktive mit einem Leerzeichen als Trennzeichen platziert werden. Es gibt drei Arten von Anweisungen:

  • Seite
  • taglib (Tag-Bibliothek)
  • enthalten

Seitenanweisung

Richtlinie Seite definiert JSP-Seiteneigenschaften, die sich auf den Übersetzer auswirken. Die Reihenfolge der Attribute in einer Direktive Seite spielt keine Rolle. Eine Verletzung der Syntax oder das Vorhandensein nicht erkannter Attribute führt zu einem Übersetzungsfehler. Beispiel einer Direktive Seite Der folgende Code könnte dienen:<%@ page buffer="none" isThreadSafe="yes" errorPage="/error.jsp" %>Diese Richtlinie erklärt dies diese Seite JSP verwendet keine Pufferung, es ist für viele Benutzer möglich, gleichzeitig auf eine bestimmte JSP-Seite zuzugreifen, und es wird eine Fehlerseite aufgerufen error.jsp.
Richtlinie Seite kann Seiteninformationen enthalten:<%@ page info = "JSP Sample 1" %>Liste möglicher Direktivenattribute Seite in der Tabelle dargestellt.
AttributnameBedeutung Beschreibung
Sprache Linie Gibt die Sprache an, die in den Skriptlets, Ausdrücken oder anderen enthaltenen Dateien der JSP-Datei verwendet wird, einschließlich des Hauptteils des übersetzten Codes. Der Standardwert ist „java“
erweitert Linie Gibt die Oberklasse für das generierte Servlet an. Dieses Attribut sollte mit großer Vorsicht verwendet werden, da es möglich ist, dass der Server bereits eine Superklasse verwendet
importieren Linie Definition der zu importierenden Pakete, zum Beispiel:
<%@ page import="java.util.* %>
Sitzung richtig oder falsch Bedeutung WAHR(Standard) gibt an, dass es sich um eine vordefinierte Variable handelt Sitzung(Typ HttpSession) muss an eine vorhandene Sitzung gebunden sein, sofern vorhanden, andernfalls wird eine neue Sitzung erstellt und daran gebunden. Bedeutung FALSCH stellt fest, dass keine Sitzungen verwendet werden, und versucht, auf die Variable zuzugreifen Sitzung führt zu einem Fehler beim Übersetzen einer JSP-Seite in ein Servlet
Puffer keine oder Puffergröße in KB. Legt die Puffergröße für den JspWriter-Ausgang fest. Der Standardwert hängt von den Servereinstellungen ab und sollte 8 KB nicht überschreiten. Wenn der Wert ist keiner Die Ausgabe erfolgt direkt an das Objekt
AutoFlush richtig oder falsch Legt fest, ob der Puffer automatisch freigegeben werden soll, wenn er voll ist oder ein Fehler auftritt. Standardwert WAHR
isThreadSafe richtig oder falsch Bedeutung WAHR(Standard) gibt den normalen Modus der Servlet-Ausführung an, bei dem mehrere Anforderungen gleichzeitig mit einer einzelnen Servlet-Instanz verarbeitet werden, basierend auf der Annahme, dass der Autor synchronisierten Zugriff auf die Variablen dieser Instanz hat. Ein Wert falscher Signale, den das Servlet erben soll SingleThreadModel(Single-Threaded-Modell), bei dem sequentielle oder gleichzeitige Anforderungen von separaten Servlet-Instanzen verarbeitet werden
die Info Linie Definiert eine Zeichenfolge von JSP-Seiteninformationen, auf die mit der Methode zugegriffen wird Servlet.getServletInfo()
Fehlerseite Linie Der Attributwert stellt die URL-Seite dar, die angezeigt werden soll, wenn mögliche Fehler Ausnahmen verursachen
isErrorPage richtig oder falsch Signalisiert, ob diese Seite zur Behandlung von Fehlern für andere JSP-Seiten verwendet werden kann. Der Standardwert ist FALSCH
Inhaltstyp Linie Definiert die Codierung für die JSP-Seite und -Antwort sowie den MIME-Typ der JSP-Antwort. Der Standardwert für den Inhaltstyp ist text/html, Kodierungen - ISO-8859-1. Zum Beispiel:
contentType="text/html;charset=ISO-8859-1"
Seitenkodierung Linie Definiert die Zeichenkodierung der JSP-Seite. Standard ist Zeichensatz vom Attribut Inhaltstyp, sofern es dort definiert ist. Wenn der Wert Zeichensatz im Attribut Inhaltstyp undefiniert, Wert Seitenkodierung gleich gesetzt ist ISO-8859-1

taglib-Direktive

Richtlinie taglib erklärt, dass eine bestimmte JSP-Seite eine Tag-Bibliothek verwendet, identifiziert sie eindeutig mit einem URI und weist ein Tag-Präfix zu, das Aktionen in der Bibliothek ermöglicht. Wenn der Container die Tag-Bibliothek nicht finden kann, tritt ein schwerwiegender Übersetzungsfehler auf. Richtlinie taglib hat die folgende Syntax:<%@ taglib uri="URI der einzuschließenden Tag-Bibliothek"Präfix=" Präfixname„ %> Präfix „ Präfixname" wird beim Zugriff auf eine Bibliothek verwendet. Ein Beispiel für die Verwendung einer Tag-Bibliothek meine Tags: <%@ taglib uri="http://www.taglib/mytags" prefix="customs" %> . . . In diesem Beispiel verfügt die Tag-Bibliothek über einen URI „http://www.taglib/mytags“, wird die Zeichenfolge als Präfix zugewiesen Zoll, das auf der JSP-Seite beim Zugriff auf Tag-Bibliothekselemente verwendet wird.

include-Direktive

Richtlinie enthalten ermöglicht Ihnen das Einfügen von Text oder Code beim Übersetzen einer JSP-Seite in ein Servlet. Direktivensyntax enthalten hat die folgende Form:<%@ include file="Relativer URI der einzuschließenden Seite" %> Direktive enthalten hat ein Attribut - Datei. Es enthält den Text der angegebenen Ressource in der JSP-Datei. Mit dieser Anweisung kann auf jeder JSP-Seite ein Standard-Copyright-Header platziert werden:<%@ include file="copyright.html" %>Der JSP-Container greift auf die Include-Datei zu. Wenn sich die Include-Datei geändert hat, kann der Container die JSP-Seite neu kompilieren. Richtlinie enthalten behandelt eine Ressource, beispielsweise eine JSP-Seite, als statisches Objekt. Der angegebene URI wird normalerweise relativ zur JSP-Seite interpretiert, auf der sich der Link befindet, aber wie bei jedem anderen relativen URI können Sie dem System den Speicherort der interessierenden Ressource relativ zum Home-Verzeichnis des WEB-Servers mitteilen, indem Sie ein „ /" an den Anfang der URI. Der Inhalt der Include-Datei wird als einfacher JSP-Text verarbeitet und kann daher Elemente wie statisches HTML, Skriptelemente, Anweisungen und Aktionen enthalten. Viele Websites verwenden auf jeder Seite eine kleine Navigationsleiste. Aufgrund der Probleme bei der Verwendung von HTML-Frames wird diese Aufgabe häufig dadurch gelöst, dass oben oder in der linken Hälfte der Seite eine kleine Tabelle platziert wird, deren HTML-Code für jede Seite der Site viele Male wiederholt wird. Richtlinie enthalten- Dies ist der natürlichste Weg, dieses Problem zu lösen und dem Entwickler den Albtraum zu ersparen, HTML in jede einzelne Datei zu kopieren. Seit der Richtlinie enthalten verbindet Dateien während der Seitenübersetzung. Nach Änderungen an der Navigationsleiste ist eine erneute Übersetzung aller JSP-Seiten erforderlich, die diese verwenden. Wenn sich die verbundenen Dateien häufig ändern, können Sie die Aktion verwenden jsp:include, die die Datei beim Zugriff auf die JSP-Seite einschließt.

JSP-Erklärungen

Erklärungen sollen Variablen und Methoden in einer Skriptsprache definieren, die anschließend in der JSP-Seite verwendet werden. Syntax Erklärungen hat die folgende Form:<%! код Java %> Anzeigen befinden sich im Deklarationsblock und werden im Ausdrucksblock der JSP-Seite aufgerufen. Der Code im Werbeblock ist normalerweise eingeschrieben Java-Sprache, Anwendungsserver können jedoch die Syntax anderer Skripte verwenden. Anzeigen werden manchmal verwendet, um zusätzliche Funktionalität hinzuzufügen, wenn mit dynamischen Daten gearbeitet wird, die aus Eigenschaften von JavaBeans-Komponenten erhalten werden. Beispiele Anzeige sind in der Tabelle dargestellt. Bekanntmachung kann mehrere Zeilen enthalten, wie z. B. im folgenden Code zur Berechnung des Werts einer Funktion Tatsache (int n), die gleich 1 sein muss, wenn n kleiner als 2 ist und n! für einen positiven Wert von n;<%! public static int fact (int n) { if (n Anzeigen keine Ausgabe zur Standardausgabe erzeugen aus. Variablen und Methoden deklariert in Anzeige, werden initialisiert und Scriptlets und anderen zur Verfügung gestellt Anzeige zum Zeitpunkt der Initialisierung der JSP-Seite.

JSP-Skriptlets

Skriptlets Dazu gehören verschiedene Codeteile, die in der in der Direktive definierten Skriptsprache geschrieben sind Sprache. Codefragmente müssen den syntaktischen Konstrukten der Sprache entsprechen Skriptlets, also in der Regel die Syntax der Java-Sprache. Skriptlets haben die folgende Syntax:<% текст скриптлета %>Äquivalente Syntax Skript für XML ist: Scriptlet-Text
Wenn im Text Skript Es ist notwendig, die Zeichenfolge %> genau als Zeichenkombination und nicht als Tag – Endzeichen – zu verwenden Skript, anstelle der Zeichenfolge %> sollten Sie die folgende Zeichenkombination %\> verwenden.
Die JSP-Spezifikation bietet eine einfache und klares Beispiel Skript, wodurch sich der Inhalt der JSP-Seite im Laufe des Tages dynamisch ändern kann.<% if (Calendar.getInstance ().get (Calendar.AM_PM) == Calendar.AM) {%>Guten Morgen<% } else { %>Guten Tag<% } %>Es ist zu beachten, dass der Code darin enthalten ist Skriplet wird wie geschrieben eingefügt, und der gesamte statische HTML-Text (Vorlagentext) davor oder danach Skriplet mit dem Operator umgerechnet drucken. Dies bedeutet, dass Skriptlets nicht unbedingt vollständige Java-Blöcke enthalten müssen und dass offen gelassene Blöcke Auswirkungen auf statischen HTML-Text außerhalb von haben können Skriplet. Skripte haben Zugriff auf dieselben automatisch definierten Variablen wie Ausdrücke. Wenn also beispielsweise Informationen auf einer Seite angezeigt werden müssen, müssen Sie die Variable verwenden aus. <% String queryData = request.getQueryString (); out.println ("Дополнительные данные запроса: " + queryData); %>

JSP-Ausdrücke

Ausdruck in einer JSP-Seite ist ein ausführbarer Ausdruck, der in der in der Deklaration angegebenen Skriptsprache geschrieben ist Sprache(normalerweise Java). Ergebnis Ausdrücke JSP mit einem erforderlichen Typ Zeichenfolge, geht zur Standardausgabe aus unter Verwendung des aktuellen Objekts JspWriter. Wenn das Ergebnis Ausdrücke kann nicht in Typ umgewandelt werden Zeichenfolge, tritt entweder ein Übersetzungsfehler auf, wenn das Problem während der Übersetzungsphase erkannt wurde, oder es wird eine Ausnahme ausgelöst ClassCastException, wenn die Diskrepanz während des Anforderungsausführungsprozesses festgestellt wurde. Ausdruck hat die folgende Syntax: <%= Ausdruckstext %> alternative Syntax für Ausdrücke JSP bei Verwendung von XML: AusdruckstextAusführungsauftrag Ausdrücke in der JSP-Seite von links nach rechts. Wenn Ausdruck erscheint in mehr als einem Laufzeitattribut, dann wird es im angegebenen Tag von links nach rechts ausgeführt. Ausdruck muss ein vollständiger Ausdruck in einem bestimmten Skript (normalerweise Java) sein. Ausdrücke werden ausgeführt, während das HTTP-Protokoll ausgeführt wird. Der Wert des Ausdrucks wird in eine Zeichenfolge konvertiert und an der entsprechenden Position in der JSP-Datei eingefügt. Ausdrücke werden typischerweise verwendet, um die Zeichenfolgendarstellung von Variablen und Methoden auszuwerten und anzuzeigen, die im Deklarationsblock einer JSP-Seite definiert sind oder von JavaBeans-Komponenten abgerufen werden, auf die über die JSP zugegriffen werden kann. Der folgende Code Ausdrücke dient zur Anzeige von Datum und Uhrzeit der Anfrage für diese Seite: Aktuelle Uhrzeit: <%= new java.util.Date () %> Zur Vereinfachung Ausdrücke Es gibt mehrere vordefinierte Variablen, die verwendet werden können. Am häufigsten verwendete Variablen:
  • Anfrage, HttpServletRequest;
  • Antwort, HttpServletResponse;
  • Sitzung, HttpSession - mit der Anfrage verbunden, falls vorhanden;
  • raus, PrintWriter - eine gepufferte Version des JspWriter-Typs zum Senden von Daten an den Client.

muss unbedingt mit dem Namen der Klasse übereinstimmen, deren main()-Methode beim Start der Java-Maschine aufgerufen wird.

  • Objekt – die Klasse, von der sie erben Alle Objekte in Java, einschließlich Arrays und Strings().
  • Zugriffsspezifizierer sind für jedes Mitglied individuell (werden vor der Deklaration angegeben).
  • Alle Klassenmitglieder sind standardmäßig dem Gültigkeitsbereich ausgesetzt Paket. Der „Standard“-Bereich liegt irgendwo zwischen privat und geschützt, siehe .
  • Jede *.java-Datei kann enthalten nur einer eine Klasse, die als öffentlich deklariert und von außen zugänglich ist.
  • Die Definition und Deklaration einer Klasse befinden sich immer in derselben Datei; es ist nicht möglich, Prototypen in den Headern abzulegen.
  • Es gibt keine Anzeichen.
  • Alle Klassenvariablen sind tatsächlich Verweise auf Objekte und nicht auf die Objekte selbst. Die Initialisierung zur Verwendung muss über new erfolgen<конструктор-класса>(...) .
  • Basierend auf dem vorherigen Absatz wird beim Zuweisen einer Objektvariablen zu einer anderen nur die Referenz geändert, nicht jedoch das Objekt kopiert.
  • In diesem Fall werden Variablen in Funktionen als Wert übergeben Elementartypen(int, byte, long usw.) oder durch Referenz, wenn es sich um Objekte handelt.
  • Auf öffentliche statische Mitglieder einer Klasse wird über den Punktoperator zugegriffen. , und nicht durch::, was meiner Meinung nach äußerlich zu Verwirrung führt.
  • Es gibt keinen Destruktor, aber finalize() .
  • Verwechseln Sie finalize() nicht mit dem C++-Destruktor. finalize() wird aufgerufen nur während der Müllabfuhr, was nichts damit zu tun hat, dass das Objekt den Gültigkeitsbereich verlässt und dass mindestens ein Verweis auf dieses Objekt fehlt.
  • Die Garbage Collection kann durch Aufrufen der Runtime.gc()-Methode für das aktuelle Runtime-Objekt oder der statischen System.gc()-Methode erzwungen werden. Den Experimenten zufolge funktioniert die Speicherfreigabe nur innerhalb der Grenzen virtuelle Maschine Java gibt dem Betriebssystem einmal zugewiesenen Speicher erst zurück, wenn die Maschine heruntergefahren wird.
  • Im Java-Codierungsstil lösen Funktionen Ausnahmen aus, anstatt Code zurückzugeben systemisch Fehler oder Logikfehler der virtuellen Maschine. Daher müssen viele Funktionen innerhalb des try ( ... ) Catch (...) ( ... )-Blocks der Behandlungsausnahme ausgeführt werden, oder die Methode, die sie aufruft, muss durch throws explizit die Liste der von diesen Funktionen generierten Ausnahmen angeben die von ihm nicht verarbeitet werden können, um sie mit Methoden „weiter oben“ im Aufrufstapel zu verarbeiten.
  • Ausnahmen sind in und unterteilt.
  • Ein try ( ... )-Block kann auch mit einem final ( ... )-Block enden, der unabhängig davon ausgeführt wird, ob im vorherigen try ( ... )-Block Ausnahmen vorhanden sind oder nicht. Dies ist praktisch, um alle obligatorischen Aktionen durchzuführen, unabhängig von den Ergebnissen der Ausführung eines Codeblocks, beispielsweise um automatisch alle darin zugewiesenen Ressourcen freizugeben.
  • char ist kein Einzelbyte-Typ wie bei C/C++, sondern ein 16-Bit-unterstützender Typ Unicode Linien.
  • bool ist in Java als boolescher Wert bekannt.
  • Bedingungen akzeptieren nur boolesche Art von Variablen oder Ausdrücken. Das bedeutet, dass der Code so aussieht:
    int a; ... Aktionen auf Variable a ...; wenn ein) ( ... )
    Es ist in Bezug auf die Java-Syntax nicht korrekt und lässt sich nicht kompilieren.
  • Konstanten werden als final und nicht als const deklariert.
  • Alle Arrays sind Objekte.
  • Auch String-Konstanten (z. B. „any string const“) sind Objekte.
  • Für Strings (die String-Klasse) ist nur ein Operator definiert – + , Verkettung.
  • String-Vergleiche werden über die bool-equals()-Methode der String-Klasse durchgeführt, zum Beispiel s1.equals(s2) .
  • Der Inhalt von String-Objekten ist konstant und bedeutet nicht, dass ein einzelnes Element des Strings geändert wird; dies geschieht, um die Leistung zu verbessern. Wenn Sie ähnliche Vorgänge benötigen, können Sie die StringBuffer-Klasse verwenden.
  • Beim Verketten einer nicht initialisierten Zeichenfolge mit einer nicht initialisierten Zeichenfolge leere Zeile es klappt null + nicht-leerer String, zum Beispiel s += "|string"; wird gleich „null|string“ sein
  • Arrays haben eine öffentliche Member-Variablenlänge. Zeilen haben keine verwenden sie stattdessen die Methode length().
  • Java nicht unterstützen Mehrfachvererbung. Ein Teil seiner Funktionen wird über „Schnittstellen“ ausgeführt. Schnittstellen unterstützen mehrfache „Vererbung“ – Implementierungen mehrerer Schnittstellen in einer Klasse und im Allgemeinen eine „viele (Schnittstellen) zu vielen (Klassen)“-Beziehung und umgekehrt.
  • Schnittstellen ermöglichen die Erstellung von Links, über die Sie auf Objekte von Klassen zugreifen können, die diese Schnittstellen implementieren. Zwar erfordert die dynamische Suche nach einer geeigneten Methode beim Zugriff über eine Link-Schnittstelle einen hohen Overhead und ist daher nicht wünschenswert.
  • Anstelle von Aufzählungen können Sie Schnittstellen verwenden, ohne Methoden darauf zu deklarieren. In diesem Fall müssen alle Schnittstellenvariablen beim Definieren der Schnittstelle initialisiert werden und ihre Werte sind automatisch konstant. Anschließend können sie über Implementierungen mit der zu definierenden Klasse „verbunden“ werden.
  • Ab JDK 5 gibt es auch solche äußerlich klassische Aufzählungen - enum . Tatsächlich handelt es sich hierbei nicht nur um eine Liste benannter Konstanten, sondern um eine spezielle Klasse, die von der Enum-Superklasse geerbt wurde. Jedes Element der Aufzählung ist ein Objekt dieser Klasse. Der numerische Wert eines Aufzählungsobjekts kann mithilfe der integrierten Ordinalfunktion ermittelt werden.
  • Brauch Überlastung des Bedieners vertraut in C++, in Java nicht unterstützt.
  • Um in der Objektumgebung mit „primitiven Typen“ (int, float, char, etc...) in Java zu arbeiten, wird es verwendet automatisches Packen/automatisches Entpacken in Wrapper-Typen (Integer, Float, Character usw.) umwandeln. Im Wesentlichen handelt es sich hierbei um die Implementierung der Operatorüberladung für mehrere integrierte Klassen, die die Funktionalität primitiver Typen + Objektmethoden implementieren.
  • super ist ein Schlüsselwort, mit dem Sie einen Oberklassenkonstruktor aus einer Unterklasse aufrufen oder auf ein Mitglied einer Oberklasse zugreifen können, das von einem Mitglied einer Unterklasse ausgeblendet wird.
    • Bei Verwendung als Konstrukteur - super sollte immer an erster Stelle stehen Operator im Unterklassenkonstruktor.
  • Zur Bestimmung abstrakt Methoden verwenden das Schlüsselwort abstract. Die Klasse, die die abstrakte Methode enthält, muss auch als abstrakte Klasse definiert sein....
  • final verhindert, dass Methoden in untergeordneten Klassen überschrieben werden. Bei „kurzen“ Methoden, die als final deklariert wurden, hat dieses Schlüsselwort eine ähnliche Wirkung wie inline in C++ – in Unterklassen statt beim Aufruf der Funktion kann sein Der Bytecode einer Oberklassenmethode wird in den Code einer aufrufenden Klassenmethode eingefügt.
  • final verhindert außerdem, dass eine als final deklarierte Klasse vererbt wird.
  • Namensräume(Namespace) in Java sind implementiert als Pakete(Paket).
  • Verbinden Pakete import verwendet wird, können Sie auch import static verwenden ..(*|), um statische Klassenmitglieder zu importieren.
  • Java unterstützt Threads über die integrierte Thread-Klasse und die Runable-Schnittstelle. Verwenden Sie für die Synchronisierung den synchronisierten Spezifizierer vor der Methode in der Klassenbeschreibung oder synchronisiert( ) ( ... ) für einen Codeblock, der mit synchronisiert wird . Für Signale zwischen synchronisierten Threads werden die Methoden der übergeordneten Klasse Object verwendet: wait()/notify()/notifyAll() .
  • transient – ​​ein Modifikator, der angibt, dass der Wert eines Objekts/einer Variablen beim Speichern des Objekts nicht „gehalten“ werden muss, beispielsweise wenn es vor dem Schreiben auf die Festplatte/in die Datenbank serialisiert wird. Auf diese Weise ist es logisch, Variablen zu markieren, die eindeutige Laufzeitkennungen und andere ähnliche Informationen enthalten, die nur in der aktuellen Instanz des Java-Prozesses sinnvoll sind.
  • Instanz von - Laufzeitbetrieb, Rückkehr WAHR Wenn Es gibt einen Link zur Klasse , oder kann andernfalls in einen Verweis auf diese Klasse umgewandelt werden FALSCH.
  • Assertion – Assertions werden in Java auf die gleiche Weise verwendet wie in C: Assertion [: Beschreibung des Behauptungsfehlers] , aber muss man im Hinterkopf behalten dass sie in den kompilierten Bytecode integriert werden und beim Ausführen von java -ea aktiviert werden können.
  • this(...) – kann innerhalb eines Klassenkonstruktors verwendet werden, um einen anderen Konstruktor derselben Klasse aufzurufen, der mit der Signatur der Argumente übereinstimmt.
  • Anstatt Vorlagen werden verwendet Verallgemeinerungen, sieht sehr ähnlich aus: Klasse CLASS_NAME (...). In Verallgemeinerungen es ist verboten verwenden Primitive Typen ( int, byte, char usw.). Die Parameter können verwendet werden nur Klassen.
    Darüber hinaus unterstützt es begrenzte Typen, durch Angabe einer Oberklasse für Parameterklassen. Zum Beispiel die Deklaration einer „generischen Klasse“ Klasse CLASS_NAME in der es zulässig ist, nur abgeleitete Klassen der allgemeinen numerischen Klasse Number zu verwenden.
  • Um Arrays schnell zu kopieren, ist es praktisch, System.arraycopy() zu verwenden.
  • Eines der grundlegenden Elemente vieler Programmiersprachen ist Bedingungen . Mit diesen Designs können Sie die Arbeit des Programms abhängig von bestimmten Bedingungen auf einen der Pfade lenken.

    Die folgenden bedingten Konstrukte werden in Java verwendet: if..else und switch..case

    if/else-Konstrukt

    Eine if/else-Anweisung testet die Wahrheit einer bestimmten Bedingung und führt abhängig von den Testergebnissen bestimmten Code aus:

    Int num1 = 6; int num2 = 4; if(num1>num2)( System.out.println("Die erste Zahl ist größer als die zweite"); )

    Nach Stichwort wenn Bedingung gesetzt ist. Und wenn diese Bedingung erfüllt ist, dann der Code, der weiter im if-Block danach platziert wird Geschweifte Klammern. Die Bedingungen sind der Vorgang des Vergleichs zweier Zahlen.

    Da in diesem Fall die erste Zahl größer als die zweite ist, ist der Ausdruck num1 > num2 wahr und gibt true zurück. Folglich wechselt die Steuerung zum Codeblock hinter den geschweiften Klammern und beginnt mit der Ausführung der dort enthaltenen Anweisungen, insbesondere der Methode System.out.println("Die erste Zahl ist größer als die zweite"); . Wenn die erste Zahl kleiner oder gleich der zweiten wäre, würden die Anweisungen im if-Block nicht ausgeführt.

    Was aber, wenn wir möchten, dass eine Aktion auch dann ausgeführt wird, wenn eine Bedingung nicht erfüllt ist? In diesem Fall können wir einen else-Block hinzufügen:

    Int num1 = 6; int num2 = 4; if(num1>num2)( System.out.println("Die erste Zahl ist größer als die zweite"); ) else( System.out.println("Die erste Zahl ist kleiner als die zweite");

    Int num1 = 6; int num2 = 8; if(num1>num2)( System.out.println("Die erste Zahl ist größer als die zweite"); ) else if(num1

    Wir können auch mehrere Bedingungen gleichzeitig mit logischen Operatoren verbinden:

    Int num1 = 8; int num2 = 6; if(num1 > num2 && num1>7)( System.out.println("Die erste Zahl ist größer als die zweite und größer als 7"); )

    Hier wird der if-Block ausgeführt, wenn num1 > num2 wahr ist und gleichzeitig num1>7 wahr ist.

    Schalterbau

    Design Schaltergehäuseähnelt dem if/else-Konstrukt, da es Ihnen ermöglicht, mehrere Bedingungen gleichzeitig zu verarbeiten:

    Int num = 8; switch(num)( case 1: System.out.println("the number is 1"); break; case 8: System.out.println("the number is 8"); num++; break; case 9: System. out. println("die Zahl ist 9"); break; Standard: System.out.println("die Zahl ist nicht 1, 8, 9"); )

    Nach dem Schlüsselwort switch steht in Klammern der zu vergleichende Ausdruck. Der Wert dieses Ausdrucks wird sequentiell mit den Werten verglichen, die nach dem Falloperator stehen. Und wenn eine Übereinstimmung gefunden wird, wird ein bestimmter Fallblock ausgeführt.

    Am Ende des Case-Blocks wird eine Break-Anweisung platziert, um die Ausführung anderer Blöcke zu vermeiden. Wenn wir beispielsweise die break-Anweisung im folgenden Fall entfernt hätten:

    Fall 8: System.out.println("die Zahl ist 8"); num++; Fall 9: System.out.println("die Zahl ist 9"); brechen;

    Da dann unsere Variable num gleich 8 ist, würde der Blockfall 8 ausgeführt werden, aber da in diesem Block die Variable num um eins erhöht wird, gibt es keine Break-Anweisung, dann würde der Blockfall 9 ausgeführt werden.

    Wenn wir auch die Situation bewältigen möchten, in der keine Übereinstimmung gefunden wird, können wir wie im obigen Beispiel einen Standardblock hinzufügen. Obwohl der Standardblock optional ist.

    Ab JDK 7 können Sie zusätzlich zu primitiven Typen auch Zeichenfolgen in einem switch..case-Ausdruck verwenden:

    Paket firstapp; import java.util.Scanner; öffentliche Klasse FirstApp ( public static void main(String args) ( Scanner in = new Scanner(System.in); System.out.println("Enter Y or N: "); String input= in.nextLine(); switch( input)( case "Y": System.out.println("Sie haben den Buchstaben Y gedrückt"); break; case "N": System.out.println("Sie haben den Buchstaben N gedrückt"); break; default: System .out .println("Sie haben einen unbekannten Buchstaben gedrückt"); ) ) )

    Ternärer Betrieb

    Der ternäre Operator hat die folgende Syntax: [erster Operand - Bedingung] ? [zweiter Operand] : [dritter Operand] . Somit sind an dieser Operation drei Operanden beteiligt. Abhängig von der Bedingung gibt der ternäre Operator einen zweiten oder dritten Operanden zurück: Wenn die Bedingung wahr ist, wird der zweite Operand zurückgegeben; Wenn die Bedingung falsch ist, dann die dritte. Zum Beispiel:

    Int x=3; int y=2; int z = x

    Hier ist das Ergebnis der ternären Operation die Variable z. Zunächst wird die Bedingung x überprüft

    Stanislaw Gornakow

    Um eine Fremdsprache sprechen und lesen zu können, müssen Sie das Alphabet und die Grammatik dieser Sprache lernen. Ein ähnlicher Zustand ist beim Studium von Programmiersprachen zu beobachten, mit dem einzigen Unterschied, dass dieser Prozess meiner Meinung nach etwas einfacher ist. Bevor Sie jedoch mit dem Schreiben des Quellcodes des Programms beginnen, müssen Sie zunächst das Ihnen gestellte Problem in einer für Sie geeigneten Form lösen.

    Erstellen wir eine bestimmte Klasse, die beispielsweise für ein Telefon verantwortlich ist und nur über zwei Methoden verfügt: das Ein- und Ausschalten dieses Telefons. Da wir derzeit die Syntax der Java-Sprache nicht kennen, werden wir die Phone-Klasse in einer abstrakten Sprache schreiben.

    Klasse Phone (Methode Enable() (// Operationen zum Einschalten des Telefons) Methode Disable (// Operationen zum Ausschalten des Telefons))

    Die Phone-Klasse könnte in etwa so aussehen. Beachten Sie, dass geschweifte Klammern den Anfang und das Ende des Hauptteils einer Klasse, Methode bzw. einer beliebigen Datensequenz angeben. Das heißt, Klammern geben die Zugehörigkeit zu einer Methode oder Klasse an. Für jede öffnende Klammer muss es eine schließende Klammer geben. Um Verwirrung zu vermeiden, werden sie normalerweise auf derselben Ebene im Code platziert.

    Schreiben wir nun dieselbe Klasse nur in Java.

    Klasse Telefon ( void on() ( // Methodenkörper on() ) void off() ( // Methodenkörper off() ) )

    Das Schlüsselwort class in der Java-Sprache deklariert eine Klasse, gefolgt vom Namen der Klasse selbst. In unserem Fall ist das Telefon. Noch ein paar Worte zum Aufnahmeregister. In fast allen Programmiersprachen ist es wichtig, Namen in dem Register zu speichern, in dem sie geschrieben wurden. Wenn Sie „Telefon“ geschrieben haben, führt die Schreibweise „telefon“ oder „TELefoN“ beim Kompilieren zu einem Fehler. Wie wir anfangs geschrieben haben, sollten wir auch weiterhin so schreiben.

    Reservierte Schlüsselwörter oder Schlüsselwörter werden in ihrer eigenen spezifischen Schreibweise geschrieben und können nicht durch Benennung für Methoden, Klassen, Objekte usw. verwendet werden. Leerzeichen zwischen Wörtern spielen keine Rolle, da der Compiler sie einfach ignoriert, sie sind jedoch wichtig für die Lesbarkeit des Codes.

    Im Körper der Telefon-Klasse gibt es zwei Methoden: on() – schaltet das Telefon ein und off() – Methode – schaltet das Telefon aus. Beide Methoden haben ihre eigenen Körper und sollten theoretisch einen Quellcode enthalten, der die notwendigen Aktionen beider Methoden beschreibt. Für uns spielt es jetzt keine Rolle, wie diese Methoden implementiert werden, die Hauptsache ist die Syntax der Java-Sprache.

    Beide Methoden verfügen über on()-Klammern, in die Parameter geschrieben werden können, beispielsweise on(int time) oder on(int time, int time1). Mit Hilfe von Parametern entsteht eine Art Verbindung zwischen Methoden und der Außenwelt. Die Methode on(int time) soll einen Zeitparameter annehmen. Wofür ist das? Sie möchten beispielsweise, dass sich Ihr Telefon zu einer bestimmten Zeit einschaltet. Dann wird der ganzzahlige Wert im Zeitparameter an den Hauptteil der Methode übergeben und basierend auf den empfangenen Daten wird das Telefon eingeschaltet. Wenn die Klammern leer sind, akzeptiert die Methode keine Parameter.

    Kommentare

    In der Telefon-Klasse gibt es in den Körpern beider Methoden nach zwei Schrägstrichen einen Eintrag: //. Dieser Eintrag bezeichnet Kommentare, die vom Compiler ignoriert werden, aber für die Lesbarkeit des Codes erforderlich sind. Je mehr Informationen Sie beim Schreiben des Programms kommentieren, desto wahrscheinlicher ist es, dass Sie sich in einem Jahr daran erinnern, woran Sie die ganze Zeit gearbeitet haben.

    Kommentare in Java können von drei Typen sein: //, /*…*/ und /**…*/. Mit dem //-Operator geschriebene Kommentare müssen in einer Zeile stehen:

    // Eine Linie!!! Fehler! Sie können es nicht in die zweite Zeile einschließen! // Erste Zeile // Zweite Zeile // ... // Letzte Zeile

    Kommentare mit den Operatoren /*…*/ können sich über mehrere Zeilen erstrecken. Geben Sie am Anfang Ihres Kommentars /* ein und am Ende, wenn Sie mit dem Kommentieren des Codes fertig sind, den Operator */. Der letzte Kommentartyp /**…*/ wird bei der Dokumentation von Code verwendet und kann sich ebenfalls auf beliebig vielen Zeilen befinden.

    Java-Datentypen

    Um einen beliebigen Wert festzulegen, verfügt Java über Datentypen. In der Telefonklasse haben wir zwei Methoden erstellt. Beide Methoden hatten keine Parameter, aber als das Beispiel der Methode on(int time) mit einem Zeitparameter gegeben wurde, ging es darum, der Methode einen Wert zu übergeben. Dieser Wert gab den Zeitpunkt an, zu dem sich das Telefon angeblich einschalten sollte. Der int-Spezifizierer bestimmt den Typ des Zeitwerts. In Java 2 ME gibt es sechs Datentypen.

    Byte – kleiner ganzzahliger Wert von –128 bis 128;
    short – kurzer ganzzahliger Wert im Bereich von –32768 bis 32767;
    int – enthält einen beliebigen ganzzahligen Wert von –2147483648 bis 2147483647;
    long – sehr großer ganzzahliger Wert, von –922337203685475808 bis 9223372036854775807;
    char ist eine Unicode-Zeichenkonstante. Der Bereich dieses Formats reicht von 0 bis 65536, was 256 Zeichen entspricht. Jedes Zeichen dieses Typs muss in einfache Anführungszeichen geschrieben werden, zum Beispiel: 'G';
    boolean ist ein logischer Typ, der nur zwei Werte hat: false und true. Dieser Typ wird häufig in Schleifen verwendet, worauf später noch eingegangen wird. Die Bedeutung ist ganz einfach: Wenn man Geld in der Tasche hat, soll es wahr sein, und wenn nicht, dann ist es falsch. Wenn wir also Geld haben, gehen wir in den Laden, um Brot oder Bier zu holen (unterstreichen Sie, was zutrifft), wenn wir kein Geld haben, bleiben wir zu Hause. Das heißt, dies ist ein logischer Wert, der zur Auswahl weiterer Aktionen Ihres Programms beiträgt.

    Um einen notwendigen Wert zu deklarieren, verwenden Sie den folgenden Eintrag:

    Int-Zeit; lange BigTime; char-Wort;

    Der Semikolon-Operator ist nach Eingaben erforderlich und wird am Ende der Zeile platziert. Sie können mehrere Deklarationen desselben Typs durch Kommas getrennt kombinieren:

    Mt Zeit, Zeit1, Zeit2;

    Jetzt verbessern wir unsere Telefon-Klasse, indem wir ihr einige Werte hinzufügen. Wir brauchen die Methoden on() und off() nicht mehr; fügen wir neue Methoden hinzu, die bestimmte Probleme tatsächlich lösen können.

    Klasse Telefon ( //S – Anzeigebereich //w – Anzeigebreite //h – Anzeigehöhe int w, h, S; //Methode, die den Anzeigebereich berechnet void Area() ( S = w*h; ) )

    Wir haben also drei Variablen S, w und h, die jeweils für die Fläche, Breite und Höhe der Anzeige in Pixel verantwortlich sind. Die Area()-Methode berechnet die Fläche des Telefonbildschirms in Pixel. Die Bedienung ist nutzlos, aber sehr anschaulich und leicht verständlich. Der Körper der Area()-Methode hat sich gefunden und hat die Form S = w*h. Bei dieser Methode multiplizieren wir einfach die Breite mit der Höhe und weisen das Ergebnis zu oder speichern es in der Variablen S. Diese Variable enthält die Werte des Anzeigebereichs dieses Telefons . Jetzt sind wir den Java-Sprachoperatoren nahe gekommen, mit denen Sie alle Arten von Operationen ausführen können und über die wir im nächsten Teil dieser Artikelserie sprechen werden.




    Freunden erzählen