In den letzten Jahren gab es viele Schulen für Werbeprogrammierung wie "Werden Sie Ingenieur, auch wenn Sie unerfahren sind" oder "Werden Sie Ingenieur, auch wenn Sie einen Hintergrund im Bereich der freien Künste haben", und ich wurde von einer von ihnen während der Ausbildung des Unternehmens betreut. Ich hatte jedoch das Gefühl, dass der Fokus nicht so sehr auf den "Grundlagen" lag, wahrscheinlich weil der Zweck darin bestand, eine Anwendung in kurzer Zeit zu erstellen, und so wurde ich ein ** Neuling, der von nun an das Programmieren lernen wird **. Ich wollte etwas schreiben, das als Zugang zu den "Grundlagen" von Java dient, und für ** neue Ingenieure wie mich, die der Meinung sind, dass die "Grundlagen" nicht ausreichen.
Bisher wurde das Wort "grundlegend" alle eingegeben.
Bedeutung von Ki-so [Basic] Der grundlegende Teil, der etwas bewirkt. Ursprünglich. "Da das Fundament solide ist, können Sie sich schnell verbessern." "Das Fundament konsolidieren." "Grundkenntnisse."
In diesem Eintrag als erster Schritt zum Erlernen der "Grundlagen" von Java
Ich möchte mich auf diese beiden konzentrieren.
Schauen wir uns zunächst die Java-Sprache an.
Java Lassen Sie uns vorher kurz die Programmiersprache selbst überprüfen.
Der Programmierer verwendet die Programmiersprache, um Anweisungen an den Computer zu senden. Computer sind jedoch nichts anderes als elektrisch betriebene Computer.
(Nebenbei bemerkt, der Computer heißt auf Deutsch Rechner, aber er kommt vom Verb "berechnen", was gehört. Es ist wirklich eine Seite.)
Es scheint, dass alte Programmierer die Binärzahlen 0 und 1 zum Schreiben von Programmen verwendeten, da Computer nur zwei elektrische Signale empfangen können, ein oder aus. Die aus 0 und 1 zusammengesetzte heißt übrigens ** Maschinensprache **.
Es scheint, dass Binärzahlen oft in Hexadezimalzahlen geschrieben werden, weil sie viele Ziffern haben, aber immer noch nicht menschenfreundlich sind. Daher wurde den Anweisungen, die durch die Maschinensprache dargestellt werden, ein Spitzname ("Mnemonik" genannt) hinzugefügt und eine "Assemblersprache **" erstellt.
Programme sind für den Menschen jedoch immer noch nicht leicht zu verstehen, und im Laufe der Zeit nahmen Anzahl und Komplexität der erforderlichen Programme zu. Daher wurde eine Methode zum Schreiben von Programmen entwickelt, die für den Menschen leichter zu verstehen ist. (Übrigens wird eine Programmiersprache, die für Menschen leicht zu verstehen ist, als "Hochsprache" bezeichnet, während eine Sprache, die für einen Computer leicht zu verstehen ist, als "Niedrigsprache" bezeichnet wird.)
Was für Menschen leicht zu verstehen ist, bedeutet auch, dass es für Computer schwer zu verstehen ist. Wir müssen also den vom Programmierer geschriebenen Code in die Maschinensprache "konvertieren", damit der Computer ihn verstehen kann. Das ist die Arbeit namens "** compilation ", und die, die sie kompiliert, heißt " compiler **". Der Compiler übersetzt in Hochsprachen geschriebene Programme in etwas, das ein Computer verstehen kann, aber er kompiliert für diesen Computer. Das heißt, der Computer in einer anderen Umgebung kann die konvertierte Maschinensprache nicht verstehen. Sie benötigen also wieder einen anderen Compiler.
Hier kommt Java endlich an.
Java wurde 1995 von Sun Microsystems angekündigt. Java, eine Hochsprache, muss wie zuvor geschrieben in eine Maschinensprache kompiliert werden. Der Unterschied zu anderen Sprachen besteht jedoch darin, dass eine virtuelle Maschine namens ** JVM ** (Java Virtual Maschine) verwendet wird. Es gibt.
Die JVM reserviert Speicher auf Ihrem Computer und startet. Und da Sie das Programm auf dieser JVM ausführen können, müssen Sie sich keine Gedanken über die Unterschiede zwischen Computern machen.
Um genauer zu sein, Java ist menschenfreundlich geschrieben (Dateiname ist hoge.java) und wird durch Kompilierung in eine sogenannte Zwischensprache konvertiert (Dateiname ist hoge.class. Der Name Zwischensprache ist offiziell. Es scheint, dass es der Einfachheit halber so genannt wird, und es wird korrekt ** Java-Bytecode ) genannt. Anschließend lädt die JVM die Zwischensprache, konvertiert sie zeilenweise in die Maschinensprache und führt sie aus. Ein Programm, das auf diese Weise Zeile für Zeile konvertiert und ausführt, heißt " Interpreter **" [^ 1].
[^ 1]: Während Compile und Compiler gemäß der englischen Grammatik getrennt sind, sollte der Interpreter gemäß der englischen Grammatik in Interpret und Interpreter unterteilt werden, aber ich frage mich, ob die Notation nicht geteilt ist. ??
Mit anderen Worten, bevor Java ausgeführt wird, gibt es zwei Konvertierungsschritte. (Konvertierung durch Compiler und Interpreter)
JVM Beim Erstellen der Java-Umgebung gab es JDKs und JREs. JDK ist ein Java Development Kit, ein Software Development Kit, das für die Entwicklung mit Java erforderlich ist. In diesem JDK ist die JRE (Java Runtime Environment) enthalten, die als Java-Ausführungsumgebung bezeichnet wird. Dies ist eine Reihe von Software, mit der Sie Java-Anwendungen auf Ihrem Computer ausführen können, einschließlich JVMs.
Die JVM besteht aus Threads und Speicher.
Ein Prozess wird im Thread definiert und führt diesen Prozess aus.
Der Speicher ist in Heap und Native unterteilt.
Der Heap-Bereich speichert Anwendungsobjekte, und Garbage Collections (GCs) organisieren regelmäßig Objekte, die nicht mehr benötigt werden.
Der native Bereich ist der Bereich, der von der JVM selbst verwendet wird, und speichert die Informationen, die vom Thread (Thread-Stapel) verarbeitet werden.
Ich würde es gerne etwas genauer erklären, aber ich werde davonlaufen, also werde ich weitermachen.
Werfen wir einen kurzen Blick auf den Prozess, der zur endgültigen Anzeige von Hello World! Führt.
HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Lassen Sie uns zuerst kompilieren. Der Befehl ** javac ** kompiliert eine Java-Datei und erstellt eine Klassendatei.
javac HelloWorld.java
Dadurch wird eine Datei mit dem Namen HelloWorld.class erstellt. Lassen Sie uns zuerst Hello World! Starten Sie die JVM mit dem Befehl ** java **, analysieren Sie die in Java-Bytecode geschriebene Datei HelloWorld.class und lassen Sie sie ausführen.
$ java HelloWorld
Hello World!
Es ist fertig. Überprüfen wir nun den Java-Bytecode. Mit dem Befehl ** javap ** können Sie eine Klassendatei in ein für Menschen lesbares Format konvertieren.
$ javap -c HelloWorld
Compiled from "HelloWorld.java"
public class HelloWorld {
public HelloWorld();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #3 // String Hello World!
5: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return
}
public class Ab HelloWorld hat diese Klasse zwei Funktionen, die erste ist der Konstruktor und die zweite ist der Bytecode der Hauptfunktion. Der ursprüngliche Code hatte keinen Konstruktor, scheint aber automatisch generiert zu werden. Schauen wir uns die Funktion an. Der Code besteht aus drei Teilen: "index: Anweisung # Konstante Poolnummer". Der Konstantenpool ist der Bereich, in dem Konstanten und Symbole in virtuellen Java-Maschinen gespeichert sind. Schauen wir uns das an. Sie können dies überprüfen, indem Sie die Option -v im Befehl javap angeben.
Constant pool:
#1 = Methodref #6.#15 // java/lang/Object."<init>":()V
#2 = Fieldref #16.#17 // java/lang/System.out:Ljava/io/PrintStream;
#3 = String #18 // Hello World!
#4 = Methodref #19.#20 // java/io/PrintStream.println:(Ljava/lang/String;)V
#5 = Class #21 // HelloWorld
#6 = Class #22 // java/lang/Object
#7 = Utf8 <init>
#8 = Utf8 ()V
#9 = Utf8 Code
#10 = Utf8 LineNumberTable
#11 = Utf8 main
#12 = Utf8 ([Ljava/lang/String;)V
#13 = Utf8 SourceFile
#14 = Utf8 HelloWorld.java
#15 = NameAndType #7:#8 // "<init>":()V
#16 = Class #23 // java/lang/System
#17 = NameAndType #24:#25 // out:Ljava/io/PrintStream;
#18 = Utf8 Hello World!
#19 = Class #26 // java/io/PrintStream
#20 = NameAndType #27:#28 // println:(Ljava/lang/String;)V
#21 = Utf8 HelloWorld
#22 = Utf8 java/lang/Object
#23 = Utf8 java/lang/System
#24 = Utf8 out
#25 = Utf8 Ljava/io/PrintStream;
#26 = Utf8 java/io/PrintStream
#27 = Utf8 println
#28 = Utf8 (Ljava/lang/String;)V
Lassen Sie uns die Hauptfunktion überprüfen und den Ablauf von Hello World! Display sehen.
public static void main(java.lang.String[]);
Code:
0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #3 // String Hello World!
5: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return
Erstens bezieht sich die getstatische Anweisung auf # 2. das ist
#2 = Fieldref #16.#17 // java/lang/System.out:Ljava/io/PrintStream;
Sie können sehen, dass wir das Feld java / lang / System.out verwenden.
Der nächste ldc-Befehl, der zur Laufzeit konstante Werte aus dem konstanten Pool lädt.
#3 = String #18 // Hello World!
#18 = Utf8 Hello World!
Die Zeichenfolge Hello World! Wurde hier geladen.
Und die aufgerufene virtuelle Anweisung,
#4 = Methodref #19.#20 // java/io/PrintStream.println:(Ljava/lang/String;)V
Führen Sie die Funktion println mit der vorherigen Zeichenfolge als Argument aus.
Zum Schluss kehren Sie leer zurück, um fertig zu werden. Vielen Dank für Ihre harte Arbeit, Hello World! Wird angezeigt.
Ich habe versucht, es zu etwas zu machen, das ich wissen wollte, als ich zum ersten Mal Java studierte, aber es ist schwierig, es präzise und unter Berücksichtigung der wichtigsten Punkte zu schreiben. Möchte ich diesen Inhalt wirklich vor etwas weniger als einem Jahr lesen? Ich hoffe jedoch, dass dieser Artikel jemandem geholfen hat. Wenn Sie die Grundlagen von Java mit dieser Gelegenheit erlernen möchten, ist es das Beste und Höchste. Und ich habe mich entschlossen, die Grundlagen von Java zu studieren, damit ich es auf diese Weise versenden kann.
Wenn Sie einen Fehler machen, weisen Sie bitte darauf hin.
Recommended Posts