1. package cn.itcast_01;
  2.  
  3. /*
  4. * Object:类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。
  5. * 每个类都直接或者间接的继承自Object类。
  6. *
  7. * Object类的方法:
  8. * public int hashCode():返回该对象的哈希码值。一般不同的对象具有不同的哈希码值。
  9. * 注意:哈希值是根据哈希算法计算出来的一个值,这个值和地址值有关,但是不是实际地址值。
  10. * 你可以理解为地址值。
  11. *
  12. * public final Class getClass():返回此 Object 的运行时类,此时运行的是哪个类,调用getName()方法后会返回该类的全名。
  13. * Class类的方法:
  14. * public String getName():以 String 的形式返回此 Class 对象所表示的实体
  15. * 返回:
  16. 此对象所表示的类或接口名。
  17.  
  18. */
  19. public class StudentTest {
  20. public static void main(String[] args) {
  21. Student s1 = new Student();
  22. System.out.println(s1.hashCode()); // 11299397
  23. Student s2 = new Student();
  24. System.out.println(s2.hashCode());// 24446859
  25. Student s3 = s1;
  26. System.out.println(s3.hashCode()); // 11299397
  27. System.out.println("-----------");
  28.  
  29. Student s = new Student();
  30. Class c = s.getClass();
  31. String str = c.getName();
  32. System.out.println(str); // cn.itcast_01.Student
  33.  
  34. //链式编程
  35. String str2 = s.getClass().getName();
  36. System.out.println(str2);
  37. }
  38. }

Object类的方法:public String toString():返回该对象的字符串表示。

//Object类的 toString()方法的值等价于它      getClass().getName() + '@' + Integer.toHexString(hashCode())

但是自定义类的时候一半会重写tistring方法,不然输出默认调用object类中的tostring。如何重写?自动生成即可。

注意:

 * 直接输出一个对象的名称,其实就是调用该对象的toString()方法。通过这里可以看出类是否重写过Object类的tostring方法

 * 如果结果是一个地址的形式,就说明没有重写Tostring方法。

/*

 *方法: public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。 

 * 这个方法,默认情况下比较的是地址值。比较地址值一般来说意义不大,所以要重写该方法。

 * 怎么重写呢?

 * 一般都是用来比较对象的成员变量值是否相同。

 * 其实还是自动生成。

 * 

 * 看源码:

 * public boolean equals(Object obj) {

 * //this - s1//谁先调用这个方法this就代表谁

 * //obj - s2

 *       return (this == obj);

 *   }

 * 

 * ==:

 * 基本类型:比较的就是值是否相同

 * 引用类型:比较的就是地址值是否相同

 * equals:

 * 引用类型:默认情况下,比较的是地址值。

 * 不过,我们可以根据情况自己重写该方法。一般重写都是自动生成,比较对象的成员变量值是否相同

 */

代码演示:

  1. public class StudentDemo {
  2. public static void main(String[] args) {
  3. Student s1 = new Student("林青霞", 27);
  4. Student s2 = new Student("林青霞", 27);
  5. System.out.println(s1 == s2); // false
  6. Student s3 = s1;
  7. System.out.println(s1 == s3);// true
  8. System.out.println("---------------");
  9.  
  10. System.out.println(s1.equals(s2)); // obj = s2; //true
  11. System.out.println(s1.equals(s1)); // true
  12. System.out.println(s1.equals(s3)); // true
  13. Student s4 = new Student("风清扬",30);
  14. System.out.println(s1.equals(s4)); //false
  15.  
  16. Demo d = new Demo();
  17. System.out.println(s1.equals(d)); //ClassCastException
  18.  
  19. }
  20. }
  21.  
  22. class Demo {}

注意:在Student类中是重写了equals()方法的。重写的代码如下:

  1. Student类中重写equals方法。
  1.  
  1. @Override
  2. public boolean equals(Object obj) {
  3. if (this == obj)
  4. return true;
  5. if (obj == null)
  6. return false;
  7. if (getClass() != obj.getClass())
  8. return false;
  9. Student other = (Student) obj;
  10. if (age != other.age)
  11. return false;
  12. if (name == null) {
  13. if (other.name != null)
  14. return false;
  15. } else if (!name.equals(other.name))
  16. return false;
  17. return true;
  18. }

