Einführung
In diesem Lab werden Sie die hashCode()-Methode in der Float-Klasse von Java kennenlernen. Diese Methode wird verwendet, um den Hash-Code eines float-Werts zu erhalten. Ein Hash-Code ist ein eindeutiger ganzzahliger Wert, der mit jedem Objekt in Java assoziiert ist. In diesem Lab werden Sie durch verschiedene Codebeispiele geführt, die zeigen, wie die hashCode()-Methode verwendet werden kann.
Erstellen einer neuen Java-Datei
Erstellen Sie zunächst eine neue Java-Datei unter ~/project/FloatHashcode.java mit dem folgenden Befehl:
touch ~/project/FloatHashcode.java
Definieren von Float-Variablen
In diesem Schritt definieren Sie zwei Float-Variablen und initialisieren sie mit zwei unterschiedlichen float-Werten. Importieren Sie auch die Float-Klasse aus dem java.lang-Paket.
import java.lang.Float;
public class FloatHashcode {
public static void main(String[] args) {
Float n1 = 2.3456F;
Float n2 = -4.567F;
}
}
Den Hash-Code mithilfe der hashCode()-Methode von Float erhalten
In diesem Schritt verwenden Sie die hashCode()-Methode der Float-Klasse, um den Hash-Code der im vorherigen Schritt definierten Float-Variablen zu erhalten.
import java.lang.Float;
public class FloatHashcode {
public static void main(String[] args) {
Float n1 = 2.3456F;
Float n2 = -4.567F;
int hash1 = n1.hashCode(); // get hash code of n1
int hash2 = n2.hashCode(); // get hash code of n2
System.out.println("Hash code for n1 is " + hash1);
System.out.println("Hash code for n2 is " + hash2);
}
}
Um die Datei zu kompilieren und auszuführen, führen Sie die folgenden Befehle im Terminal aus:
javac ~/project/FloatHashcode.java
java FloatHashcode
Hash-Code für Benutzereingabe erhalten
In diesem Schritt erstellen Sie ein Programm, das den Benutzer auffordert, einen float-Wert einzugeben, den Hash-Code der Eingabe mithilfe der hashCode()-Methode der Float-Klasse erhält und dann den Hash-Code in der Konsole ausgibt.
import java.util.Scanner;
import java.lang.Float;
public class FloatHashcode {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a float value: ");
float input = scanner.nextFloat();
Float n = input;
int hashCode = n.hashCode();
System.out.println("Hash code for the input " + input + " is " + hashCode);
}
}
Um die Datei zu kompilieren und auszuführen, führen Sie die folgenden Befehle im Terminal aus:
javac ~/project/FloatHashcode.java
java FloatHashcode
Vergleiche die Hash-Codes von zwei Float-Werten
In diesem Schritt erstellen Sie ein Programm, das die Hash-Codes von zwei Float-Werten vergleicht.
import java.lang.Float;
public class FloatHashcode {
public static void main(String[] args) {
Float n1 = 2.3456F;
Float n2 = 2.3456F;
int hash1 = n1.hashCode();
int hash2 = n2.hashCode();
if (hash1 == hash2) {
System.out.println("The hash codes of n1 and n2 are equal");
} else {
System.out.println("The hash codes of n1 and n2 are not equal");
}
}
}
Um die Datei zu kompilieren und auszuführen, führen Sie die folgenden Befehle im Terminal aus:
javac ~/project/FloatHashcode.java
java FloatHashcode
Überschreibe die hashCode()-Methode in einer Klasse
In diesem Schritt werden wir die hashCode()-Methode in einer Klasse überschreiben. Hier erstellen wir eine MyClass-Klasse mit zwei float-Variablen a und b. Anschließend überschreiben wir die hashCode()-Methode in der Klasse und berechnen den Hash-Code des Objekts mit der Formel (31 * Float.floatToIntBits(a)) + Float.floatToIntBits(b).
import java.lang.Float;
class MyClass {
float a;
float b;
public MyClass(float a, float b) {
this.a = a;
this.b = b;
}
@Override
public int hashCode() {
return (31 * Float.floatToIntBits(a)) + Float.floatToIntBits(b);
}
}
public class FloatHashcode {
public static void main(String[] args) {
MyClass obj = new MyClass(2.3456F, -4.567F);
int hash = obj.hashCode();
System.out.println("Hash code for obj is " + hash);
}
}
Um die Datei zu kompilieren und auszuführen, führen Sie die folgenden Befehle im Terminal aus:
javac ~/project/FloatHashcode.java
java FloatHashcode
Nullzeiger behandeln
In diesem Schritt erstellen Sie ein Programm, das Null-Pointer behandelt, wenn der Hash-Code eines Float-Objekts abgerufen wird.
import java.lang.Float;
public class FloatHashcode {
public static void main(String[] args) {
Float n = null;
int hash = (n!= null)? n.hashCode() : 0;
System.out.println("Hash code for n is " + hash);
}
}
Um die Datei zu kompilieren und auszuführen, führen Sie die folgenden Befehle im Terminal aus:
javac ~/project/FloatHashcode.java
java FloatHashcode
Verwenden Sie Objects.hashCode(), um den Hash-Code zu erhalten
In diesem Schritt verwenden wir die Objects.hashCode()-Methode, um den Hash-Code eines Float-Objekts zu erhalten. Diese Methode gibt einen Hash-Code für jedes an sie übergebene Objekt zurück und behandelt Null-Pointer 优雅地。
import java.lang.Float;
import java.util.Objects;
public class FloatHashcode {
public static void main(String[] args) {
Float n = null;
int hash = Objects.hashCode(n);
System.out.println("Hash code for n is " + hash);
}
}
Um die Datei zu kompilieren und auszuführen, führen Sie die folgenden Befehle im Terminal aus:
javac ~/project/FloatHashcode.java
java FloatHashcode
Verwenden Sie Float.hashCode(float) für primitive Floats
In diesem Schritt verwenden wir die Float.hashCode(float)-Methode, um den Hash-Code eines primitiven float-Werts zu erhalten. Diese Methode liefert denselben Hash-Code wie die floatToIntBits(float)-Methode.
import java.lang.Float;
public class FloatHashcode {
public static void main(String[] args) {
float f = 2.3456F;
int hash = Float.hashCode(f);
System.out.println("Hash code for f is " + hash);
}
}
Um die Datei zu kompilieren und auszuführen, führen Sie die folgenden Befehle im Terminal aus:
javac ~/project/FloatHashcode.java
java FloatHashcode
Verwenden Sie Float.floatToIntBits(float), um die ganzzahlige Darstellung eines Floats zu erhalten
In diesem Schritt verwenden wir die Float.floatToIntBits(float)-Methode, um die ganzzahlige Darstellung eines float-Werts zu erhalten. Diese Methode liefert dieselbe ganzzahlige Darstellung, die zur Berechnung des Hash-Codes eines float-Werts verwendet wird.
import java.lang.Float;
public class FloatHashcode {
public static void main(String[] args) {
float f = 2.3456F;
int intBits = Float.floatToIntBits(f);
System.out.println("Integer representation of f is " + intBits);
}
}
Um die Datei zu kompilieren und auszuführen, führen Sie die folgenden Befehle im Terminal aus:
javac ~/project/FloatHashcode.java
java FloatHashcode
Zusammenfassung
In diesem Lab haben Sie die hashCode()-Methode der Float-Klasse in Java kennengelernt. Sie haben gelernt, wie man den Hash-Code eines float-Werts erhält, die hashCode()-Methode in einer Klasse überschreibt, die Objects.hashCode()-Methode verwendet und Null-Pointer behandelt, wenn der Hash-Code eines Objekts abgerufen wird. Sie haben auch die floatToIntBits(float)-Methode kennengelernt, die zur Erhaltung der ganzzahligen Darstellung eines float-Werts verwendet wird.



