java基础学习_常用类01_Object类_day11总结

简介: ======================================================================================================================================================...

=============================================================================
=============================================================================
涉及的知识点有:
  1:Eclipse的概述和使用(掌握)
  2:API的概述(了解)
  3:Object类的概述和使用握)
    (1)Object类的概述
    (2)Object类的构造方法
    (3)要掌握的Object类的方法(掌握)
      A:public String toString()
      B:public boolean eauals(Object obj)
    (4)要了解的Object类的方法
      A:public int hashCode()
      B:public final Class getClass()
      C:protected void finalize()
      D:protected Object clone()
    (5)两个注意问题
=============================================================================
=============================================================================
1:Eclipse的概述和使用(掌握)
-----------------------------------------------------------------------------
2:API的概述(了解)
  (1) API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数。
    目的是:提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或无需理解内部工作机制的细节。
  (2)Java API就是Java提供给我们使用的类(也即就是JDK提供给我们的一些提高编程效率的java类),
    这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用。
    我们可以通过查询帮助文档(.chm文件)来了解Java提供的API如何使用。
      例如:JDK_API_9.0_zh_CN.CHM
          JDK_API_1.6_zh_CN.CHM
    1.6版本是最常用的版本,是由之前未被Oracle收购的SUN公司为我们中国程序猿写的。给SUN打call!!!
-----------------------------------------------------------------------------
3:Object类(掌握)
  (1)Object类的概述
    Object n 物体;东西;对象
    从JDK1.0版本开始。
    Object是类层次结构的根类,所有的类都直接或者间接的继承自Object类。所有对象(包括数组)都实现了这个类的方法。
  (2)Object类的构造方法
    public Object() {}
    有且只有一个,并且是无参构造。
    这其实就是理解当时我们说过的:子类的构造方法默认访问的是父类的无参构造。
---------------------------------------
  (3)要掌握的Object类的方法(掌握)
    A:public String toString()
      返回对象的字符串表示,默认是由类的全路径+@+哈希值的十六进制表示。
      结果应该是一个简明扼要的表达,容易让人阅读。
      上面的表示其实是没有意义的,建议一般子类都会重写该方法。
        没有重写该方法前
          Student s = new Student();
          System.out.println(s.toString()); // cn.itcast_02.Student@424c0bc4
          System.out.println(s.getClass().getName() + '@' + Integer.toHexString(s.hashCode())); // cn.itcast_02.Student@424c0bc4
        这两个是等价的。
      因为当我们编写了很多类的时候,经常在程序运行时要查看对象中各个属性的值,就要重写toString()方法,
      那么如何快速的生成toString()方法呢?过程我也讲解过了,基本要求就是要求信息简单明了。
      但是最终还是自动生成。
        重写该方法后:
          在ecplise中,若直接输出一个对象的名称,其实就是调用该对象的toString()方法。示例如下:
          Student s = new Student();
          System.out.println(s.toString()); // Student [name=null, age=0]
          System.out.println(s); // Student [name=null, age=0]
        这两个也是等价的。

      Integer类下的一个静态方法:
        public static String toHexString(int i) 把一个整数转成一个十六进制表示的字符串
---------------------------------------
    B:public boolean eauals(Object obj)
      比较两个对象是否相同(相等)。默认情况下,比较的是地址值是否相同。
      而比较地址值是没有意义的,所以,一般子类也会重写该方法。
      重写的代码优化:提高效率,提高程序的健壮性。
      怎么重写呢?答:一般都是用来比较对象的成员变量值是否相同。
      重写过程,我也详细的讲解和分析了。
      但是最终还是自动生成。

      注意:
        ==(等号的比较的是):
          基本类型:比较的就是值是否相同。
          引用类型:比较的就是地址值是否相同。
        equals(该方法比较的是):
          只能是引用类型:默认情况下,比较的是地址值。
          不过,我们可以根据情况自己重写该方法。一般重写都是自动生成,比较的是对象的成员变量值是否相同。
