hashCode和getClass方法

发布时间 2023-06-08 20:32:17作者: 姜姜萸
//Student类 /* * public int hashCode()返回对象的哈希码值。 * public final 类 getClass()返回此Object的运行时类。 * public String toString()返回对象的字符串表示形式。 * ctrl + 左键查看源码 eclipse * ctrl+Alt+左箭头 返回上一次的鼠标位置 * */ public class Student extends Object{ @Override public int hashCode() { return super.hashCode(); } @Override public String toString() { return super.toString(); } public String toString2() { //如何转16进制 //Integer的toHexString()可以把10进制的数转换为十六进制,并且以字符串返回 //toString方法就是将本类的位置+@+十六进制哈希值 //public static String toHexString(int i)静态方法可以直接调用 //返回整数参数的字符串表示形式,作为16位中的无符号整数。 String a = Integer.toHexString(hashCode()); return this.getClass().getName()+"@"+a; } } //测试类 /* * 默认情况下,每个对象内存中的内存都不一样,所以哈希值也不一样 * 重写父类的hashCode方法就可以使哈希值一样*/ public class Student_Test { public static void main(String[] args) { Student s = new Student(); Student s2 = new Student(); Student s3 = s; //public int hashCode()返回对象的哈希码值。十进制 System.out.println(s.hashCode()); System.out.println(s2.hashCode()); System.out.println(s3.hashCode()); System.out.println("----------------"); //public final 类 getClass()返回此Object的运行时类。 System.out.println(s.getClass()); System.out.println(s2.getClass()); Class aClass = s.getClass(); //Alt+Enter 自动返回犯法1的类型及对象 Class aClass2 = s2.getClass(); boolean b = (aClass == aClass2); System.out.println(b); System.out.println("----------------"); //在一个程序运行过程中,同一类创建的对象所使用的都是通一份字节码文件 //Class类的第一个方法getName() //打印的时候打的是类的大名,全路径是名称 String name = aClass.getName(); //链式编程 System.out.println("----------------"); String name2 = s2.getClass().getName(); System.out.println(name); System.out.println("----------------"); //public String toString()返回对象的字符串表示形式。 //返回的是对象文本的表现形式,如果没有重写该方法,打印的结果由3部分组成 //1.该路径的完整名称(gatClass -->Class对象-->Class对象的getName) //2.@字符(在1的基础上进行拼接) //3.十六进制逻辑内存的地址值 System.out.println(s.toString()); System.out.println(s2.toString()); System.out.println(s.getClass().getName()); System.out.println("----------------"); System.out.println(s.toString2()); System.out.println(s2.toString2()); System.out.println("----------------"); //public static String toHexString(int i)静态方法可以直接调用 int i = 12333390; System.out.println("12333390转16进制为:"+Integer.toHexString(i)); } }