1.Object类是所有类的父类

  声明一个类的时候,实际上已经默认继承了Object类 

  1. package property;
  2.  
  3. public class Hero extends Object{
  4. String name;
  5. float hp;
  6. float armor;
  7. int moveSpeed;
  8.  
  9. public void useItem(Item i){
  10. System.out.println("Hero use item");
  11. i.effect();
  12. }
  13.  
  14. public Hero(){
  15. System.out.println("Hero的无参构造方法");
  16. }
  17.  
  18. public Hero(String name){
  19. System.out.println("Hero的有参构造方法");
  20. this.name=name;
  21. }
  22.  
  23. public static void main(String[] args){
  24. new Hero();
  25. }
  26. }

2.toString()方法

  Object类提供一个toString()方法,所以所有的类都有toString()方法,返回当前对象的字符串表达

  1. package property;
  2. public class Hero{
  3. String name;
  4. protected float hp;
  5.  
  6. public String toString(){
  7. return name;
  8. }
  9.  
  10. public static void main(String[] args){
  11. Hero h=new Hero();
  12. h.name="demo";
  13. System.out.println(h.toString());
  14. System.out.println(h);//直接打印对象就是打印对象的toString()返回值
  15. }
  16. }

3.finalize()方法

  当一个对象没有任何引用指向的时候,它就满足垃圾回收的条件,当他被垃圾回收的时候,他的finalize()方法就会被调用

finalize()方法不是开发人员主动调用的方法,而是由JVM调用的。

  1. package property;
  2.  
  3. public class Hero{
  4. public String name;
  5. protected float hp;
  6.  
  7. public String toString(){
  8. return name;
  9. }
  10.  
  11. public void finalize(){
  12. System.out.println("这个对象正在被回收");
  13. }
  14.  
  15. public static void main(String[] args){
  16. Hero h;//只要一个引用
  17. for(int i=0;i<100;i++){
  18. /*不断生成新的对象
  19. 每次创建一个对象,前一个对象,就没有引用指向了,那些对象就满足
  20. 垃圾回收的条件,当垃圾堆积的比较多的时候,就会触发垃圾回收
  21. 一旦这个对象被回收,它的finalize()方法就会被调用。
  22.  
  23. */
  24. h=new Hero();
  25. }
  26. }
  27. }

4.equals()方法

  用于判断两个对象的内容时候相同,java里的equals方法是交给开发者去重写的,自己定义满足条件的Object是equal的

  1. package property;
  2. public class Hero{
  3. public String name;
  4. protected float hp;
  5.  
  6. public boolean equals(Object o){
  7. if(o instanceof Hero){
  8. Hero h=(Hero)o;
  9. return this.hp==h.hp;
  10. }
  11. return false;
  12. }
  13.  
  14. public static void main(String[] args){
  15. Hero h1=new Hero();
  16. h1.hp=20;
  17. Hero h2=new Hero();
  18. h2.hp=30;
  19. System.out.println(h1.equals(h2));
  20. }
  21. }

5.==

  这个不是Object的方法,但是用于判断两个对象是否相同,更确切的说是,判断两个引用,是否指向同一个对象。

  1. package property;
  2. public class Hero{
  3. public String name;
  4. protected float hp;
  5.  
  6. public boolean equals(Object o){
  7. if(o instanceof Hero){
  8. Hero h=(Hero)o;
  9. return this.hp==h.hp;
  10. }
  11. return false;
  12. }
  13.  
  14. public static void main(String[] args){
  15. Hero h1=new Hero();
  16. h1.hp=30;
  17. Hero h2=new Hero();
  18. h2.hp=30;
  19. System.out.println(h1==h2);
  20. }
  21. }

6.hashCode()方法

  返回一个对象的哈希值,hashcode存在主要是为了查找的快捷性,用来在散列表存储结构中确定对象的存储地址的。

  1. 如果两个对象的equals相等,那么这两个对象的hashcode一定相同
  2. 如果对象的equals方法被重写,那么对象的hashcode方法也要重写
  3. 如果对象的hashcode相同,不代表两个对象就相同,

举个例子:Set集合里元素不可以重复,那么原理是什么,set是根据equals方法来判断两个元素是否相等的,比如set里面已经有了100个元素,那么第101个元素进来的时候,最多能调用100次equals方法,如果equals方法写得复杂,对比的东西很多,那么效率大大降低。

使用hashcode就不一样了,比如HashSet,底层是基于HashMap实现的,先通过Hashcode取一个模,这样就一下子固定到某个位置了,如果这个位置上没有元素,那么就可以肯定HashSet中必定没有和新添加元素equals的元素,就可以直接存放,不用比较,如果这个位置上有元素了,逐一比较,先比较HashCode,如果HashCode都不同接下来不用比了,肯定不一样,如果HashCode相等时,在用equals()方法比较,如果相等就不存,不相等就存。

