Als ich neulich über Zeichencodes nachdachte, hatte ich plötzlich die folgende Frage.
"Die Byte-Zeichenfolge sollte je nach Zeichencode unterschiedlich sein. Wie erkennt der Computer sie?"
Ich hatte diese Frage wegen meiner mangelnden Fähigkeiten, aber diesmal fasste ich zusammen, was ich gelernt hatte.
Zusammenfassend lässt sich sagen, dass der Unterschied im Zeichencode des von uns eingegebenen Programms von der Anwendung wie dem Compiler in eine eindeutige Byte-Zeichenfolge konvertiert wird. ** Der Zeichencode des Programms wirkt sich also nicht auf die Hardware wie die CPU aus. Kann man sagen. ** ** **
Aber wenn Sie darüber nachdenken **, wenn sich Ihre Anwendung als "meine ursprüngliche Annahme" verhält, was macht der Compiler dann? ** Es machte mir wieder klar, dass ich nicht lernen konnte.
(1) Speichern Sie eine Java-Datei insgesamt zweimal an verschiedenen Orten. Beim Speichern wird jedes mit einem anderen Zeichencode gespeichert. (Dieselbe Quelle kann mit einem anderen Zeichencode gespeichert werden.) (2) Beim Vergleich der Unterschiede in den in (1) erstellten Dateien mit Binärdaten ** sollten die Unterschiede bestätigt werden, da sie mit unterschiedlichen Zeichencodes gespeichert werden ** ③ Konvertieren Sie jede in eine Klassendatei ④ Beim Vergleich der Unterschiede zwischen den einzelnen Klassendateien ** sollten keine Unterschiede bestätigt werden **
Bereiten Sie die folgenden Quellen unter Bezugnahme auf HelloWorld.java vor.
HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
// Prints "Hello, World" to the terminal window.
System.out.println("Hello, World");
}
}
Überprüfen Sie nach dem Speichern den Zeichencode jeder Datei. Sie können sehen, dass die Quelle dieselbe ist, der Zeichencode jedoch unterschiedlich ist.
UTF-Kompilieren Sie 16
javac -encoding UTF-16 HelloWorld.java
UTF-Kompilieren Sie 8
javac HelloWorld.java
Es stellt sich heraus, dass der Unterschied im Zeichencode der Quelle vom Compiler absorbiert und in eine eindeutige Bytezeichenfolge konvertiert wird.
Das obige Experiment wurde in Java durchgeführt, aber danach scheint es, dass die Klassendatei von JVM in die Maschinensprache konvertiert wird und die CPU sie als Programm ausführt. In diesem Experiment haben wir festgestellt, dass ** der Unterschied im Zeichencode der eingegebenen Eingabe in der Phase der Kompilierung in eine Klassendatei zusammengefasst wird. ** ** **
Referenz: Nun ... ich wusste nicht, dass Java zweimal "kompiliert" wurde! (> <)
Ursprünglich fragte ich mich: "Die Byte-Zeichenfolge sollte je nach Zeichencode unterschiedlich sein, aber wie erkennt die Hardware sie?" Also untersuchte ich, was ich oben geschrieben habe. Diese Frage ist jedoch möglicherweise auch aufgetreten, weil ich die Rolle des Compilers nicht richtig verstanden habe. ** Ich erkannte, wie wichtig es ist, die Grundlagen der Anwendung erneut zu studieren.
Recommended Posts