零基础Java:第十二讲(Object类、对象类型转换)

280 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

Object类

  • Object类

    • Object类是所有Java类的根父类(基类)。即多层继承,处于最高层的父类一定是Object类
    • 如果在类的声明中未使用extends关键字指明其父类,则默认父类为Object类
    • Object类中的主要方法

      • 注:

        • 对象比较指的是引用对象的比较
        • toString输出对象内存地址

对象类型转换

  • 对象类型转换

    • 基本数据类型的Casting

      • 自动类型转换:小的数据类型可以自动转换为 大的数据类型;
      • 例如:long g=20;double d=12.0f;
      • 强制类型转换:可以把大的数据类型强制转换(casting)成小的数据类型
      • 例如:float f=(float)12.0;int a=(int)1200L;
    • 对java对象的强制类型转换称为造型

      • 从子类到父类的类型转换可以自动进行
      • 从父类到子类的类型转换必须通过造型(强制类型转换)实现
      • 无继承关系的引用类型间的转换是非法的
    • 对象类型转换举例

      • Person类
      • Student类
      • Test类
    • 总结
  • ==操作符与equals()方法

    • ==操作符

      • 基本类型比较值:只要两个变量的值相等,即为true。例如:int a=1;if(a==6){……}
      • 引用类型比较引用(是否指向同一个对象):只有指向同一个对象时,==才返回true
      • 注:使用“==”进行比较时,符号两边的数据类型必须兼容(可以自动转换的基本数据类型除外),否则编译出错
    • equals()

      • 所有类都继承了Object,也就是得到了equals()方法。还可以重写。

        • 只能比较引用类型,其作用与“==”相同,比较是否指向同一个对象。格式:obj1.equals(obj2)
      • 特例:当用equals()方法进行比较时,对类File、String、Date及包装类(Wrapper Class)来说,是比较类的内容而不考虑引用是否是同一个对象;

        • 原因:在这些类中重写了Object类的equals()方法。
    • 总结

      • 特殊的类:File、String、Date及包装类(Wrapper Class),使用==比较的是对象(对象的堆内存地址),equals比较的是内容
      • 除了特殊类之外的其他普通类:==和equals比较的都是对象(对象的堆内存地址)
      • 如果想改变某个类的equals,重写即可