Semantische Fehler in Java

Viele Leute finden, den Unterschied zwischen semantischen Fehler und syntaktische (Syntax) Fehler in Java-Code schwer zu verstehen, aber sie sind anders. Sie können eine semantische Fehler angezeigt, wenn die Syntax des Codes korrekt ist, aber der Code Nutzung ist nicht korrekt.

Die häufigste semantische Fehler ist einer, in dem der Code eine Variable verwendet, die nicht richtig initialisiert wird. Glücklicherweise findet der Compiler diese besondere semantische Fehler in den meisten Fällen. Hier ist eine Liste von anderen gemeinsamen semantischen Fehler, die Sie wissen müssen über.

  • Mit einem Operator, der nicht zutrifft: In einigen Situationen können Sie versuchen, einen Operator zu verwenden, die nicht auf die Variable oder Variablen in Frage gilt. Zum Beispiel können Sie nicht den Inkrementoperator (++) mit einem boolean Variable verwenden.

    Neuere Versionen von Java haben bei der Suche nach diesen Fehler geschickt werden, aber man kann immer noch Schwierigkeiten stoßen genau herauszufinden, warum ein Fehler tritt auf, wenn Sie den falschen Operator in einigen Fällen verwendet werden. Zum Beispiel wird nicht vergleichen MyObj1 == MyObj2 die beiden Objekte - der Gleichheitsoperator funktioniert nur mit primitiven Typen.

  • Verwendung von nicht kompatiblen Typen: Diese Art von semantischen Fehler kann, weil der Compiler-Flag einige Fehler und andere nicht schwierig sein. Zum Beispiel, wenn Sie versuchen, einen Schwimmer zu einer int-Variablen zuweisen, zeigt der Compiler eine Fehlermeldung.

    Auf der anderen Seite, wenn Sie einen int in einen float-Variablen zuweisen, führt der Compiler eine automatische Typ-Konvertierung zum int es ein Schwimmer zu machen. Das Problem bei diesem zweiten Szenario ist, dass es leise Fehler im Code einführen können, vor allem, wenn Sie wirklich einen Schwimmer zu verwenden wollte.

  • Der Verlust Präzision bei einer Umwandlung: Manchmal kann man falsch Gießen anwenden. Zum Beispiel arbeitet ein Schwimmer in einem int Gießen in Ordnung, aber bei dem Verlust des Dezimalteil der Zahl.

    Dieser Verlust an Präzision kann die Leistung Ihrer Anwendung auf unerwartete Weise beeinflussen und bewirken, dass der Ausgang einen anderen Wert als dem zu reflektieren Sie erwartet. Der Compiler findet nie diese Art von Fehler, da Sie speziell eine Besetzung auf die Variable angewendet haben und der Compiler erwartet, dass Sie wissen, was Sie tun.

  • Durchführen einer unmöglich Besetzung: Es ist möglich, zwischen vielen verschiedenen Arten in Java zu konvertieren. Doch egal, wie viel Sie möchten einen Booleschen Wert in einen int zu konvertieren, Java wird nicht zulassen, Sie es tun. Das Konzept der Besetzung der Durchführung ist syntaktisch korrekt, aber Sie sich bewerben falsch es, diese eine semantische Fehler zu machen, dass der Compiler immer fängt.

  • Anwenden von Scoping falsch: Jede Variable, die Sie innerhalb einer Methode deklarieren hat die gleiche Umfang - Sichtbarkeit für andere Teile der Anwendung, mit anderen Worten - wie das Verfahren. Folglich können Sie keine private static int-Variable in einer Methode deklarieren. Stattdessen müssen Sie die Variable global wie folgt definieren:

    public class PrivateVar {// Diese Deklaration works.private static int PrivateInt = 3-public static void main (String [] args) {// Diese Erklärung work.private nicht static int PrivateInt = 3}}

Dies sind die häufigsten Probleme, die Sie in Ihrem Code aussehen sollte. Semantische Fehler sind in der Regel schwieriger zu sein als syntaktische Fehler zu finden, aber nicht annähernd so hart wie logische Fehler.

Menü