《java入门第一季》之类(Object类)的更多相关文章

  1. 《java入门第一季》StringBuffer类小案例

    /* * 把数组拼接成一个字符串 */ public class StringBufferTest2 { public static void main(String[] args) { // 定义一 ...

  2. JAVA入门第一季(mooc-笔记)

    笔记相关信息 /** * @subject <学习与创业>作业1 * @author 信管1142班 201411671210 赖俊杰 * @className <JAVA入门第一季 ...

  3. Java入门第一季——从此投身Java??

    找工作告一段落. 最后的工作呢,和java紧密相关,也是阴差阳错,不过都是软件开发,都好了,不过以后侧重点肯定是在java这边,php有机会还是一直学下去的,那么美的说~ Java开发第一季  一.简 ...

  4. 《java入门第一季》之Arrays类前传(排序案例以二分查找注意的问题)

    根据排序算法,可以解决一些小案例.举例如下: /* * 把字符串中的字符进行排序. * 举例:"dacgebf" * 结果:"abcdefg" * * 分析: ...

  5. 慕课网-Java入门第一季-6-7 使用 Arrays 类操作 Java 中的数组

    来源:http://www.imooc.com/code/1556 Arrays 类是 Java 中提供的一个工具类,在 java.util 包中.该类中包含了一些方法用来直接操作数组,比如可直接实现 ...

  6. 《java入门第一季》之面向对象(谈谈接口)

    软件中有接口,这里的接口与硬件中的接口还是有很大区别的. 这里介绍接口不考虑JDK8的新特性(JDK8开始接口里面可以有非抽象方法了,介绍JDK8新特性可能要到整个第一季写完吧!) 还是直接进入接口的 ...

  7. Java入门第一季

    慕课网:http://www.imooc.com/learn/85 Java入门知识第一季 1.Java开发环境和IDE的使用: 2.变量和常量 3.常用的运算符 4.流程控制语句 5.数组:使用Ar ...

  8. Java入门第一季学习总结

    一.课程总概 这门课程的学习难度属于入门级别,又由于有c++的基础,所以学习这门课程也是比较轻松的.可以简单地把这门课的学习分为四部分:第一部分,java的介绍(第一章):第二部分,java的数据类型 ...

  9. 《java入门第一季》之泛型类引入

    首先用一个例子引入泛型类. 我定义一个Object类: package cn.it_03; public class ObjectTool { private Object obj; public O ...

随机推荐

  1. chrome官方完整安装包

    But did you know Google allows you to download the full standalone installer of Chrome from its offi ...

  2. 第一个Angular2的样例

    欢迎跟我一起学习Angular2 本文根据angular2官网手动敲码得来: 本文地址:http://blog.csdn.net/sushengmiyan 本文作者:苏生米沿 - 开发环境搭建 - 配 ...

  3. iOS遍历数组的同时删除元素

    我们在遍历可变数组时,最好不要做删除数组中元素的操作. 因为删除操作可能会引起数组容量的变化,导致数组越界等问题. 以前在使用for循环遍历的时候遇到过这个问题. 当时的做法是使用enumerateO ...

  4. Scala: 简介和安装

    http://blog.csdn.net/pipisorry/article/details/52902117 Note: lz只是稍微学学,能看懂就行,不深入.适合scala小白. Scala简介 ...

  5. cassandra 监控方案评估

    摘要 最开始做cassandra monitor 方案的选型时,主要是从cassandra 本身入手,后来发现cassandra运行在JVM上,所有的metrics都是通过JMX 暴露出来.所以又可以 ...

  6. SQL Server 索引维护(1)——如何获取索引使用情况

    前言: 在前面一文中,已经提到了三类常见的索引问题,那么问题来了,当系统出现这些问题时,该如何应对? 简单而言,需要分析现有系统的行为,然后针对性地对索引进行处理: 对于索引不足的情况:检查缺少索引的 ...

  7. JAVA对象及属性的内存堆栈管理(通过小程序简单说明)

    JAVA在执行过程中会划分4个内存区域(heap.stack.data segment.code segment)代码区(codesegment):java开始执行会把代码加载到code segmen ...

  8. 1.搜索引擎的历史,搜索引擎起步,发展,繁荣,搜索引擎的原理,搜索技术用途,信息检索过程,倒排索引,什么是Lucene,Lucene快速入门

     一: 1  搜索引擎的历史 萌芽:Archie.Gopher Archie:搜索FTP服务器上的文件 Gopher:索引网页 2  起步:Robot(网络机器人)的出现与spider(网络爬虫) ...

  9. 1.2、Android Studio为新设备创建一个模块

    模块为你的应用的源码.资源文件和app level设置(比如AndroidManifest.xml)提供了一个容器.每个模块可以独立的构建.测试和调试. 通过使用模块,Android Studio可以 ...

  10. TCP的发送系列 — tcp_sendmsg()的实现(二)

    主要内容:Socket发送函数在TCP层的实现 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd 在上篇blog中分析了tcp_sendmsg()这个主要函 ...