Java面试题之五
二十一、super()与this()的区别?
(1)用this的情况:
1.在构造方法中,通过this调用另一个构造方法,用法:this(参数列表)。
2.在函数参数或函数的局部变量与成员变量同名,即成员变量被屏蔽的情况下,要访问成员变量需要用“this.成员变量”的方式进行访问。当然不同名也可这样访问,但是不是必须这样。
3.在函数中,需要引用该函数所属类的当前对象时,直接用this。
(2)用super的情况:
1.在子类构造方法中要调用父类的构造方法时,用“super(参数列表)”方法调用。并且这句话只能出现在子类构造方法的第一行。
2.当子类局部变量或成员变量与父类成员变量同名,即父类成员变量被覆盖时,需要用“super.成员变量”方式来访问父类成员变量。当然不同名时,也可这样访问父类成员变量,但没必要。
3.当父类成员方法被子类成员方法覆盖,也就是他们有相同方法定义(方法体可以不同)时,用“super.方法名(参数列表)”方式访问父类方法。
(3)比较:
1.this 代表当前类对象。super代表当前类的父类对象。super()和this()都只能放在构造方法的第一行。
2.可以用this调用一个构造器,但不能用this调用两个。同时,this和super不能同时出现在一个构造方法里,编译也不会通过。
3.this和super都是指的对象,它们都不能在静态环境中使用。包括静态变量,静态方法,静态块。
4.在构造方法中,若第一行没有super(),编译器会自动插入一个,但是,若父类没有无参构造方法,或其已被私有化,那么只能调用父类有参构造方法,否则会报错。
二十二、JAVA的事件委托机制和垃圾回收机制
事件委托机制:一个源产生一个事件并将它送到一个或多个监听器那里。在这种方案中,监听器简单的等待,直到它收到一个事件。一旦事件被接受,监听器将处理这个事件,然后返回。
垃圾回收机制:垃圾回收是将分配给对象但不再使用的内存回收或释放的过程。
如果一个对象没有指向它的引用或者其赋值为null,则此对象适合进行垃圾回收。也就是说垃圾回收,回收的是没有被变量指向的对象。
垃圾回收器是一个单独的低级别的线程。在不可预知的情况下,对内存中已经死亡或者长时间没有使用的对象进行回收。但程序员自己并不能控制垃圾回收。
二十三、在JAVA中,如何跳出当前的多重嵌套循环?
两种方式:break和return。
(1)对于break,有两种方式:
1.在外层循环语句前加一个标号,然后在内层循环体内使用带标号的break语句。个人不推荐使用这种方式。
2.通过内层循环体里的代码去控制外层循环的循环条件。一般定义一个boolean变量去控制。
(2)对于return,比较简单,跳出整个方法,当然也就跳出了多重循环。
二十四、什么是java序列化,如何实现java序列化?
序列化:处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。
序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,是一个标示性接口,用来标注该对象可被序列化,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。
具体示例可参考http://blog.csdn.net/u010142437/article/details/8967349
二十五、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
可以。如果这个类的修饰符是public,其类名与文件名必须相同。也就是说一个".java"源文件中只能有一个类(不是内部类)声明为public。并且其类名与文件名必须相同。
二十六、排序都有哪几种方法?请列举。用JAVA实现一个快速排序?
排序的方法:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、
快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱
排序、基数排序)。
快速排序的伪代码:
从a[ 0 :n- 1 ]中选择一个元素作为m i d d l e,以该元素为支点把余下的元素分割为两段left和r i g h t,使得l e f t中的元素都小于等于支点,而right中的元素都大于等于支点。递归地使用快速排序方法分别对左和右进行排序,结果为l e f t + m i d d l e + r i g h t。
二十七、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
Overload指重载;Override指重写。
重载发生在一个类当中。方法名相同,参数列表不同(参数个数、类型、顺序)。重载是一个类中多态性的表现。重载的方法可以改变返回值类型。因为重载只跟参数列表有关,所以重载的方法返回类型是可以不一样的。
重写发生在父类和子类之间。方法名相同,参数列表相同,返回类型也相同。子类重写了父类的方法,调用时会优先调用子类重写的方法,即父类方法在这个时候被覆盖了,所以称之为重写(覆盖)。重写是父类和子类多态性的一种表现。
另外,重写还需注意:子类重写方法的访问修饰符必须不小于父类中的访问修饰符。子类重写抛出的异常不能比父类多。
二十八、Final类有什么特点?
声明为final的类不可以被继承。当然它的方法也没法被重写。但其属性可以是final也可以不是final的。
二十九、什么是类的反射机制?
通过类(Class对象),可以得出当前类的fields、method、construtor、interface、superClass、modified等,同是可以通过类实例化一个实例、设置属性、唤醒方法。Spring中一切都是返射、struts、hibernate都是通过类的反射进行开发的。
三十、类的反射机制中的包及核心类?
java.lang.Class
java.lang.refrection.Method
java.lang.refrection.Field
java.lang.refrection.Constructor
java.lang.refrection.Modifier
java.lang.refrection.Interface
Java面试题之五的更多相关文章
- java面试题及答案(转载)
JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时 ...
- 115个Java面试题和答案——终极列表(下)
第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,本章主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servle ...
- Java面试题(全)
JAVA部分 什么是反射机制?反射机制应用(Struts中反射机制的应用) 答:运行状态中,对于任意一个类,都可以知道它的所有属性和方法,对于任意一个对象都可以调用它的任意一个方法,这种动态获取信息以 ...
- Java面试题大全(四)
JAVA代码查错 1. abstract class Name { private String name; public abstract boolean isStupidName(String n ...
- 大公司的Java面试题集
找工作要面试,有面试就有对付面试的办法.以下一些题目来自我和我朋友痛苦的面试经历,提这些问题的公司包括IBM, E*Trade, Siebel, Motorola, SUN, 以及其它大小公司. 面试 ...
- 收集了50道基础的java面试题
下面的内容是对网上原有的Java面试题集及答案进行了全面修订之后给出的负责任的题目和答案,原来的题目中有很多重复题目和无价值的题目,还有不少的参考答案也是错误的,修改后的Java面试题集参照了JDK最 ...
- Java学习-031-JSON 之五 -- 特定数据获取(JSONObject满足特定键值)
前面几篇博文分别讲述了 JSON 的 概要知识.简单数据获取.封装cssSelector数据获取方法.JSONObject 是否包含 key_value,请自行阅读相关博文. 在日常的接口测试脚本编写 ...
- Java笔试题解答和部分面试题
面试类 银行类的问题 问题一:在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环? HashMap本身没有什么问题,有没有问题取决于你是如何使用它的.比如,你 ...
- 转:Java面试题集(51-70) http://blog.csdn.net/jackfrued/article/details/17403101
Java面试题集(51-70) Java程序员面试题集(51-70) http://blog.csdn.net/jackfrued/article/details/17403101 摘要:这一部分主要 ...
随机推荐
- W5300E01-ARM 交叉编译器(Cross Compiler)用户手册
W5300E01-ARM是基于W5300的ARM功能测试评估板: 1 简介 当用户的开发环境与目标系统不同时就会用到交叉编译器. 例如,当开发基于ARM的嵌入式系统时,用户就需要在电脑上写出 ...
- 【HDU】4923 Room and Moor(2014多校第六场1003)
Room and Moor Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) ...
- linux svn服务器普通passwd和sasl2配置
朋友昨天问我一个问题,他公司使用的vpn连接的svn,使用svn管理软件进行svn update是可行的,使用命令行svn update出错,svn status可行. 思路1: 刚开始我关注的焦点都 ...
- 搭建本地Ubuntu 镜像服务器
一.需求分析 最近公司软件Team 有个需求是这样的:能不能在局域网搭建一个Ubuntu 镜像服务器, 这样作的好处是可以节省Ubuntu某些常用工具的安装时间. 二.部署过程 2.1 测试环境 目前 ...
- android 的线程模型和AsyncTask
android 的线程模型:当一个 android 的应用运行后,就会有一个 UI 的 main 线程启动 , 这是一个非常重要的线程,它负责把事件分派到相应的控件,其中就包括屏幕绘图 ...
- Twitter 新一代流处理利器——Heron 论文笔记之Heron架构
Twitter 新一代流处理利器--Heron 论文笔记之Heron架构 标签(空格分隔): Streaming-process realtime-process Heron Architecture ...
- 关于c++primer的一个代码错误
近期看c++primer第四版的标准容器vector.讲到对vector容器的插入删除元素会使得end()的迭代器失效的问题,所以不建议程序猿对end()的存储. vector<int> ...
- SqlServer2008 数据库可疑
今天遇到数据库可疑,以前都是直接删了还原,这次没有最新的备份文件,一起看看脚本怎么解决 --最好一句句执行,方便看到错误 USE MASTER GO --开启数据库选项"允许更新" ...
- OC中的一个特性:延展
OC中的一个特性:延展其实说白了,延展就是弥补C语言中的前向申明,我们知道,在C语言中,如果你想调用一个函数的话,那么在此之前必须要声明一个这个函数,就是有前置性.OC中为了弥补C语言中的这个问题,就 ...
- JS精粹(二)
这章主要讲语法,DC使用了表示形式语法的巴克斯范式图,这的确比语言来得准确简洁.我只想表达一个问题:表达式与表达式语句的关系.因为其他问题很明白. 从DC的巴科斯范式图上大致可以认为,表达式是比表达式 ...