Heim Java javaLernprogramm Detaillierte Analyse des Quellcodes der Byte-Klasse in Java – Schrittdetails

Detaillierte Analyse des Quellcodes der Byte-Klasse in Java – Schrittdetails

Aug 04, 2018 am 11:36 AM

Lassen Sie uns heute den Quellcode der Klasse java.lang.Byte analysieren und direkt zum Thema übergehen

Zunächst einmal

public final class Byte extends Number implements Comparable<Byte> {
public static final byte   MIN_VALUE = -128;
public static final byte   MAX_VALUE = 127;
public static final int SIZE = 8;
public static final int BYTES = SIZE / Byte.SIZE;
    @SuppressWarnings("unchecked")
    public static final Class<Byte>     TYPE = (Class<Byte>) Class.getPrimitiveClass("byte");
Nach dem Login kopieren

Der erste Satz der Klasse Byte ist endgültig geändert und kann nicht vererbt werden. Die Number-Klasse kann für eine Reihe von Konvertierungen numerischer Typen verwendet werden. Sie implementiert die Comparable-Schnittstelle, die zum Vergleich verwendet werden kann .
Der vierte Satz definiert die Größe von Byte, also ein Byte.
Der fünfte Satz gibt das Byte an, also SIZE/Byte.SIZE = 1 Der mit Anmerkungen versehene Satz, der für Warnungen stumm bleibt, lautet „Holen Sie sich die beiden Konstruktoren der ursprünglichen Klasse

    public Byte(byte value) {
        this.value = value;
    }
    public Byte(String s) throws NumberFormatException {
        this.value = parseByte(s, 10);
    }
Nach dem Login kopieren

Byte-Klasse“. Der übergebene Wert muss ein Byte-Typwert sein, und die Zeichenfolge muss sein eine Zeichenfolge sein, die in eine Zahl konvertiert werden kann.

    public static String toString(byte b) {
        return Integer.toString((int)b, 10);
    }
    public String toString() {
        return Integer.toString((int)value);
    }
    private static class ByteCache {
        private ByteCache(){}

        static final Byte cache[] = new Byte[-(-128) + 127 + 1];

        static {
            for(int i = 0; i < cache.length; i++)
                cache[i] = new Byte((byte)(i - 128));
        }
    }
Nach dem Login kopieren

Als nächstes folgt die Methode toString, die den Bytetyp in eine Zeichenfolge konvertiert verwendet
  • unten Die ByteCache-Methode definiert einen Byte-Cache-Wert und schreibt -128~127 in ein Cache-Array. Wenn er innerhalb dieses Bereichs liegt, verwendet die JVM den Cache direkt Wert, aber wenn er diesen Bereich überschreitet, kommt es zu einem Überlauf. Wie im vorherigen Artikel erwähnt, wird 128 zu -128 und die Schleifenberechnung wird ab dem Mindestwert fortgesetzt.

parseByte analysiert den String-Typ in den Byte-Typ , Radix ist die Basis, Radix ist die Zahl und s ist eine Dezimalzahl, das Ergebnis nach dem Parsen ist eine Dezimalzahl

    public static Byte valueOf(byte b) {
        final int offset = 128;
        return ByteCache.cache[(int)b + offset];
    }
    public static Byte valueOf(String s, int radix)
        throws NumberFormatException {
        return valueOf(parseByte(s, radix));
    }
    public static Byte valueOf(String s) throws NumberFormatException {
        return valueOf(s, 10);
    }
Nach dem Login kopieren

Konvertieren Sie den Wert des eingehenden Parameters in den Byte-Typ, hier ist er Die Methode zum Aufhängen des Parameters radix besteht darin, zuerst die Zeichenfolge in eine Dezimalzahl zu analysieren und dann valueOf

    public static Byte decode(String nm) throws NumberFormatException {
        int i = Integer.decode(nm);
        if (i < MIN_VALUE || i > MAX_VALUE)
            throw new NumberFormatException(
                    "Value " + i + " out of range from input " + nm);
        return valueOf((byte)i);
    }
Nach dem Login kopieren

auszuführen. Dies ist eine Decodierungs- und Transcodierungsmethode. Die vorherige Methode wurde nicht so geschrieben Jetzt wird die Dekodierungsmethode der Integer-Klasse direkt aufgerufen und dann beurteilt, ob sie kleiner als der Mindestwert oder größer als der Maximalwert ist. Dann wird sie in den Byte-Typ konvertiert und nun wird der Satz tatsächlich zurückgegeben. Byte-Typ existiert in Java nicht“

