Object类常用的3种方法

Object 类JAVA中一个特殊的类。它是JAVA中所有类的父类,JAVA中的类都会直接或者间接的继承自Object类,如果一个类没有显示extends其他类,则默认该类继承自Object类。
用法:
1.int hashCode()返回对象的哈希码值

hashCode()表示的是从JVM虚拟机为这个Object对象分配的一个int类型的数值,即返回该对象的哈希码值,此方法是为了提高哈希表的效率。示例如下:


public class Demo1_HashCode {
 
	public static void main(String[] args) {
		Object obj1=new Object();
		int s1=obj1.hashCode();
		System.out.println(s1);
 
	}
 }

 

运行结果:
617901222

2.public boolean equals(Object obj)  指示一些其他对象是否等于此对象。

equals方法在非空对象引用上实现等价关系:

自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。

对于任何非空引用值 x,x.equals(null) 都应返回 false。
Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。

与“==”的区别

“==”比较两个变量本身的值,即两个对象在内存中的首地址。

“equals()”比较字符串中所包含的内容是否相同。

示例如下:

public static void main(String[] args) {
		String s1,s2,s3 = "ydd", s4 ="ydd" ;
		s1 = new String("ydd");
		s2 = new String("ydd");
		if(s1 == s2){
			System.out.println("ture");
		}else System.out.println("false");
		
		if(s1.equals(s2)){
			System.out.println("ture");
		}else System.out.println("false");
		
		if(s3 == s4){
			System.out.println("ture");
		}else System.out.println("false");
		
		if(s3.equals(s4)){
			System.out.println("ture");
		}else System.out.println("false");

	}
运行结果
false
ture
ture
ture

可以看到s1==s2结果为false,因为两个变量的内存地址不一样,即他们指向的对象不同

而s1.equals(s2)结果为ture,因为两个变量所包含的内容“ydd”相同

但s3和s4是两个字符串常量所生成的变量,在JAVA中其中所存放的内存地址是相等的,所以s3==s4是true

3.toString() 把对象的内容以字符串的形式展现

toString类方法Object返回一个由其中的对象是一个实例,该符号字符`的类的名称的字符串@ ”和对象的哈希码的无符号的十六进制表示。 换句话说,这个方法返回一个等于下列值的字符串:

getClass().getName() + '@' + Integer.toHexString(hashCode())

结果:对象的字符串表示形式。

示例如下:

Integer ydd = 2019;
		System.out.println(ydd.toString());  
		System.out.println(Integer.toString(1121)); 
运行结果:
2019
1121

 

你可能感兴趣的:(Object类常用的3种方法)