Java面试题16 牛客 以下java程序代码,执行后的结果是()

1

2

3

4

5

6

7

8

9

10

public class Test {

    public static void main(String[] args) {   

        Object o = new Object() {  

             public boolean equals(Object obj) {  

                 return true

         }

     };   

     System.out.println(o.equals("Fred"));

     }

}

A:Fred
B:true
C:编译错误
D:运行时抛出异常

懵逼树上懵逼过,懵逼树下你和我

看到这种题,立马有种控制不住自己的手,打开了桌面上的任意一款工具

在idea和eclipse中,选到了idea

小手一抖,代码带走,一跑运行,答案为B

一看解析,哦,原来是这个样子,重写了object的方法

1.clone方法

保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。

主要是JAVA里除了8种基本类型传参数是值传递,其他的类对象传参数都是引用传递,我们有时候不希望在方法里讲参数改变,这是就需要在类中复写clone方法。

2.getClass方法

final方法,获得运行时类型。

3.toString方法

该方法用得比较多,一般子类都有覆盖。

4.finalize方法

该方法用于释放资源。因为无法确定该方法什么时候被调用,很少使用。

5.equals方法

该方法是非常重要的一个方法。一般equals和==是不一样的,但是在Object中两者是一样的。子类一般都要重写这个方法。

6.hashCode方法

该方法用于哈希查找,可以减少在查找中使用equals的次数,重写了equals方法一般都要重写hashCode方法。这个方法在一些具有哈希功能的Collection中用到。

一般必须满足obj1.equals(obj2)==true。可以推出obj1.hash- Code()==obj2.hashCode(),但是hashCode相等不一定就满足equals。不过为了提高效率,应该尽量使上面两个条件接近等价。

如果不重写hashcode(),在HashSet中添加两个equals的对象,会将两个对象都加入进去。

7.wait方法

wait方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait()方法一直等待,直到获得锁或者被中断。wait(long timeout)设定一个超时间隔,如果在规定时间内没有获得锁就返回。

调用该方法后当前线程进入睡眠状态,直到以下事件发生。

(1)其他线程调用了该对象的notify方法。

(2)其他线程调用了该对象的notifyAll方法。

(3)其他线程调用了interrupt中断该线程。

(4)时间间隔到了。

此时该线程就可以被调度了,如果是被中断的话就抛出一个InterruptedException异常。

8.notify方法

该方法唤醒在该对象上等待的某个线程。

9.notifyAll方法

该方法唤醒在该对象上等待的所有线程。

二、finalize()的作用

Java允许在类中定义一个名为finalize()的方法。它的工作原理是:一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法。并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。

关于垃圾回收,有三点需要记住:

1、对象可能不被垃圾回收。只要程序没有濒临存储空间用完的那一刻,对象占用的空间就总也得不到释放。

2、垃圾回收并不等于“析构”。

3、垃圾回收只与内存有关。使用垃圾回收的唯一原因是为了回收程序不再使用的内存。
finalize()的用途:

无论对象是如何创建的,垃圾回收器都会负责释放对象占据的所有内存。这就将对finalize()的需求限制到一种特殊情况,即通过某种创建对象方式以外的方式为对象分配了存储空间。不过这种情况一般发生在使用“本地方法”的情况下,本地方法是一种在Java中调用非Java代码的方式。

为什么不能显示直接调用finalize方法?
  如前文所述,finalize方法在垃圾回收时一定会被执行,而如果在此之前显示执行的话,也就是说finalize会被执行两次以上,而在第一次资源已经被释放,那么在第二次释放资源时系统一定会报错,因此一般finalize方法的访问权限和父类保持一致,为protected。
答案为B

我是歌谣,有什么不合理之处欢迎指出。喜欢敲代码,么事刷刷题。

阅读目录(置顶)(长期更新计算机领域知识)

阅读目录(置顶)(长期更新计算机领域知识)

阅读目录(置顶)(长期科技领域知识)

歌谣带你看java面试题

