java 小结3 hashcode和equals I/o问题

我需要把星期天看的一些东西记录下来,要不然会忘记。

hashCode、equals:

1)每个java对象都有hashCode和equals方法。

java的终极类是object类,那么object类是如何来标注自己呢,就是object这个类是如何来区分对方。就是使用它们的hashcode和equals来推断。

(hashcode是通过hash算法实现的)

2)JVM每new一个object,都会讲Object丢到一个Hash(哈希表)里去,这样下次比较或者获取这个对象的时候就可以根据对象的hashcode去这个表来取,可以提高效率。

我们必须知道java是有内存限制的,所以理论上是不可以无限次new的。

先比较hashcode,如果这个链表上还有其他数据就用equals。

我们可能会问,那直接使用equals不就得,当然,这是可以的。但是我们要看到hashcode的效率问题,hashcode主要的用途就是减少每次调用equals。

3)关于重写Hashcode和equals的问题:

一般情况下,我们是不需要重写这两个函数的。想Integer Double这类的对象,java已经为我们重写了这两个函数,这也是为什么只要两个字符串内容一样他们的equals就是一样的,按道理不应该,因为equals比较的是对象的引用。

需要重写的情况:就是当我们使用map里面的hashmap这类东西的时候,如果我们用自定义类作为键值就必须重写,否则会找不到类。因为类是继承object的,会使用object的hashcode

所以两个值一样的数据,在这里面就会变成两个数。

就是使用自定义的key,才需要重写。

I/O:

File类:可以是文件,也可以是文件目录。通过File类我们可以获取文件的一定属性。

流:这个反正就是一系列数据,我也说不清。

java的输入输出:(1)字符输出、输入流(Writer、Reader)(2)字节输出、输入流。 (InputStream、OutPutStream)

(好像还有stdIO)

区别

(1)读写单位不同

字节流以字节(8bit)为单位,字符流以字符为单位,每次读取的字节就要看采用的字符映射了。

(2)处理对象不同

字节流可以处理所有类型对象(图片,视频,文本。。。)

字符流只能是字符类型

注意:字节流是无法直接转换为字符输出的,因为读取的单位不同,可以将数组字节转换为string了在输出。。

java 小结3 hashcode和equals I/o问题,布布扣,bubuko.com

时间: 2024-12-17 06:08:51

java 小结3 hashcode和equals I/o问题的相关文章

Java基础:hashCode与equals个人学习记录

摘要: 本文主要记录本人对hashCode和对equals两个知识点的学习过程. 从学生时期初学java,就知道hashCode和equals这两个方法,工作中equals方法使用也是特别频繁,要说equals方法,那么必须少不了hashCode这个方法.下面就整理一下本人目前对这俩方法的理解,文中如有错误,请指正,多谢. hash code(散列码,也可以叫哈希码值)是对象产生的一个整型值.其生成没有规律的.二者散列码可以获取对象中的信息,转成那个对象的"相对唯一"的整型值.所有对象

理解Java中的hashCode和equals 方法

在Java里面所有的类都直接或者间接的继承了java.lang.Object类,Object类里面提供了11个方法,如下: Java代码   ```` 1,clone() 2,equals(Object obj) 3,finalize() 4,getClass() 5,hashCode() 6,notify() 7,notifyAll() 8,toString() 9,wait() 10,wait(long timeout) 11,wait(long timeout, int nanos) ``

Java 中 hashCode 和 equals 方法 小结

转载:http://www.oschina.net/question/82993_75533 hashCode()和equals()定义在Object类中,这个类是所有java类的基类,所以所有的java类都继承这两个方法. hashcode主要是set集合使用,是用于判断对象是否”可能“相等的快捷办法,以解决大集合的问题.举例来说,如果一个一万个元素的集合加入一个元素,如果是一个新元素,那么必须要equal一万次才能加入.所以采用hashcode,hashcode的思路是如果equal,则ha

Java hashCode() 和 equals()的若干问题

原文:http://www.cnblogs.com/skywang12345/p/3324958.html 本章的内容主要解决下面几个问题: 1 equals() 的作用是什么? 2 equals() 与 == 的区别是什么? 3 hashCode() 的作用是什么? 4 hashCode() 和 equals() 之间有什么联系? 第1部分 equals() 的作用 equals() 的作用是 用来判断两个对象是否相等. equals() 定义在JDK的Object.java中.通过判断两个对

Java 中正确使用 hashCode 和 equals 方法

在这篇文章中,我将告诉大家我对hashCode和equals方法的理解.我将讨论他们的默认实现,以及如何正确的重写他们.我也将使用Apache Commons提供的工具包做一个实现. 目录: hashCode()和equals()的用法 重写默认实现 使用Apache Commons Lang包重写hashCode()和equals() 需要注意记住的事情 当使用ORM的时候特别要注意的 hashCode()和equals()定义在Object类中,这个类是所有java类的基类,所以所有的jav

Java中hashcode,equals和==

hashcode方法返回该对象的哈希码值. hashCode()方法可以用来来提高Map里面的搜索效率的,Map会根据不同的hashCode()来放在不同的位置,Map在搜索一个对象的时候先通过hashCode()找到相应的位置,然后再根据equals()方法判断这个位置上的对象与当前要插入的对象是不是同一个.若两个对象equals相等,但不在一个区间,根本没有机会进行比较,会被认为是不同的对象. 所以,Java对于eqauls方法和hashCode方法是这样规定的: 1.如果两个对象相同,那么

java中hashcode()和equals()的详解

今天下午研究了半天hashcode()和equals()方法,终于有了一点点的明白,写下来与大家分享(zhaoxudong 2008.10.23晚21.36). 1. 首先equals()和hashcode()这两个方法都是从object类中继承过来的. equals()方法在object类中定义如下: public boolean equals(Object obj) { return (this == obj); } 很明显是对两个对象的地址值进行的比较(即比较引用是否相同).但是我们必需清

java 中hashcode和equals 总结

一.概述            在Java中hashCode的实现总是伴随着equals,他们是紧密配合的,你要是自己设计了其中一个,就要设计另外一个.当然在多数情况下,这两个方法是不用我们考虑的,直接使用默认方法就可以帮助我们解决很多问题.但是在有些情况,我们必须要自己动手来实现它,才能确保程序更好的运作. 1.1 规则 粗略总结一下在JavaDoc中所规定hashcode方法的合约:      Objects that are equal must have the same hash co

[JAVA 基础] hashcode() & equals()

平时使用map时都是用JAVA原生的类型,所以很少关注到hashcode()和equals()的方法的内部实现.近期实现一个小工具,涉及到自己写的类的查找比对,又再次重温了相关的知识. 上简单示例代码,比对自己覆写和不覆写的差异 不覆写hashcode()和equals(): 1 import java.util.HashMap; 2 import java.util.Map; 3 4 public class HashCode_Equals { 5 6 public int a; 7 publ