一.3常用API第二部分 1.Object类

一.3常用API第二部分

1.Object类

java.lang.Object
* 类 Object 是类层次结构的根(父)类。
* 每个类(包括自定义的类)都使用 Object 作为超(父)类。
* 所有对象(包括数组)都实现这个类的方法。

ToString方法

Person(自己定义的)类默认继承object类,使用可以使用object里的toString方法
* toString() 返回该对象的字符串表示
直接打印对象地址值没有意义,需要重写object类的toString方法(在Person里)
可以alt+insert自动重写或者Code-->Generate
//看一个类是否重写toStrong方法,直接打印这个类的对象即可,如果是地址值就是没有重写,如果不是则重写了toString方法
      Random r=new Random();
        System.out.println(r);//java.util.Random@74a14482

equals方法

equals(Object obj)
          指示其他某个对象是否与此对象“相等”。
          equals方法源码:
public boolean equaLs (object obj) {
return (this ==obj)
参数:
object obj: 可以传递任意的对象
==比较运算符,返回的是一个布尔值true false
基本数据类型:比较的是值
引用数据类型:比价的是两个对象的地址值
this是谁?那个对象调用的方法,方法中的this就是那个对象;p1调用的equals方法
obj是谁?传递过来的参数p2     this==obj -->p1==p2
          */         
/*object类的equals万法,默认比较的是两个对象的地址值,没有意义
所以我们要重写equals方法,比较两个对象的属性(name, age)
问题:
隐合着一个多态
多态的弊端:无法使用子类特有的内容(属性和方法)
object obj=p2=new Person("理论论",8);父类指向子类,无法使用子类的特有内容(性别,年龄)
解决:可以使用向下转型(强转)把obj类型转换为Person*/
​
使用: boolean b=p1.equals(p2);此前要把p1,p(赋值)例如
Person p1=new Person("增长率",5);  (Person是写好的类)
Person p2=new Person("增长率",5);
重写equals时,为了防止出现异常和提高程序效率需要增加几个假设
在此情况下①
 boolean b=p1.equals(null);
 所以在重写equals时增加
//增加一个判断,传递的参数obj如果是null,直接返回false,提高程序的效率
        if (obj==null){
            return false;
        }
②
出现 boolean b=s1.equals(s1);为了提高效率,在重写equals时
//        增加一个判断,传递的参数obj如果是this本身,直接返回true,提高程序效率
        if (obj==this){
            return true;
        }
③是防止//增加一个判断,防止类型转换错误
使用强转
​
Object中的Equals方法
​
    String s1="aaa";
    //String s2=null;
//  boolean b=s1.equals(s2);// NullPointerException null是不能调用方法的,会出现空指针异常  
    所以使用objects类的equals方法:对两个对象进行比较,防止空指针异常
        /*public static equals(Object a,Object b){
            return (a==b)||(a !=null&& a.equals(b);
            }
        使用:    boolean b2= Objects.equals(s1,s2);
​
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值