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");
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); }
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)); } }
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); }
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); }
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; }
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; }
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; }
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; }
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:
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!