---------------------------------------
  (4)要了解的Object类的方法
    A:public int hashCode() 返回对象的哈希码值。不是实际地址值,但可以理解为地址值。
      注意:哈希值是根据哈希算法计算出来的一个值,这个值和地址值有关,但是不是实际地址值。但可以理解为地址值。

    B:public final Class getClass() 返回对象的字节码文件对象,反射中我们会详细讲解。
      Class类的方法:
        public String getName() 以 String 的形式返回此 Class 对象所表示的实体名称。(实体包括:类、接口、数组名、基本类型或 void)
        即:可以通过Class类中的一个方法,获取对象的真实类的全名称。

    C:protected void finalize() 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。用于垃圾回收,但是什么时候回收不确定。子类重写该方法,以配置系统资源或执行其他清除。

    D:protected Object clone() 创建并返回此对象的一个副本。可以实现对象的克隆,包括成员变量的数据复制,但是它和两个引用指向同一个对象是有区别的。
      Cloneable接口
        此类实现了 Cloneable 接口,以指示 Object.clone() 方法可以合法地对该类实例进行按字段复制。
        这个接口是标记接口,告诉我们只有实现该接口的类才可以实现对对象的复制了。(因为不是所有的类都可以复制的)
        注意:
          我们讲解的示例是一个浅度克隆,后面会学习深度克隆。
            深度克隆:因为一个类可能还有父类,可能还有实现接口,那么继承体系越庞大,克隆就会变得很复杂。
---------------------------------------
  (5)两个注意问题:
    A:直接输出一个对象名称,其实是默认调用了该对象的toString()方法。
    B:面试题
      == 和 equals() 的区别?
        A:==(等号的比较的是):
          基本类型:比较的是值是否相同
          引用类型:比较的是地址值是否相同
        B:equals(该方法比较的是):
          只能比较引用类型。默认情况下,比较的是地址值是否相同。
          不过,我们可以根据情况自己重写该方法。一般重写都是自动生成,比较的是对象的成员变量值是否相同。
=============================================================================

我的GitHub地址: https://github.com/heizemingjun
我的博客园地址: http://www.cnblogs.com/chenmingjun
我的蚂蚁笔记博客地址: http://blog.leanote.com/chenmingjun
Copyright ©2018 黑泽明军
【转载文章务必保留出处和署名,谢谢!】
相关文章
|
19小时前
|
存储 算法 搜索推荐
滚雪球学Java(27):从零开始学习数组:定义和初始化
【5月更文挑战第2天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
7 3
|
1天前
|
安全 Java 调度
Java一分钟:多线程编程初步:Thread类与Runnable接口
【5月更文挑战第11天】本文介绍了Java中创建线程的两种方式:继承Thread类和实现Runnable接口,并讨论了多线程编程中的常见问题,如资源浪费、线程安全、死锁和优先级问题,提出了解决策略。示例展示了线程通信的生产者-消费者模型,强调理解和掌握线程操作对编写高效并发程序的重要性。
10 3
|
2天前
|
Java
【JAVA基础篇教学】第五篇:Java面向对象编程:类、对象、继承、多态
【JAVA基础篇教学】第五篇:Java面向对象编程:类、对象、继承、多态
|
2天前
|
缓存 Java 数据库
Java并发编程学习11-任务执行演示
【5月更文挑战第4天】本篇将结合任务执行和 Executor 框架的基础知识,演示一些不同版本的任务执行Demo,并且每个版本都实现了不同程度的并发性。
20 4
Java并发编程学习11-任务执行演示
|
2天前
|
存储 安全 Java
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
|
3天前
|
Java 编译器 开发者
Java一分钟之-继承:复用与扩展类的特性
【5月更文挑战第9天】本文探讨了Java中的继承机制,通过实例展示了如何使用`extends`创建子类继承父类的属性和方法。文章列举了常见问题和易错点,如构造器调用、方法覆盖、访问权限和类型转换,并提供了解决方案。建议深入理解继承原理,谨慎设计类结构,利用抽象类和接口以提高代码复用和扩展性。正确应用继承能构建更清晰、灵活的代码结构,提升面向对象设计能力。
9 0
|
3天前
|
Java
【Java多线程】面试常考 —— JUC(java.util.concurrent) 的常见类
【Java多线程】面试常考 —— JUC(java.util.concurrent) 的常见类
13 0
|
3天前
|
Java API 调度
【Java多线程】Thread类的基本用法
【Java多线程】Thread类的基本用法
6 0
|
3天前
|
SQL Java 数据库连接
JDBC Java标准库提供的一些api(类+方法) 统一各种数据库提供的api
JDBC Java标准库提供的一些api(类+方法) 统一各种数据库提供的api
9 0
|
4天前
|
数据库连接
java+ssm+vue代码视频学习讲解
java+ssm+vue代码视频学习讲解
6 0