站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题Java面试题

Java面试题

摘要: Java面试题


1,Java.lang.Object类有哪些方法,什么时候需要重写这些方法?
2,hascode()方法有什么作用?
3,接口和抽象类的区别?



这是哪家的面试题啊??

没什么创意


Java.lang.Object有tostring() , equals 等


1、有toString()、equal()等等。
2、不知道。
3、抽象类可以只实现部分方法,接口则必须实现其全部方法;抽象类的方法可以有抽象方法,也可以有普通方法,接口里的方法必须是抽象方法;抽象类的方法的访问权限可以多种,接口的方法的访问权限只能是public;抽象类的子类只能继承一个抽象类,而实现接口的类可以同时实现多个接口,等等。我只知道这些了。


看看jdk文档嘛!


刚学完corejava的基础部分,正好趁热解答你的问题:

类中常需要重载的方法有:toString(), equals(), hashCode(), clone(), compareTo()

其中后两个需要implements接口,中间3个是Object中的方法,不过clone是protected,需要使用时改写成public。

toString()应该每个类都有,即便不准备输出什么内容,也应该写上类的结构信息,便于其他程序员对你的类做log

equals()和hashCode()是一套的,一改则都改,且要对应。比如你以类中“年龄,工资”作为比较对象,那么的你的hashCode算法也必须和这2个量相关,通常的算法就是将不同的质数与字段做乘积和,例如:return 11*age+13*lohn; 如果不重写,使用Object默认的话,那么equals和hashCode都是以内存地址做依据的。

clone()主要用于拷贝自身,通常不用写代码,直接改写成public和函数返回类型,然后调用super.clone(xx)就可以了,如果类中包含其他对象,需要深度拷贝,那么要自己写代码,将这些对象手动拷贝过去,比如:
MyClass result = super.clone();
result.Date = this.Date.clone();
return result;

compareTo()用于比较,根据你的算法,依据不同字段,比较类对象的大小,返回1, 0, -1。很多函数会自动调用它,比如Arrays.sort();

接口和抽象类的区别,我觉得主要是两点,一个是抽象类里还可以有非抽象的方法,虽然抽象类仍无法实例化,但是其子类可以,也就是说这些非抽象函数仍可以被多态调用,这也是抽象类为什么没有完全被接口取代的原因。接口就是相反了,不过接口也有一个优势是抽象类无法比拟,就是类可以继承多个接口,而抽象类和普通类一样,只能继承一个,所以接口可以解决多重继承问题。


学习,不过没看懂。唉。。



hashCode();
每一个对象有一个唯一hashcode;是唯一的,一般情况下是和equals();情况类似的,


每一个对象有唯一的HashCode? 这个是哪里看来的啊?



HashCode()就是为了不唯一才做的方法,不是唯一的
其实散列值原先就是为了检索用的一个值


up


hascode() 方法主要用于在hashset或者hashmap等以hash方式检索对象的集合里。每个对象有唯一的hashcode这种说法是不准确的,不过应该尽量避免大量重复的hashcode,这样可以提高检索的效率(hashcode冲突的解决办法有很多,学过数据结构的都该知道)


1.toString(), equals(), hashCode等.
2.hascode()方法主要用于在hashset或者hashmap等以hash方式检索对象的集合里.
3.一个是抽象类里可以有非抽象的方法,虽然抽象类无法实例化,但是他的子类可以,也就是说这些非抽象函数可以被多态调用.
类可以继承多个接口,而抽象类和普通类一样,只能继承一个.



看看jdk阿,
很有帮助地饿


↑返回目录
前一篇: 问y 关于java import的问题(在线等)
后一篇: 一个长久困扰我(菜鸟)的问题,