    public byte byteValue() {
        return value;
    }
    public short shortValue() {
        return (short)value;
    }
    public int intValue() {
        return (int)value;
    }
    public long longValue() {
        return (long)value;
    }
    public float floatValue() {
        return (float)value;
    }
    public double doubleValue() {
        return (double)value;
    }
Nach dem Login kopieren

Dies sind einige Methoden der erzwungenen Typkonvertierung, die sehr einfach sind, aber trotzdem schreiben

    @Override
    public int hashCode() {
        return Byte.hashCode(value);
    }
    public static int hashCode(byte value) {
        return (int)value;
    }
Nach dem Login kopieren

Der erste hashCode ist eine Überschreibung der hasnCode-Methode von Objekt, das zum Vergleichen zweier Werte verwendet wird, insbesondere bei Interviews. Dies wird jetzt nicht im Detail erläutert. Die hashCode-Methode wird hauptsächlich in

    public boolean equals(Object obj) {
        if (obj instanceof Byte) {
            return value == ((Byte)obj).byteValue();
        }
        return false;
    }
Nach dem Login kopieren

equals verwendet Nun lohnt sich ein Vergleich.

    public int compareTo(Byte anotherByte) {
        return compare(this.value, anotherByte.value);
    }
    public static int compare(byte x, byte y) {
        return x - y;
    }
Nach dem Login kopieren

Vergleichsmethode: Wenn x > y, gibt sie eine positive Zahl zurück, wenn x = y, gibt sie 0 zurück. Wenn x < Ich verstehe den Serialisierungsprozess nicht ganz. . . .

  • Verwandte Artikel:

  • Java Int zu Byte und Long zu Byte

Puffer-Quellcode in Java analysieren

Das obige ist der detaillierte Inhalt vonDetaillierte Analyse des Quellcodes der Byte-Klasse in Java – Schrittdetails. 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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

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)

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Mar 17, 2025 pm 05:35 PM

Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Mar 17, 2025 pm 05:44 PM

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

Wie kann ich funktionale Programmierungstechniken in Java implementieren? Wie kann ich funktionale Programmierungstechniken in Java implementieren? Mar 11, 2025 pm 05:51 PM

In diesem Artikel wird die Integration der funktionalen Programmierung in Java unter Verwendung von Lambda -Ausdrücken, Streams -API, Methodenreferenzen und optional untersucht. Es zeigt Vorteile wie eine verbesserte Lesbarkeit der Code und die Wartbarkeit durch SUKTIVE UND VERUSNAHMETALITÄT

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden? Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden? Mar 17, 2025 pm 05:43 PM

In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Mar 17, 2025 pm 05:46 PM

In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

Wie verwende ich Javas NIO-API (neue Eingang/Ausgabe) für nicht blockierende I/O? Wie verwende ich Javas NIO-API (neue Eingang/Ausgabe) für nicht blockierende I/O? Mar 11, 2025 pm 05:51 PM

In diesem Artikel werden die NIO-API von Java für nicht blockierende E/A erläutert, wobei Selektoren und Kanäle verwendet werden, um mehrere Verbindungen effizient mit einem einzelnen Thread zu verarbeiten. Es beschreibt den Prozess, die Vorteile (Skalierbarkeit, Leistung) und mögliche Fallstricke (Komplexität,

Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement? Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement? Mar 17, 2025 pm 05:45 PM

In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.

Wie verwende ich Javas Sockets -API für die Netzwerkkommunikation? Wie verwende ich Javas Sockets -API für die Netzwerkkommunikation? Mar 11, 2025 pm 05:53 PM

In diesem Artikel wird die Socket-API von Java für die Netzwerkkommunikation beschrieben, die das Setup des Client-Servers, die Datenbearbeitung und entscheidende Überlegungen wie Ressourcenverwaltung, Fehlerbehandlung und Sicherheit abdeckt. Es untersucht auch die Leistungsoptimierungstechniken, ich

See all articles