Java面试题16 牛客 以下java程序代码,执行后的结果是()
Java面试题16 牛客 以下java程序代码,执行后的结果是()
1 2 3 4 5 6 7 8 9 10 |
|
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程序代码,执行后的结果是()相关推荐
- 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 ...
- java面试题29 牛客 以下关于集合类ArrayList、LinkedList、HashMap描述
java面试题29 牛客 以下关于集合类ArrayList.LinkedList.HashMap描述错误的是() A HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或 ...
- java面试题28 牛客 下面有关java classloader说法错误的是?
java面试题28 牛客 下面有关java classloader说法错误的是? A Java默认提供的三个ClassLoader是BootStrap ClassLoader,Extension Cl ...
- java面试题23 牛客ArrayLists和LinkedList的区别,下述说法正确的有?
java面试题23 牛客ArrayLists和LinkedList的区别,下述说法正确的有? A ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构. B 对于随 ...
- Java面试题 22 牛客 Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持
Java面试题 22 牛客 Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持,下面关于Java反射的描述,哪些是错误的:( ) A Java反射主要涉及的类如C ...
- Java面试题17 牛客 下面哪个选项正确创建socket连接?
Java面试题17 牛客 下面哪个选项正确创建socket连接? Socket s = new Socket(8080); Socket s = new Socket("192.168.1. ...
- Java面试题15牛客 以下关于Integer与int的区别错误的是
Java面试题15牛客 以下关于Integer与int的区别错误的是 A int是java提供的8种原始数据类型之一 B Integer是java为int提供的封装类 C int的默认值为0 D In ...
- Java面试题19 牛客下面有关java的引用类型,说法正确的有?
Java面试题19下面有关java的引用类型,说法正确的有? A:对于一个对象来说,只要有强引用的存在,它就会一直存在于内存中 B:如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可 ...
- 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的值. ...
最新文章
- 2016 实习招聘面试经历 - 2
- python3 RSA加解密
- 一款功能强大的IP查询工具
- go语言编程小游戏--贪吃蛇
- 计算机课讲什么学生爱学,学生党“最喜欢”的4门课程,尤其是最后1门,学渣:我们的最爱...
- 浅谈前端路由原理hash和history
- JfreeChart学习总结
- python中while与else的联姻
- Windows XP客户端加域操作手册下
- 数据库级别的MD5加密(建议收藏)
- 北京思科CCIE认证靠谱的机构 网络工程师 -ie-lab网络实验室
- 全志F1C200S F1C100S 介绍
- 微信小程序后台服务器怎么配置,如何在微信小程序后台设置服务类目
- git使用命令行首次提交代码
- 水溶性量子点CdSe/ZnS
- 智慧农业共享农场菜园,葡萄树认养小程序APP源码开发如何推广运营
- yaml文件 *.yml 写法简介
- JavaWeb企业实战项目(一):环境搭建-用户注册-邮件发送
- 加载天地图服务出现空吧图片类似404图片加载失败的效果
- 详解最热门搜索引擎——ES
热门文章
- Spring MVC遭遇checkbox的问题解决方式
- (转)二分图最大匹配的König定理及其证明
- python多人聊天室_Python基于Socket实现简易多人聊天室
- ecs服务器数据迁移_如何非常方便地从Windows文件服务器把数据完整地迁移到ONTAP Select...
- java同名函数_浅谈Java 继承接口同名函数问题
- 在51单片机上使用递归的注意事项
- 小程序、vue 新闻上下轮播
- SpringBoot(六):SpringBoot整合Redis
- [VC6] RadioBox使用入门
- Taro+react开发(47)taro中消息机制