Heim Java JavaBase Was ist der Unterschied zwischen Java-Zeichenstrom und Bytestrom?

Was ist der Unterschied zwischen Java-Zeichenstrom und Bytestrom?

Dec 02, 2019 pm 02:10 PM
java

Was ist der Unterschied zwischen Java-Zeichenstrom und Bytestrom?

Der Unterschied zwischen Zeichenstrom und Bytestrom in Java: (empfohlen: Java-Video-Tutorial)

1. Die Grundeinheit von Byte-Stream-Operationen ist Byte; die Grundeinheit von Zeichen-Stream-Operationen ist das Unicode-Codeelement.

2. Byte-Stream verwendet standardmäßig keinen Puffer;

3. Byte-Stream wird normalerweise zur Verarbeitung von Binärdaten verwendet, unterstützt jedoch nicht das direkte Schreiben oder Lesen von Unicode-Code-Elementen. das das Schreiben und Lesen von Unicode-Codeeinheiten unterstützt.

Byte-Stream

Die grundlegendste Einheit der Byte-Stream-Verarbeitung in Java ist ein einzelnes Byte, das normalerweise zur Verarbeitung von Binärdaten verwendet wird. Die beiden grundlegendsten Bytestream-Klassen in Java sind InputStream und OutputStream, die den grundlegenden Eingabebytestream bzw. Ausgabebytestream darstellen.

Sowohl die InputStream-Klasse als auch die OutputStream-Klasse sind abstrakte Klassen. Im tatsächlichen Gebrauch verwenden wir normalerweise eine Reihe ihrer Unterklassen, die in der Java-Klassenbibliothek bereitgestellt werden. Nehmen wir die InputStream-Klasse als Beispiel, um den Byte-Stream in Java einzuführen.

Die InputStream-Klasse definiert eine grundlegende Lesemethode zum Lesen von Bytes aus einem Byte-Stream. Die Definition dieser Methode lautet wie folgt:

public abstract int read() throws IOException;
Nach dem Login kopieren

Dies ist eine abstrakte Methode, also ein beliebiger Eingabe-Byte-Stream Die von InputStream abgeleitete Klasse muss ein Byte aus dem Byte-Stream lesen. Wenn sie das Ende erreicht, gibt sie das gelesene Byte zurück.

Was wir bei dieser Methode beachten müssen, ist, dass sie blockiert, bis sie ein gelesenes Byte oder -1 zurückgibt. Darüber hinaus unterstützen Byte-Streams standardmäßig kein Caching, was bedeutet, dass das Betriebssystem bei jedem Aufruf der Lesemethode aufgefordert wird, ein Byte zu lesen, was häufig mit einer Festplatten-E/A einhergeht, sodass die Effizienz relativ gering ist.

Einige Freunde denken vielleicht, dass die überladene Lesemethode in der InputStream-Klasse, die ein Byte-Array als Parameter verwendet, mehrere Bytes gleichzeitig ohne häufige Festplatten-E/A lesen kann. Ist das also wirklich so? Schauen wir uns den Quellcode dieser Methode an:

public int read(byte b[]) throws IOException {
    return read(b, 0, b.length);
}
Nach dem Login kopieren

Sie ruft eine andere Version der Read-Overload-Methode auf, also machen wir weiter:

public int read(byte b[], int off, int len) throws IOException {
        if (b == null) {
            throw new NullPointerException();
        } else if (off < 0 || len < 0 || len > b.length - off) {
            throw new IndexOutOfBoundsException();
        } else if (len == 0) {
            return 0;
        }

        int c = read();
        if (c == -1) {
            return -1;
        }
        b[off] = (byte)c;

        int i = 1;
        try {
            for (; i < len ; i++) {
                c = read();
                if (c == -1) {
                    break;
                }
                b[off + i] = (byte)c;
            }
        } catch (IOException ee) {
        }
        return i;
    }