Java面试题16 牛客 以下java程序代码,执行后的结果是()相关推荐

  1. Java面试题18 牛客 假定Base b = new Derived();

    Java面试题18 牛客 假定Base b = new Derived(); 调用执行b.methodOne()后,输出结果是什么? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  2. java面试题29 牛客 以下关于集合类ArrayList、LinkedList、HashMap描述

    java面试题29 牛客 以下关于集合类ArrayList.LinkedList.HashMap描述错误的是() A HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或 ...

  3. java面试题28 牛客 下面有关java classloader说法错误的是?

    java面试题28 牛客 下面有关java classloader说法错误的是? A Java默认提供的三个ClassLoader是BootStrap ClassLoader,Extension Cl ...

  4. java面试题23 牛客ArrayLists和LinkedList的区别,下述说法正确的有?

    java面试题23 牛客ArrayLists和LinkedList的区别,下述说法正确的有? A ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构. B 对于随 ...

  5. Java面试题 22 牛客 Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持

    Java面试题 22 牛客 Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持,下面关于Java反射的描述,哪些是错误的:(          ) A Java反射主要涉及的类如C ...

  6. Java面试题17 牛客 下面哪个选项正确创建socket连接?

    Java面试题17 牛客 下面哪个选项正确创建socket连接? Socket s = new Socket(8080); Socket s = new Socket("192.168.1. ...

  7. Java面试题15牛客 以下关于Integer与int的区别错误的是

    Java面试题15牛客 以下关于Integer与int的区别错误的是 A int是java提供的8种原始数据类型之一 B Integer是java为int提供的封装类 C int的默认值为0 D In ...

  8. Java面试题19 牛客下面有关java的引用类型,说法正确的有?

    Java面试题19下面有关java的引用类型,说法正确的有? A:对于一个对象来说,只要有强引用的存在,它就会一直存在于内存中 B:如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可 ...

  9. java面试题11 牛客:如下语句通过算术运算和逻辑运算之后i和 j的结果是

    如下语句通过算术运算和逻辑运算之后i和 j的结果是( ) 1 2 3 4 5 6 int i=0; int j=0; if((++i>0)||(++j>0)) { //打印出i和j的值. ...

最新文章

  1. 2016 实习招聘面试经历 - 2
  2. python3 RSA加解密
  3. 一款功能强大的IP查询工具
  4. go语言编程小游戏--贪吃蛇
  5. 计算机课讲什么学生爱学,学生党“最喜欢”的4门课程,尤其是最后1门,学渣:我们的最爱...
  6. 浅谈前端路由原理hash和history
  7. JfreeChart学习总结
  8. python中while与else的联姻
  9. Windows XP客户端加域操作手册下
  10. 数据库级别的MD5加密(建议收藏)
  11. 北京思科CCIE认证靠谱的机构 网络工程师 -ie-lab网络实验室
  12. 全志F1C200S F1C100S 介绍
  13. 微信小程序后台服务器怎么配置,如何在微信小程序后台设置服务类目
  14. git使用命令行首次提交代码
  15. 水溶性量子点CdSe/ZnS
  16. 智慧农业共享农场菜园,葡萄树认养小程序APP源码开发如何推广运营
  17. yaml文件 *.yml 写法简介
  18. JavaWeb企业实战项目(一):环境搭建-用户注册-邮件发送
  19. 加载天地图服务出现空吧图片类似404图片加载失败的效果
  20. 详解最热门搜索引擎——ES

热门文章

  1. Spring MVC遭遇checkbox的问题解决方式
  2. (转)二分图最大匹配的König定理及其证明
  3. python多人聊天室_Python基于Socket实现简易多人聊天室
  4. ecs服务器数据迁移_如何非常方便地从Windows文件服务器把数据完整地迁移到ONTAP Select...
  5. java同名函数_浅谈Java 继承接口同名函数问题
  6. 在51单片机上使用递归的注意事项
  7. 小程序、vue 新闻上下轮播
  8. SpringBoot(六):SpringBoot整合Redis
  9. [VC6] RadioBox使用入门
  10. Taro+react开发(47)taro中消息机制