黑马程序员--Object

---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! ------------------------

Object    所有对象的直接或者间接地父类,该类中定义的是所有对象都具备的功能。
  java中所有对象都具备比较性,都能比较是否相同。
  equals  比较两个对象的内存地址

public class ObjectDemo {
 public static void main(String[] args) {
  
 
 ObjectDemo d1=new ObjectDemo();//当这个对象建立,他就具有了方法,是
                                //Object超类中所有的方法
 ObjectDemo d2=new ObjectDemo();
 ObjectDemo d3=d1;
 System.out.println(d1.equals(d2));//其实比较的是内存地址 false
 System.out.println(d1.equals(d3));// true
 System.out.println(d1==d2);//false
 System.out.println(d1==d3);//true
}
}


 

----------------------------------------------------
ClassCastException类型转化异常


如果自定义类中也有比较相同的功能,没有必要重新定义,只要沿袭父类中的功能,建立自己特有的比较内容即可,就是覆盖。

package biji.object;

public class Demo {
 int num;
 Demo(int num){
  this.num=num;
 }
 public boolean equals(Object obj){//复写Object中的equals方法,复写哦!
           //Object obj=new Demo 多态
  Demo d=(Demo)obj;  //向下转型
  return this.num==d.num;
 }
}
package biji.object;

public class ObjectDemo {
  
 
 public static void main(String[] args) {
  
 
 Demo d1=new Demo(4);//当这个对象建立,他就具有了方法,是Object超类
                                //中所有的方法
 Demo d2=new Demo(5);
 System.out.println(d1.equals(d2));
 
}

 
 }//结果false



------------------------------------------------------

package biji.object;

public class Person {

}
package biji.object;

public class Demo {
 int num;
 Demo(int num){
  this.num=num;
 }
 public boolean equals(Object obj){
  
  if(!(obj instanceof Demo)){//instanceof是一个二元操作符(运算符),
                          //和==,>,<是同一类东西。
                         //由于它是由字母组成的,所以也是Java的保留关键字。
                          //它的作用是判断其左边对象是否为其右边类的实例,返回boolean类型的数据。
                           //可以用在继承中的子类的实例是否为父类的实现。
   return false;
  }else{
  Demo d=(Demo)obj; 
  return this.num==d.num;
  }
 }
}
package biji.object;

public class ObjectDemo {
  
 
 public static void main(String[] args) {
  
 
 Demo d1=new Demo(4);
 
 Person p=new Person();
 System.out.println(d1.equals(p));//这里p是不能和d1比的。不是一个类型。编译会通过
     //但是运行会出错。我们需要写一个判断语句,在Demo
     //类中。
     
}

 
 }



-----------------------------------------------------------------------------------------------------------
  JAVA认为所有的对象都能被变成字符串打印


 

package biji.toString;
public class Demo {
 int num;
 Demo(int num){
  this.num=num;
 }
 

}
package biji.toString;

public class ObjectDemo2 {
 public static void main(String[] args) {
  Demo d1=new Demo(5);
  System.out.println(d1.toString());//对象返回字符串,是个地址名
    System.out.println(d1.hashCode());//对象哈希值 ,十进制的。
  System.out.println(Integer.toHexString(d1.hashCode()));//哈希值

  Class c=d1.getClass();
  System.out.println(c.getName());//获取对象名
  
 }

}//结果为biji.toString.Demo@150bd4d
 22068557
 150bd4d
        biji.toString.Demo

 


 

 

 

---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! ------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值