java是面向对象的语言,核心思想:找适合 的对象做适合 的事情:

方式一:自定义类,然后通过自定义的类创建对象。

方式二:sun提供了很多的类给我使用,我们只需要认识这些类,我们就可以通过这些类创建对象了。

Object类是所有类的终极父类。 任何一个类都继承了Object类。

Object:所有类的根类。
    Object是不断抽取而来,具备着所有对象都具备的共性内容。

class Person{
private int age ;
Person(int age){
this.age = age;
}
} class Demo{
} class ObjectDemo{
public static void main(String[] args){
Person p1 = new Person(20);
Person p2 = new Person(20);
Person p3 = p1; Demo d = new Demo(); System. out.println(p1 == p2);//false
System. out.println(p1.equals(p2));//false
System. out.println(p1.equals(p3));//true
System. out.println(p1.equals(d));//false
}
}

运行结果:

false

false

true

false

上面都是比较内存地址,而没有比较年龄,然而需要比较年龄则需要重写equals方法~

P.S.
    ==以及Object类的equals方法默认都是根据对象的哈希值判断两个对象是否相等。
    可以通过覆盖Object的equals方法来重写比较规则。

class Person{
private int age ;
Person( int age){
this.age = age;
}
//比较Person的年龄,是否是同龄人
//一般都会覆盖此方法,根据对象的特有内容,建立判断对象是否相同的依据。
public boolean equals(Object obj){
if(!(obj instanceof Person))
throw new ClassCastException("类型错误");
Person p = (Person)obj;
return this .age == p.age;
}
} class ObjectDemo{
public static void main(String[] args){
Person p1 = new Person(20);
Person p2 = new Person(20); System. out.println(p1.equals(p2));
}
}

运行结果:

ture

class Person{
private int age ;
Person(int age){
this.age = age;
}
public int hashCode(){
return age ;
}
} class ObjectDemo{
public static void main(String[] args){
Person p1 = new Person(20); System. out.println(p1);
System. out.println(p1.getClass().getName() + " $ " + Integer.toHexString(p1.hashCode()));
}
}

运行结果:

Person@21

Person $ 21

System. out.println(p1.getClass().getName() + " $ " + Integer.toHexString(p1.hashCode()));

为了方便初学者理解上面的代码,接下来分别对其中用到的方法进行解释,具体如下:

1.getClass().getName()代表返回对象所属类的类名,即是Person。

2.hashCode()代表返回该对象的哈希值。 (也可以把哈希码理解成是对象的内存地址)

3.Integer.toHexString(p1.hashCode())代表将对象哈希值用16进制表现。

其中,hashCode()是Object类中定义的一个方法,这个方法将对象的内存地址进行哈西运算,返回一个int型的哈希值

toString() : 返回该对象的字符串表示,返回一个字符串用于描述该对象的。 (返回的字符串表示: 完整类名+@+ 对象的哈希码)

交流企鹅:654249738,和自学者交流群:517284938

JAVA_SE基础——60.初识Object的更多相关文章

  1. JAVA_SE基础——6.标识符&关键字

    学会写helloworld之后,  我们就开始来认识标识符&关键字 一.标识符 标识符是指可被用来为类.变量或方法等命名的字符序列,换言之,标识符就是用户自定义的名称来标识类.变量或方法等.更 ...

  2. JAVA_SE基础——26.[深入解析]局部变量与成员变量的区别

    黑马程序员入学blog ... 如果这章节很难懂的话应该返回去先看  JAVA_SE基础--10.变量的作用域 定义的位置上区别: 1. 成员变量是定义在方法之外,类之内的. 2. 局部变量是定义在方 ...

  3. JAVA_SE基础——9.基本数据类型间的转换

    前面我已经教会大家基本的数据类型进行了介绍,   然后这篇文章,我来介绍下,基本数据类型的转换. Java中有两种类型转换形式,分别是自动类型转换和强制类型转换. Step1.自动类型转换. 自动类型 ...

  4. JAVA_SE基础——8.基本数据类型

    基本数据类型有:整数类型.浮点类型.字符类型.布尔类型 整数类型 整数类型用来存储整数数值,即没有小数部分的数值.与C.C++语言相同,整数在Java语言中有3种表示形式:十进制.八进制和十六进制. ...

  5. JAVA_SE基础——7.常量&变量

    上一篇,我讲了标识符&关键字    这篇我来解释下变量&常量~~~ 变量与常量这两个概念相信大家都不会感到陌生,在数学中就已经涉及了变量与常量.理解变量与常量,可以举这样一个例子: 例 ...

  6. JAVA_SE基础——5.第一个Java程序HelloWorld&注释的应用

    配置完JDK&环境变量后,我们就可以开始写程序了,那么程序怎么写呢,用什么工具呢,我建议 为了方便学习,我们最好在一个磁盘下建立一个专门的文件来写java程序,比如就在D盘下建立一个名为&qu ...

  7. JAVA_SE基础——4.path的临时配置&Classpath的配置

    这次,我来写下关于path的临时配置的心的 我来说个有可能的实例:如果你去到别人的电脑 又想写代码 又不想改乱别人的path配置的话  再说别人愿意你在别人的电脑上瞎配吗? 那该怎么办呢? 那没问题 ...

  8. JAVA_SE基础——2.环境变量的配置&测试JDK

    哈喽,利用晚上的空余时间再写篇心的~~~  谢谢大家 前一篇文章 JAVA_SE基础--JDK&JRE下载及安装http://blog.csdn.net/thescript_j/article ...

  9. JAVA_SE基础——1.JDK&JRE下载及安装

    这是我学了JAVA来写的第一篇博客: 我首先是在传智播客领了张.毕向东老师的免费JAVA学习光盘来学习! 下面我来教大家安装使用JAVA时候必备的JDK 1.首先上甲骨文公司的官方网站下载JDK的安装 ...

随机推荐

  1. Graham凸包算法简介

    凸包真是一个神奇的算法.. 概念 凸包,我理解为凸多边形 叉积 对于向量AB和向量BC,记向量AB*向量BC = AB * BC * sin ∠ABC,而叉积的绝对值其实就是S△ABC/2 对于平面上 ...

  2. [ZJOI2014]力

    推公式发现(这不是水题吗,这要推吗) \[E_i=\Sigma^{i-1}_{j=1} \frac{q_j}{(i-j)^2} - \Sigma^{n}_{j=i+1} \frac{q_j}{(i-j ...

  3. 基于socket实现的简单的聊天程序

    记得八年前第一次使用socket做的一个五子棋程序,需要序列化棋子对象,传递到对方的电脑上. 一个偶然的机会,第二次使用socket做点事情.先看聊天服务器端的实现: 服务器端要实现以下功能:     ...

  4. UWP:使用Composition实现类似安卓的水波纹Ripple效果

    先放效果图: 首先,建立一个RippleHelper.cs文件,然后建立以下附加属性: IsFillEnable:是否扩大到整个控件 RippleDuration:持续时间 RippleRadius: ...

  5. 电路ppt作业

    例二 例三 3.例一

  6. 题目1010:A + B

    题目描述: 读入两个小于100的正整数A和B,计算A+B. 需要注意的是:A和B的每一位数字由对应的英文单词给出. 输入: 测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B ...

  7. 原生jdbc操作mysql数据库详解

    首先给大家说一下使用JDBC链接数据库的步骤 1.加载链接数据库驱动 2.建立数据库链接 3.创建数据库操作对象 4.编写sql语句,执行sql语句 5.获取结果集 6.释放资源 我这边采用的是mav ...

  8. EventBus VS Spring Event

    EventBus VS Spring Event 本地异步处理,采用事件机制 可以使 代码解耦,更易读.事件机制实现模式是 观察者模式(或发布订阅模式),主要分为三部分:发布者.监听者.事件. Gua ...

  9. 正则表达式入门+实战(c#实现)

    如果有人和你说,如果不将字符串转换为数字,你要如何判断字符串是否由全数字组成?把字符串拆成char数组,然后放入一个循环,来判断每个char是否为数字?那你要如何判断手机号是否合法?IP是否合法呢?把 ...

  10. The POM for ... is missing, no dependency information available

    今天在重温淘淘商城的项目,准备用idea重写次,换个bootstrap的前端框架,但是在用idea构建maven项目后编译时却报错了: 经再三确认,common工程自身并没有任何问题,引用这个工程的地 ...