对象 课堂在教室里 JAVA朗 包裹Java中的每个类都直接或间接地从 对象 班如果一个类不扩展任何其他类,那么它就是 对象 如果扩展了另一个类,那么它是间接派生的。因此,所有Java类都可以使用对象类方法。因此,对象类在任何Java程序中都充当继承层次结构的根。
使用对象类方法
有很多方法 对象 课程:
1.toString(): toString()提供对象的字符串表示形式,用于将对象转换为字符串。class Object的默认toString()方法返回一个字符串,该字符串由对象作为实例的类的名称、at符号字符“@”和对象哈希代码的无符号十六进制表示形式组成。换句话说,它的定义是:
// Default behavior of toString() is to print class name, then// @, then unsigned hexadecimal representation of the hash code// of the objectpublic String toString(){ return getClass().getName() + "@" + Integer.toHexString(hashCode());}
始终建议覆盖 toString() 方法来获取我们自己的对象字符串表示形式。有关重写toString()方法的更多信息,请参阅– 在Java中重写toString()
注: 每当我们试图打印任何对象引用时,就会在内部调用toString()方法。
Student s = new Student();// Below two statements are equivalentSystem.out.println(s);System.out.println(s.toString());
2.hashCode(): 对于每个对象,JVM都会生成一个唯一的数字,即哈希代码。它为不同的对象返回不同的整数。关于这个方法的一个常见误解是hashCode()方法返回对象的地址,这是不正确的。它使用算法将对象的内部地址转换为整数。hashCode()方法是 出生地的 因为在Java中不可能找到对象的地址,所以它使用C/C++等本地语言来查找对象的地址。
hashCode()方法的使用: 它返回用于搜索集合中对象的哈希值。JVM(Java Virtual Machine)在将对象保存到哈希相关的数据结构(如哈希集、哈希映射、哈希表等)时使用哈希代码方法。基于哈希代码保存对象的主要优点是搜索变得容易。
注: 推翻 hashCode() 方法需要为每个对象生成一个唯一的数字。例如,对于一个学生类,我们可以从hashCode()方法返回学生的卷号,因为它是唯一的。
JAVA
// Java program to demonstrate working of // hashCode() and toString() public class Student { static int last_roll = 100 ; int roll_no; // Constructor Student() { roll_no = last_roll; last_roll++; } // Overriding hashCode() @Override public int hashCode() { return roll_no; } // Driver code public static void main(String args[]) { Student s = new Student(); // Below two statements are equivalent System.out.println(s); System.out.println(s.toString()); } } |
输出:
Student@64Student@64
注意4*16 0 + 6*16 1. = 100
3.相等(对象obj): 它将给定对象与“this”对象(调用方法的对象)进行比较。它提供了一种比较对象是否相等的通用方法。建议覆盖 等于(对象obj) 方法来获得对象上的相等条件。有关替代equals(对象obj)方法的更多信息,请参阅—— Java中重写equals方法
注: 通常有必要覆盖 hashCode() 方法,以便维护hashCode方法的一般约定,该约定规定相等的对象必须具有相等的哈希代码。
4.getClass(): 它返回“this”对象的类对象,并用于获取该对象的实际运行时类。它还可以用于获取此类的元数据。返回的类对象是由所表示类的静态同步方法锁定的对象。因为它是最终的,所以我们不会推翻它。
JAVA
// Java program to demonstrate working of getClass() public class Test { public static void main(String[] args) { Object obj = new String( "GeeksForGeeks" ); Class c = obj.getClass(); System.out.println( "Class of Object obj is : " + c.getName()); } } |
输出:
Class of Object obj is : java.lang.String
注: 在加载一个。类文件,JVM将创建以下类型的对象 JAVA朗.班 在堆区。我们可以使用这个类对象来获取类级别的信息。它被广泛应用于工业领域 反射
5.finalize()方法: 在垃圾收集对象之前调用此方法。它被称为 垃圾收集器 当垃圾收集器确定不再有对对象的引用时。我们应该重写finalize()方法来处理系统资源、执行清理活动并最大限度地减少内存泄漏。例如,在销毁Servlet对象web容器之前,总是调用finalize方法来执行会话的清理活动。
注: finalize方法被称为just 一旦 在一个对象上,即使该对象符合多次垃圾收集的条件。
JAVA
// Java program to demonstrate working of finalize() public class Test { public static void main(String[] args) { Test t = new Test(); System.out.println(t.hashCode()); t = null ; // calling garbage collector System.gc(); System.out.println( "end" ); } @Override protected void finalize() { System.out.println( "finalize method called" ); } } |
输出:
366712642finalize method calledend
6.克隆(): 它返回一个与此对象完全相同的新对象。有关clone()方法,请参阅 克隆() .
剩下的三种方法 等等 , 通知 notifyAll() 与并发性相关。提到 Java中的线程间通信 详细信息。