Object:所有类的超类

2019-03-20  本文已影响0人  十六只猴子王

如果没有确的指出指出超类,Object就被认为是这个类的超类,在java中,每个类都属于Object的类扩展出来的,可以使用Object类型的变量引用任何类型的对象

Object obj=new Employee("Harry Hacker",35000);

Object类型的变量变量只能作用于各种值的通用持有者,要想对其中的内容进行具体的操作,还需要清楚对象的原始类型,并进行相应的类型转换

Employee e = (Employee) obj;

在java中,只有基本类型不是对象,所有的数组类型,不管是对象数组还是进本类型的数组都扩展了Object类

equals方法

equals方法用于检测一个对象是否等于另一个对象,如果两个对象具有相同的引用,他们就一定是相等的

java.util.Arrays;
static Boolean equals(type[] a, type[] b)

如果两个数组长度相同,并且在对应位置上的数据元素也相同,将返回true。
java.util.Objects

static boolean equals(Object a, Object b)

如果a和b都为null,返回true;如果只有其中之一为null,返回false;否则返回a.equals(b)。

hashCode方法

散列码(hash code)是由对象导出的一个整型值。散列码是没有规律的。如果x和y是两个不同的对象,x.hashCode()与y.hashCode()基本不会相同。hashCode()方法应该返回一个整形数值(也可以是负数),并合理地组合实例域的散列码,以便能够让各个不同的对象产生的散列码更加均匀。

java.lang.Object
int hashCode()

返回对象的散列码(其值为对象的存储地址)。

java.util.Objects
static int hash(Object… objects)

对各个参数调用Objects.hashCode,并组合这些散列值。

static int hashCode(Object a)

如果a为null,返回0;否则,返回a.hashCode()。

java.lang.(Integer|Long|Short|Byte|Double|Float|Character|Boolean)
static int hashCode((int|long|short|byte|double|float|char|boolean) value)

返回给定值的散列码。

java.util.Arrays
static int hashCode(type[] a)

计算数组a的散列码。

toString方法

toString()方法返回反映这个对象的字符串, 它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法

true.toString();//'true'
false.toString();//'false'
'1'.toString();//'1'
''.toString();//''
'abc'.toString();//'abc'
(0).toString();//'0'
(-0).toString();//'0'
(+1.2).toString();//'1.2'
(-1.2).toString();//'-1.2'
var n = 17;
n.toString();//'17'
n.toString(2);//'10001'
n.toString(8);//'21'
n.toString(10);//'17'
n.toString(12);//'15'
n.toString(16);//'11'

eg:

public class Orc
{
       public static class A
       {
              public String toString()
              {
                     return "this is A";
              }
       }
       public static void main(String[] args)
       {
              A obj = new A();
              System.out.println(obj);
       }
}

this is A

System.out.println(System.out)

java.io.PrintStream@2f6684

上一篇 下一篇

猜你喜欢

热点阅读