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

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

php是最好的语言
Freigeben: 2018-08-04 11:36:58
Original
1550 Leute haben es durchsucht

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!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage