一、Object对象的九个方法

getClass();hashCode();equals();clone();toString();notify();notifyAll();wait();finalize。

二、equals()

equals()与==的区别:

  • 对于基本类型,==判断两个值是否相等,基本类型没有equals()方法(八个基本类型);
  • 对于引用类型,==判断两个实例是否引用同一个对象(地址是否相同),而equals()判断引用的对象是否等价(值是否相等)。

对任何不是null的对象x调用x.equals(null)结果都为false;但是x如果为null,x.equals(null)在编译时没有错误,运行时报错。

Integer x = 1;
x.equals(null); //结果为false Integer x = null;
x.equals(null); //运行报错

三、hashCode()

hashCode()返回散列值,而equals()是用来判断两个实例是否等价。等价的两个实例散列值一定要相同,但是散列值相同的两个实例不一定等价;

在覆盖equals()方法时应当总是覆盖hashCode()方法,保证等价的两个实例散列值也相等。

四、toString()

默认返回 ToStringExample@xxxxxx 这种形式,其中@后面的数值为散列码的无符号十六进制表示。

五、clone()

浅拷贝:拷贝实例和原始实例的引用类型指向同一个对象(相当于同一个对象);

深拷贝:拷贝实例和原始实例的引用类型指向不同的对象(相当于复制了一个新对象)。

使用clone()方法来拷贝一个对象既复杂又有风险,它会抛出异常,并且还需要类型转换;最好不要使用clone(),可以使用拷贝构造函数或者拷贝工厂来拷贝一个对象(相当于复制了一个新对象)。

public class CloneConstructorExample {

    private int[] arr;

    public CloneConstructorExample(){
arr = new int[10];
for(int i=0;i<arr.length;i++){
arr[i] = i;
}
}
//拷贝构造函数
public CloneConstructorExample(CloneConstructorExample original){
arr = new int[original.arr.length];
for(int i=0;i<original.arr.length;i++){
arr[i] = original.arr[i];
}
}
}

Java基础:(五)Object通用方法的更多相关文章

  1. java基础 3 Object通用方法(1)

    Object通用方法(1) clone: 浅复制    被复制对象的所有变量都含有与原对象相同的值,而所有对其他对象的引用仍然指向原来的对象,换言之,浅复制仅仅复                   ...

  2. Java 基础 - Collection集合通用方法及操作/ArrayList和LinkedList的差别优势 /弃用的Vector

    Collection的笔记: /**存储对象考虑使用: * 1.数组, ①一旦创建,其长度不可变!② 长度难于应对实际情况 * 2.Java集合, ①Collection集合: 1.set: 元素无序 ...

  3. Java基础 之 System.getProperty()方法

    Java基础 之 System.getProperty()方法大全 public static void main(String[] args) { System.out.println(" ...

  4. JAVA基础语法:函数(方法)、类和对象(转载)

    4.JAVA基础语法:函数(方法).类和对象 函数 在java中函数也称为方法,是一段具备某种功能的可重用代码块. 一个函数包括这几部分: 函数头 函数头包括函数访问修饰符,函数返回值类型, 函数名, ...

  5. Java基础:Object类中的equals与hashCode方法

    前言 这个系列的文章主要用来记录我在学习和复习Java基础知识的过程中遇到的一些有趣好玩的知识点,希望大家也喜欢. 一切皆对象   对于软件工程来说面向对象编程有一套完整的解决方案:OOA.OOD.O ...

  6. 【Java基础之Object类(一)】Java中Object类中的所有方法(toString、equals、hashCode、clone、finalize、wait和notify等)详解(转载)

    java中的hashcode.equals和toString方法都是基类Object的方法. 首先说说toString方法,简单的总结了下API说明就是:返回该对象的字符串表示,信息应该是简明但易于读 ...

  7. Java基础五(方法)

    今日内容介绍1.方法基础知识2.方法高级内容3.方法案例 ###01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. ###02方法的定义格 ...

  8. 精简Docker镜像的五种通用方法

    http://dockone.io/article/8163 精简Docker镜像的好处很多,不仅可以节省存储空间和带宽,还能减少安全隐患.优化镜像大小的手段多种多样,因服务所使用的基础开发语言不同而 ...

  9. 面渣逆袭:Java基础五十三问,快来看看有没有你不会的!

    大家好,我是老三, 面渣逆袭 系列继续.这节我们回到梦开始的地方--Java基础,其实过了萌新阶段,面试问基础就问的不多,但是保不齐突然问一下.想一下,总不能张口高并发.闭口分布式,结果什么是面向对象 ...

  10. Java根类Object的方法说明

    Java中的Object类是所有类的父类,它提供了以下11个方法: public final native Class<?> getClass() public native int ha ...

随机推荐

  1. vijos:P1053Easy sssp(spfa判环)

    描述 输入数据给出一个有N(2 <= N <= 1,000)个节点,M(M <= 100,000)条边的带权有向图. 要求你写一个程序, 判断这个有向图中是否存在负权回路. 如果从一 ...

  2. jQuery中attr()与prop()区别介绍

    .attr() : 获取匹配的元素集合中的第一个元素的属性的值 或 设置每一个匹配元素的一个或多个属性. •.attr( attributeName ) •.attr( attributeName ) ...

  3. JDK5特性

    静态导入(了解) JDK 1.5 增加的静态导入语法用于导入类的某个静态属性或方法.使用静态导入可以简化程序对类静态属性和方法的调用. 语法: import static 包名.类名.静态属性|静态方 ...

  4. python 2 与python 3 区别

    print def print(self, *args, sep=' ', end='\n', file=None): # known special case of print "&quo ...

  5. Python服务Debian打包新思路

    此文已由作者张耕源授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Debian 打包一直是比较冷僻的技术,大部分同学都不会接触到它. 但是我们 Debian 服务器上安装的各 ...

  6. Js获取当前的日期和时间以及时间戳转化为时间

    /** *获取当前时间 *format=1精确到天 *format=2精确到分 */ function getCurrentDate(format) { var now = new Date(); v ...

  7. opengl学习资料

    opengl新手指引 https://www.codeproject.com/articles/771225/learning-modern-opengl Learning Modern 3D Gra ...

  8. selenium IDE界面介绍(转)

    1.文件:创建.打开和保存测试案例和测试案例集.编辑:复制.粘贴.删除.撤销和选择测试案例中的所有命令.Options : 用于设置seleniunm IDE. 2.用来填写被测网站的地址. 3.速度 ...

  9. express解决ajax跨域访问session失效问题

    最近在学习express,就用以前做的项目来进行express前后端分离的练手了,在做登陆注册的时候发现跨域的时候,session的值是会失效的,导致session里面的数据获取为undefined, ...

  10. wampserver2.5局域网公网IP访问配置

    wampserver2.5集成环境的安装和使用就不多说了,网上有很多教材.安装好后找到apache的配置文件httpd.conf.默认位置是: swap安装目录\wamp\bin\apache\apa ...