Nach dem Login kopieren

Aus dem obigen Code können wir sehen: Ja, Tatsächlich liest die Methode read(byte[]) auch ein Byte-Array „nacheinander“, indem sie die Methode read() in einer Schleife aufruft, sodass diese Methode im Wesentlichen nicht den Speicherpuffer verwendet. Um einen Speicherpuffer zur Verbesserung der Leseeffizienz zu verwenden, sollten wir BufferedInputStream verwenden.

Zeichenstrom

Die grundlegendste Einheit der Zeichenstromverarbeitung in Java ist die Unicode-Codeeinheit (Größe 2 Byte), die normalerweise zur Verarbeitung von Textdaten verwendet wird. Das sogenannte Unicode-Codeelement ist eine Unicode-Codeeinheit im Bereich von 0x0000 bis 0xFFFF. Jede Zahl im obigen Bereich entspricht einem Zeichen. Der String-Typ in Java codiert Zeichen standardmäßig gemäß den Unicode-Regeln und speichert sie dann im Speicher.

Im Gegensatz zur Speicherung im Speicher verfügen die auf der Festplatte gespeicherten Daten jedoch in der Regel über verschiedene Kodierungsmethoden. Bei Verwendung unterschiedlicher Codierungsmethoden haben dieselben Zeichen unterschiedliche binäre Darstellungen. Tatsächlich funktioniert der Zeichenstrom wie folgt:

Ausgabezeichenstrom: Konvertieren Sie die in die Datei zu schreibende Zeichenfolge (eigentlich eine Unicode-Codeelementsequenz) in eine Bytesequenz in der angegebenen Codierungsmethode und dann In die Datei schreiben;

Eingabezeichenstrom: Dekodieren Sie die zu lesende Bytesequenz in die entsprechende Zeichenfolge (eigentlich eine Unicode-Codeelementsequenz) gemäß der angegebenen Codierungsmethode, damit sie in der Datei gespeichert werden kann Erinnerung.

Wir verwenden eine Demo, um unser Verständnis dieses Prozesses zu vertiefen. Der Beispielcode lautet wie folgt:

import java.io.FileWriter;
import java.io.IOException;


public class FileWriterDemo {
    public static void main(String[] args) {
        FileWriter fileWriter = null;
        try {
            try {
                fileWriter = new FileWriter("demo.txt");
                fileWriter.write("demo");
            } finally {
                fileWriter.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Nach dem Login kopieren

Für weitere Java-Kenntnisse beachten Sie bitte das Java Basic Tutorial Spalte.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Java-Zeichenstrom und Bytestrom?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Zeitstempel für Datum in Java Zeitstempel für Datum in Java Aug 30, 2024 pm 04:28 PM

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

Java -Programm, um das Kapselvolumen zu finden Java -Programm, um das Kapselvolumen zu finden Feb 07, 2025 am 11:37 AM

Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4

Gestalten Sie die Zukunft: Java-Programmierung für absolute Anfänger Gestalten Sie die Zukunft: Java-Programmierung für absolute Anfänger Oct 13, 2024 pm 01:32 PM

Java ist eine beliebte Programmiersprache, die sowohl von Anfängern als auch von erfahrenen Entwicklern erlernt werden kann. Dieses Tutorial beginnt mit grundlegenden Konzepten und geht dann weiter zu fortgeschrittenen Themen. Nach der Installation des Java Development Kit können Sie das Programmieren üben, indem Sie ein einfaches „Hello, World!“-Programm erstellen. Nachdem Sie den Code verstanden haben, verwenden Sie die Eingabeaufforderung, um das Programm zu kompilieren und auszuführen. Auf der Konsole wird „Hello, World!“ ausgegeben. Mit dem Erlernen von Java beginnt Ihre Programmierreise, und wenn Sie Ihre Kenntnisse vertiefen, können Sie komplexere Anwendungen erstellen.

See all articles