目录
1、简单聊一聊hashCode()方法以及它的作用
hashCode()的作用是用来获取哈希码的,也就是散列码,哈希码是一个int型的整数值,它的作用是用来确定对象在哈希表中索引的位置,在java中每个对象都可使用hashCode()函数。
hashCode()的作用:比如说当你将一个对象存入hashSet中的时候,hashSet首先会计算这个对象的hashCode值来判断该对象存放的位置,同时也会拿已经保存的对象的hashCode值作比较,如果没有相同的则直接存入,如果有相同的,则会调用equals()来比较hasCode值相等的对象是否真的相等,如果相等则不存下,如果不相等则就会散列到其他位置。
2、hashCode()和equals()方法
1、如果两个对象相等则两个对象的hashCode值一定相等
2、如果两个对象的hashCode值相等,则他们不一定相等
3、所以equals()方法被重写过则hashCode()一定会被重写
3、简述下线程的状态
线程的状态大致分为6种:新建、运行、阻塞、等待、等待超时、终止这六种状态;创建线程有三种方法第一种是继承Thread类重写run()方法,第二种是实现Runable()方法,重写run方法,第三种是实现callable()方法,重写run方法。线程创建好后调用start()方法,线程处于可运行状态,当该线程获得cpu的时间片时后线程就可以运行了。当线程调用wait()方法后,该线程就处于等待状态,只有等到其他线程通知唤醒,该线程才能返回到运行状态,而等待超时状态就是在等待的基础上增加了时间限制,如sleep(int time),如果在规定的时间内还没有被唤醒,在该线程会自动进入运行状态,当线程调用同步方法时,如果没有获得同步方法的锁,则该线程就处于阻塞状态,当该线程的run()方法执行完毕,则该线程就会进入终止状态。
4、final的用法
final主要用在3个地方:修饰类,方法和变量
final修饰的类不能被继承,final类中的方法默认都是final方法
final修饰的方法不能被重写
final修饰的变量,当变量类型是基本数据类型时一旦确定了初始值就不能再修改了,当变量的类型是引用数据类型时,对其初始化后便不能再让其指向其他对象。