7.线程同步相关的方法

  Object还提供线程同步的方法:wait()  notify()  notifyAll()

8.getClass()方法

  会返回一个对象的类对象。属于反射,获取当前对象的类型。

比如:Class class="Hello".getClass();得到的就是字符串类型。

反射:理解为在运行时期获取对象类型信息的操作。传统的编程方法要求程序员在编译阶段决定使用的类型,但是在反射下,可以童泰获取这些信息

编写更加具有可移植性的代码。

一、Object类的更多相关文章

  1. Object类和常用方法

    Object类是java语言的根类,要么是一个类的直接父类,要么就是一个类的间接父类.所有对象(包括数组)都实现这个类的方法. 引用数据类型:类/接口/数组,引用数据类型又称之位对象类,所谓的数组变量 ...

  2. JS面向对象(3) -- Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法

    相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...

  3. Object类clone方法的自我理解

    网上搜帖: clone()是java.lang.Object类的protected方法,实现clone方法: 1)类自身需要实现Cloneable接口 2)需重写clone()方法,最好设置修饰符mo ...

  4. Java中的Object类介绍

    Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Object类. Object类中的所有方法适用于所有子类 Object中比较常见的方法: ...

  5. Object类的toString方法

          Object类是所有Java类的祖先.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个类的方法.在不明确给出超类的情况下,Java会自动把Object作为要定义类的超类 ...

  6. Yii2的深入学习--yii\base\Object 类

    之前我们说过 Yii2 中大多数类都继承自 yii\base\Object,今天就让我们来看一下这个类. Object 是一个基础类,实现了属性的功能,其基本内容如下: <?php namesp ...

  7. 重写Object类中的equals方法

    Object是所有类的父亲,这个类有很多方法,我们都可以直接调用,但有些方法并不适合,例如下面的student类 public class Student { //姓名.学号.年纪 private S ...

  8. Java中Object类

    Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另一个类,那么这个类默认继承Object类. Object类中的方法,适合所有子类. Object中的几个重要方法: 1 ...

  9. Object类概述

    Object:类 Object 是类层次结构的根类.每个类都使用 Object 作为超类.每个类都直接或者间接的继承自Object类. Object类的方法:public int hashCode() ...

  10. java之Object类介绍

    1.Object类是所有java类的基类 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类,ex: public class Person{ ~~~~~ } 等价于 p ...

随机推荐

  1. JS四舍五入保留两位小数

    //四舍五入保留2位小数(若第二位小数为0,则保留一位小数) function keepTwoDecimal(num) { var result = parseFloat(num); if (isNa ...

  2. Python3 ChromeDriver与Chrome版本映射表(更新至v2.43)

    Python3 ChromeDriver与Chrome版本映射表(更新至v2.43) ChromeDriver下载链接:http://chromedriver.storage.googleapis.c ...

  3. 20145304 Exp8 Web基础

    20145304 Exp8 Web基础 实验后回答问题 (1)什么是表单 表单用于搜集不同类型的用户输入,由三个基本组成部分表单标签.表单域.表单按钮.表单提交有两种方法,分别是get和post,使用 ...

  4. gvim写html代码时如何快速地跳转到一个标签的结束位置: 终极插件: matchit.vim

    gvim写html代码时如何快速地跳转到一个标签的结束位置 参考这个vimrc的配置, 里面有一些 很好的东西, 配置很有用, 以前没有用到: http://www.cnblogs.com/wangj ...

  5. 常用字符与ASCII代码对照表

    常用字符与ASCII代码对照表 为了便于查询,以下列出ASCII码表:第128-255号为扩展字符(不常用) ASCII码 键盘 ASCII 码 键盘 ASCII 码 键盘 ASCII 码 键盘 27 ...

  6. C#学习笔记(七):结构体、数组、冒泡排序和调试

    结构体 结构体不能重写默认无参构造函数 一位数组 using System; using System.Collections.Generic; using System.Linq; using Sy ...

  7. asp.net webform 自定义 select 绑定数值

    前台: <select id="ddlAddedItemType" runat="server"> <option value="& ...

  8. AngularJS监听路由变化

    使用AngularJS时,当路由发生改变时,我们需要做某些处理,此时可以监听路由事件,常用的是$routeStartChange, $routeChangeSuccess.完整例子如下: <!D ...

  9. Cassandra学习笔记

    CASSANDRA在工作中用过,但是用的项目少,能用却了解的不全面.今天来稍加学习下: http://zqhxuyuan.github.io/2015/10/15/Cassandra-Daily/  ...

  10. 554C - Kyoya and Colored Balls

    554C - Kyoya and Colored Balls 思路:组合数,用乘法逆元求. 代码: #include<bits/stdc++.h> using namespace std; ...