[Einführung in das Java-Inhaltsverzeichnis] Ich habe Java mit anderen Sprachen verglichen (Interpretertyp, Compilertyp, dynamischer Typ, statischer Typ).

Zweck

Ich habe gerade angefangen, Java zu lernen und möchte den Unterschied zu anderen Sprachen verstehen.

** Klicken Sie hier, um eine Übersicht und einen Artikel zum Aufbau der Umgebung zu erhalten **

Ich möchte das, was ich in Java gelernt habe, in mehrere Artikel aufteilen und ausgeben.

Nächstes Mal werde ich [Variationen und Typen] überprüfen (https://qiita.com/morioheisei/items/3d27e82d6cd88068dded). Dieses Mal werde ich ungefähr zwei Punkte überprüfen, die sich zwischen Java und anderen Sprachen unterscheiden.

① So führen Sie das Programm aus

Computer können nur Maschinenwörter ausführen und verstehen, die mit Nullen und Einsen geschrieben wurden. In einer Programmiersprache geschriebener Quellcode muss ebenfalls in eine Maschinensprache konvertiert (übersetzt) werden.

Javascript, PHP, Ruby usw.

Wird als "Dolmetschersprache" bezeichnet. Quelldateien in Programmiersprache geschrieben, Es wird ausgeführt, während Zeile für Zeile konvertiert wird, damit der Computer es erkennen kann.

Schreiben Sie ein Programm ↓ (übersetzt in Maschinensprache) Ausführen ↓ Schreiben Sie ein Programm ↓ (übersetzt in Maschinensprache) Ausführen

Hello.php


<?php
  echo "Hello World";
?>

Terminal


$ php Hello.php
Hallo Welt ← Ausgeführt und ausgegeben!

Java Wird als "Compilersprache" bezeichnet. Alle in der Programmiersprache geschriebenen Quelldateien werden einmal in die Maschinensprache konvertiert (übersetzt), um eine weitere Datei (Klassendatei) zu generieren. Die Ausführung erfolgt gemeinsam durch JVM (Java Virtual Machine).

Schreiben Sie ein Programm ↓ Kompilieren (in Maschinensprache übersetzen) Klassendatei generieren ↓ Ausführen

Hello.java


class Hello {
  public static void main(String[] args) {
    System.out.println("Hello World");
  }
}

Erstellen Sie eine Klassendatei, indem Sie die Quelldatei mit dem Befehl javac kompilieren.

Terminal


$ javac Hello.java
$ ls
Hello.java     Hello.Klasse ← Erstellt!

Führen Sie die Klassendatei mit dem Befehl java aus und geben Sie Hello World aus. Fügen Sie nicht die Erweiterung `.class hinzu. ``

Terminal


$ java Hello
Hallo Welt ← Ausgabe!

Zusammenfassung der Ausführung des Programms

** Dolmetschersprache **

** Compilersprache **

② Geben Sie den Datentyp an

Javascript, PHP, Ruby usw.

Wird als "dynamisch typisierte Sprache" bezeichnet. Es wird nicht entschieden, welche Art von Wert in den Variablennamen, das Funktionsargument oder den Rückgabewert aufgenommen wird. (Kann ohne Entscheidung deklariert werden)

test.js


let str = "Guten Morgen";
console.log(str); //Guten Morgen
str = 2020;
console.log(str); // 2020

Ursprünglich war es der Variablenname "str" für die Eingabe einer Zeichenfolge, aber Sie können auch den numerischen Wert 2020 ersetzen.

test.js


//Eine Funktion zum Hinzufügen von Zahlen und zum Zurückgeben eines Ergebnisses
function sumNumber(a, b) {
  return a + b;
}
console.log(sumNumber(1, 1)); // 2
console.log(sumNumber("Hello", "World")); // HelloWorld

Ursprünglich war der Funktionsname "sumNumber", was ich als Ergebnis des Hinzufügens von zwei Zahlen zurückgeben wollte. Sie können auch die Zeichenfolgen Hello und World hinzufügen und zurückgeben.

Es gibt einen Nachteil, dass Sie es unbeabsichtigt verwenden können.

Java Wird als "statisch typisierte Sprache" bezeichnet. Deklarieren Sie den Typ explizit im Variablennamen, Funktionsargument oder Rückgabewert. Es kann nicht mit anderen Daten als dem deklarierten Typ behandelt werden.

Ich werde den Code auf die gleiche Weise wie zuvor schreiben.

Main.java


class Main {
  public static void main(String[] args) {
    String str = "Guten Morgen";
    System.out.println(str); //Guten Morgen
    str = 2020; // Type mismatch: cannot convert from int to String
    System.out.println(str);
  }
}

Ein Fehler tritt auf, wenn Sie versuchen, den numerischen Wert 2020 durch den Variablennamen "str" zu ersetzen, der Zeichentypdaten enthält. Korrekt...

Main.java


class Main {
  public static void main(String[] args) {
    String str = "Guten Morgen";
    System.out.println(str); //Guten Morgen

    //Ersetzen Sie str durch die Zeichenkette "Guten Abend"
    str = "Guten Abend";
    System.out.println(str); //Guten Abend

    //Ersetzen Sie 2020 durch den als int-Typ angegebenen Variablennamen "year"
    int year = 2020;
    System.out.println(year); // 2020
  }
}

Gleiches gilt für Funktionen.

Main.java


class Main {
  public static void main(String[] args) {
    System.out.println(sumNumber(1, 1)); // 2
    System.out.println(sumNumber("Hello", "World")); // The method sumNumber(int, int) in the type Main is not applicable for the arguments (String, String)
  }

  //Sowohl das erste als auch das zweite Argument erhalten den Typ int, und der Rückgabewert definiert auch den Funktionsnamen des int-Typs "sumNumber".
  public static int sumNumber(int a, int b) {
    return a + b;
  }
}

In JavaScript war es in Ordnung, entweder Buchstaben oder Zahlen zu übergeben, aber in Java wird eine Fehlermeldung angezeigt. Dies liegt daran, dass die Funktion Daten vom Typ int empfängt, jedoch eine Zeichenfolge übergibt.

Es kann wie vom Programmersteller beabsichtigt ausgeführt werden, und es besteht der Vorteil, dass ein auftretender Fehler bemerkt werden kann, bevor das Programm ausgeführt wird.

abschließend

Ich habe bisher nur dynamisch typisierte Sprachen gelernt, daher war ich überrascht, den Datentyp jedes Mal anzugeben, wenn ich eine Variable deklariere. Als nächstes werden wir uns mit Variablen und Typen befassen (https://qiita.com/morioheisei/items/3d27e82d6cd88068dded).

Recommended Posts

[Einführung in das Java-Inhaltsverzeichnis] Ich habe Java mit anderen Sprachen verglichen (Interpretertyp, Compilertyp, dynamischer Typ, statischer Typ).
Initialisierung mit einer leeren Zeichenfolge für eine Instanz vom Typ Java-Zeichenfolge
Ich habe versucht, mit Java zu interagieren
Einführung in Ruby (aus anderen Sprachen)
[Java] Ablauf von der Einführung von STS bis zur Bestätigung der dynamischen Seite auf dem lokalen Host (2/3)
Ich möchte Bilder mit REST Controller von Java und Spring anzeigen!
Immerhin wollte ich den Inhalt von MySQL mit Docker in der Vorschau anzeigen ...