精华内容
下载资源
问答
  • Object所有Java类根父类 根父类 如果在类的声明未使用extends关键字指明其父类,则默认父类为Object public class Person { ... } 等价于: public class Person extends Object { ... } 根父类java....

    根父类 java.lang.Object

    根父类java.lang.Object

    Object类是所有Java类的根父类

    根父类

    如果在类的声明中未使用extends关键字指明其父类,则默认父类为Object类
    public class Person {
    	...
    }
    	等价于:
    public class Person extends Object {
    ...
    }
    
    

    根父类java.lang.Object

    根据继承的特点

    (1)父类中所有的属性和方法都会继承到子类中,或者说所有对象都具有Object类的方法,包括数组对象
    所有对象都具有Object类的方法
    (2)所有的子类都会调用它的构造器,super()
    所有子类都会调用Obejct类的构造器

    根据多态的特性

    (1)Object类型的引用变量可以接收任何类型的对象
    Object obj=new Person();
    Object obj = “hello”;


    Object类是所有Java类的根父类

    (2)Object类型的形参可以接收任何类型的实参
    例如:
    void method(Object obj){}
    调用:
    method(new Person());
    method(“hello”);
    method(null);

    (3)数组的多态性:当数组的元素类型是Object时,表示这个数组可以存放任意类型的对象

    Object[] object = new Object[5];

    根父类java.lang.Object
    1、java.lang.Object类是类层次结构的根父类。包括数组对象。

    (1)Object类中声明的所有的方法都会被继承到子类中,那么即所有的对象,都拥有Object类中的方法

    (2)每一个对象的创建,最终都会调用到Object实例初始化方法()

    (3)Object类型变量、形参、数组,可以存储任意类型的对象

    2、Object类的常用方法

    toString()

    (1)public String toString():

    ①默认情况下,返回的是“对象的运行时类型 @ 对象的hashCode值的十六进制形式"

    ②通常是建议重写,如果在eclipse中,可以用Alt +Shift + S–>Generate toString(),在IDEA ,Alt + Insert 重写toString()

    ③如果我们直接System.out.println(对象),默认会自动调用这个对象的toString()

    (2)public final Class<?> getClass():获取对象的运行时类型

    (3)protected void finalize():当对象被GC确定为要被回收的垃圾,在回收之前由GC帮你调用这个方法。而且这个方法只会被调用一次。子类可以选择重写。

    (4)public int hashCode():返回每个对象的hash值。

    规定:①如果两个对象的hash值是不同的,那么这两个对象一定不相等;

    ​ ②如果两个对象的hash值是相同的,那么这两个对象不一定相等。

    主要用于后面当对象存储到哈希表等容中时,为了提高性能用的。

    (5)public boolean equals(Object obj):用于判断当前对象this与指定对象obj是否“相等”

    ①默认情况下,equals方法的实现等价于与“==”,比较的是对象的地址值

    ②我们可以选择重写,重写有些要求:

    A:如果重写equals,那么一定要一起重写hashCode()方法,因为规定:

    ​ a:如果两个对象调用equals返回true,那么要求这两个对象的hashCode值一定是相等的;

    ​ b:如果两个对象的hashCode值不同的,那么要求这个两个对象调用equals方法一定是false;

    ​ c:如果两个对象的hashCode值相同的,那么这个两个对象调用equals可能是true,也可能是false

    B:如果重写equals,那么一定要遵循如下几个原则:

    ​ a:自反性:x.equals(x)返回true

    ​ b:传递性:x.equals(y)为true, y.equals(z)为true,然后x.equals(z)也应该为true

    ​ c:一致性:只要参与equals比较的属性值没有修改,那么无论何时调用结果应该一致

    ​ d:对称性:x.equals(y)与y.equals(x)结果应该一样

    ​ e:非空对象与null的equals一定是false

    参考资料
    搞定Java核心技术

    展开全文
  • 在Java中所有类都是从Object这个继承出来的,Object所有类的源头,是所有类父类。 你可以想象自己写的是这样声明的: public class Dog extends Object {} Object的部分方法: 1. equals(Object o) /...

    Object类

    在Java中的所有类都是从Object这个类继承出来的,Object类是所有类的源头,是所有类的父类。
    你可以想象自己写的类是这样声明的:

    public class Dog extends Object {}
    

    Object类的部分方法:

    1.
    equals(Object o)   //判断是否相等
    
    Dog a = new Dog();
    Cat c = new Cat();
    boolean b = a.equals(c);   //false
    
    2.
    getClass()
    
    Cat c = new Cat();
    System.out.println(c.getClass());    //class cat ,告诉你此对象是从哪里被初始化的
    
    3.
    hasCode()
    Cat c = new Cat();
    System.out.println(c.hasCode());   //  8202111 ,列出此对象的哈希代码,你可以把它想象成一个唯一的ID
    
    4.
    toString()
    Cat c = new Cat();
    System.out.println(c.toString());   //列出类的名称和一个我们不关心的数字
    

    关于Object类的几点说明:

    • Object类不是抽象类
    • Object类的部分方法可以被覆盖,被标记为final的方法不能被覆盖,强烈建议用自己写的类去覆盖掉hashCode(),equals(),toString()
    • ArrayList方法是通用的,入参或返回类型为object,ArrayList<Dog>是用于限制它的类型,表明此ArrayList受限只能保存Dog对象,在java5.0之前无法限制它的类型。
    • Object类有两个主要的目的,作为多态让方法可以应付多种类型的机制,以及提供Java在执行期对任何对象都有需要的方法的实现程序代码(让所有的类都会继承到)

    使用Object类型的多态引用的代价:

    • 任何从ArrayList取出的东西都会被当作Object类型的引用而不管它原来是什么,编译器无法将此对象识别为Object以外的事物。
    • 编译器只管引用的类型,而不是对象的类型,编译器是根据引用类型来判断有哪些method可以调用,而不是根据Object确实的类型
    public void go() {
    	Dog d = new Dog();
    	Dog a = getObject(d);  //这是错误的,无法过关,虽然返回了同一个Dog,但编译器认为这只能赋值给Object类型的变量
    }
    
    public Object getObject(Object o) {
    	return o;  //返回了同一个引用,但类型已经转换为Object了
    }
    

    如何将Object类转换为原来的类型

    ArrayList<Object> myDogs = new ArrayList<Object>();
    Dog d = new Dog();
    Dog a = (Dog) mydogs.get(0)
    

    如果你真的确定它是个Dog,可以使用(Dog)将类型转换为Dog.
    如果你不能确定它是Dog,可以使用instanceOf这个运算符来检查,若是类型转换错了,你会在执行期遇到ClassCastException异常并且终止。

    if (o instance of Dog) {
    	Dog a = (Dog) o;
    }
    
    展开全文
  • java中Throwable所有异常父类

    千次阅读 2019-12-03 18:16:41
    Error异常和Exception异常都继承于throwable异常。 throwable异常下面分为两个子类:error异常(又名系统异常),和Exception异常(编码,环境,操作异常) Error异常是系统异常(都是非检查异常),主要包括...
    1. Error异常和Exception异常都继承于throwable异常类。
    2. throwable异常类下面分为两个子类:error异常(又名系统异常)和Exception异常(编码,环境,操作异常)
    3. Error异常是系统异常(也叫做非检查异常,源码注释:That is, {@code Error} and its subclasses are regarded as unchecked exceptions for the purposes of compile-time checking of exceptions.),主要包括虚拟机错误(virtualmachineError)、线程死锁(threaddeth)。一旦出现Error异常就代表着程序崩溃了,可将其看作程序的终结者。
    4. Exception异常包括两个大类:运行时检查异常(RuntimeException)和编译时异常;RuntimeException异常包含以下四种常见异常:空指针异常,数组下标越界异常、类型转换异常、算术异常,由java虚拟机自动抛出和自动捕获;检查异常:主要是一些文件异常,日志异常,sql异常,和一些需要我们人为干预的异常。检查异常,需要手动添加异常的捕获和处理。
    展开全文
  • 根父类: (1)Object类中声明的方法,所有引用数据类型中都有(所有对象都实现这个的方法) (2)所有类的对象的实力初始化过程,都会调用Object的实例初始化方法 (3)Object类型的变量,形参,数组可以接受任意...

    Java中规定:如果一个类没有显式声明它的父类,那么默认这个类的父类就是java.lang.Object。
    根父类:
    (1)Object类中声明的方法,所有引用数据类型中都有(所有对象都实现这个类的方法)
    (2)所有类的对象的实力初始化过程,都会调用Object的实例初始化方法
    (3)Object类型的变量,形参,数组可以接受任意类型的对象(所有的对象都可以赋值给Object的变量)

    java.lang.Object

    1. public String toString()
      用于返回对象的消息,建议所有子类重写,如果没有重写,返回的字符串由类名,标记符“@”和此对象哈希码的无符号十六进制表示组成
      当直接打印一个对象或者用对象与字符串进行拼接时,默认情况下会自动调用这个对象的toString()方法
    2. public final Class getClass()
      返回此Object的运行时类
    3. protected void finalize()
      当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收期调用此方法。既不是程序员手动调用。
      子类重写fanalize方法,用于已配置系统资源或执行其他清除
      1.某个对象确定要被回收时,会被调用
      2.程序员是无法确定哪个具体时间点会调用
      3.它是由GC调用的
      4.每一个对象,finalize()只能被调用一次
    4. public int hashCode()
      返回该对象的哈希码值
      两个不同的对象,可能它的哈希码值相同
    5. public boolean equals(Object obj)
      指示其它对象是否与此对象相等;默认情况下(没有重写),Object类中实现的equals方法,它的比较等价于“==”,比较的是对象的地址
      (1)如果要重写equals方法,通常有必要重写hashCode方法(因为java总规定:如果两个对象调用equals方法返回true,那么这两个对象的hashCode值必须相同;如果两个对象的hashCode值不同,那么调用equals方法必须是false;如果两个对象的hashCode值相同,那么调用equals方法可能true也可能false)
      (2)重写equals方法时,要遵循几个原则
      1.自反性:x.equals(x)一定true
      2.对称性:x.equals(y)和y.equals(x)结果一样
      3.传递性:x.equals(y)是true,y.equals(z)也是true,那么x.equals(z)一定是true
      4.一致性:只要参与equals比较的属性值没有修改过,那么无论何时调用,结果都应该一样
      5.对于任何非空引用值x,x.equals(null)都应该返回false
    展开全文
  • java 数组父类

    千次阅读 2019-12-27 09:32:27
    java中所有的引用类型,都属于,既然都属于,那么父类就都是Object,数组也不例外,在java中,数组也是一种引用类型,即是一种。不过这种没有java代码,所以看不到底层实现,因为底层是C语言实现的,java...
  • 1、根父类(1)Object类型是所有引用数据类型的超类,包括数组类型如果一个没有显式的声明它的父类,那么它的父类就是Object。(2)Object类中的方法,会继承到所有类型的对象,包括数组对象。即所有对象都可以调用...
  • 根父类 object

    2021-07-18 11:45:44
    * 1.Object所有Java类根父类 * 2.如果在类的声明未使用extends关键字指明其父类,则默认父类为java.lang.Object * 3.object类中的功能(属性 方法)接具有通用性。 * 属性 : 无 * 方法 equals ...
  • 这篇文章主要介绍了Java中所有错误和异常的父类java.lang.Throwable,文章简单地分析了其源码,说明代码注释,需要的朋友可以参考下在java语言,错误的基类是java.lang.Error,异常的基类是java.lang....
  • Java学习-详谈最高层父类-Object

    万次阅读 2020-08-12 17:19:32
    Object所有Java类根父类 (多层继承的最高层的父类) 如果在类的声明未使用extends关键字指明其父类,则默认父类为Object 比如:public class Person{ } 等价于:public class Per...
  • Java源码解读:顶级父类Object

    千次阅读 2015-06-25 11:09:01
    Java源码解读:顶级父类Object类Object是类层次结构的类。每个类都使用Object作为超类,所有对象都实现这个类的方法。 方法签名 private static native void registerNatives(); //返回此Object运行时类型 public ...
  • 1.子类父类中有相同参数,子类继承分类后如何进行调用,判断创建的对象属性哪个(instanceof) 2.子类继承父类时,怎么调用父类构造函数,以及如何访问到父类的私有属性,子类是否能够继承父类的私有属性 3.根父类...
  • Java父类构造器的讲解

    2019-07-21 06:50:50
    众所周知,对于Java中所有类而言,它们有一个根父类,即java.lang.Object。 对于Java中构造器执行的顺序而言,程序执行的顺序为,先执行父类的非静态代码块,然后执行父类的相应的构造器,最后执行子类的非静态...
  • Java加载器自从JDK1.2开始便引入了一条机制叫做父类委托机制。一个需要被加载的时候,JVM先会调用他的父类加载器进行加载,父类调用父类父类,一直到顶级加载器。如果父类加载器加载不了,依次再使用其...
  • 答:JVM中类的装载是由加载器(ClassLoader)和它的子类来实现的,Java中加载器是一个重要的Java运行时系统组件,它负责运行时查找和装入文件。 由于Java的跨平台性,经过编译的Java源程序并不是一...
  • 一、什么是根父类 1、Java中规定:如果一个类没有显示声明它的父类,即没有写extends xx,那么这个类就默认继承java.lang,Object 如上图,我们随便一个类都是继承的Object 类Object是类层次结构的根类,每个类都...
  • Java面试的小问题 public class Test { public void test() { System.out.println(this.getClass().getName()); } public static void main(Str
  • 每日一贴,今天的内容关键字为父类类  7、继承:  继承是调用这个方法,而不是使用。 继承的长处有4种:1、代码可重用... 继承的来源: 面向对象编程,可以通过拓展一个已有的,并继承该的属性和行为,...
  • ObjectJava语言根类,即所有类父类。它描述的所有方法子类都可以使用。所有类在创建对象的时候,最终找的父类就是Object。 Object众多方法,我们先学习equals方法与toString方法,其他方法后面...
  • 超级父类:Object

    千次阅读 2017-01-18 21:28:46
    1、Object所有Java类根父类在java.lang 如果在类的声明未使用extends关键字指明其父类,则默认父类为Object public class Person { ... } 等价于: public class Person extends Object { ... }2...
  • ---------------------------------------------------------------------------------------------------------------------------3、继承的分类在Java中之间的继承关系只允许单继承,不允许多继承。...
  • Java中Object的使用

    2020-03-20 19:04:38
    Object是所Java类根父类 如果在类的声明未使用extends关键字指明其父类,则默认父类为java.lang.Object Object类中的功能(属性、方法)就具通用性。 属性:无 方法:equals() / toString() / getClass() /...
  • Java加载器自从JDK1.2开始便引入了一条机制叫做父类委托机制。一个需要被加载的时候,JVM先会调用他的父类加载器进行加载,父类调用父类父类,一直到顶级加载器。如果父类加载器加载不了,依次再使用其...
  • //错误,catchMouse()是子类扩展的方法,父类中没有 /* 多态引用,编译时,看“父类”,只能调用父类声明的方法; 运行时,看“子类”,一定是执行子类重写的方法体; */ // 多态形式,创建对象 Animal a2 ...
  • Java笔记——根类Object

    2018-01-16 17:06:53
    Java根类Object的常用方法 Object所有类的直接父类或间接父类,它是所有类的根。接下来,我们来看看Object的常用方法。 表一:Object的常用方法 方法介绍:  (1)下面4个较为常用  toString...
  • Java根类Object

    千次阅读 2017-06-13 22:27:16
    ObjectJava语言的根类,要么是一个的直接父类,要么就是一个的间接父类.class ABC{} 其实等价于 class ABC extends Object{} ----------------------------------------------------------------------------...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,764
精华内容 19,105
关键字:

在java中所有类的根父类是

java 订阅