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 摘要:这一部分主要 ...
随机推荐
- WebResource.axd文件的配置和使用
很多ASP.NET server控件都需要另外的外部资源来实现某些功能,WebResource.axd就是将一些js,jpg,bmp等封装或叫植入到类库里面. 使用WebResource.axd需要注 ...
- java 多线程使用方法及Socket的使用
public class newThread implements Runnable{ public void run(){ dosome(); } public void dosome(){ Sys ...
- Linux oracle 11g r2 安装前检查及安装
Linux环境配置 [c-sharp] view plaincopy OS:Fedora 15 DB:Oracle 11gR2 将Oracle安装到home/oracle_11目录 配置过程:本文来自 ...
- SDUT OJ 2783 小P寻宝记
#include<iostream> #include<memory.h> #define N 10020 using namespace std; int dp[N],pi[ ...
- myeclipse序列号
Subscriber:huazai Subscription Code:uLR8ZC-855550-61565856301609203 Subscriber:feifei ...
- svn服务器配置小记
在这里/opt/svndata/repos1创建svn版本库svnadmin create /opt/svndata/repos1 创建成功后会在/opt/svndata/repos1目录下生成con ...
- java中JSON串转换并获取数据
String strAllImp= " [{"id":2,"name":"还不错","count":3}]&q ...
- Unhandled Exxception “Unhandled exception type IOException”?
Unhandled Exxception “Unhandled exception type IOException”? 在Android studio中,自动遇见这个异常报错,如果eclipse会 ...
- High Context とLow Context文化
社会の様々な文化を分類するのに.Low context culture, High context cultureという分け方がある.ビジネススクールのグローバル・マーケティングの授業などでよく取り上 ...
- Android学习笔记27:网格视图GridView的使用
网格视图GridView的排列方式与矩阵类似,当屏幕上有很多元素(文字.图片或其他元素)需要按矩阵格式进行显示时,就可以使用GridView控件来实现. 本文将以一个具体的实例来说明如何使用GridV ...