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 摘要:这一部分主要 ...
随机推荐
- EventBus源码解析
用例 本文主要按照如下例子展开: //1. 新建bus对象,默认仅能在主线程上对消息进行调度 Bus bus = new Bus(); // maybe singleton //2. 新建类A(sub ...
- WebMatrix安装和使用
官网:http://www.microsoft.com/web/webmatrix/ 一直觉得dreamweaver已经过时了,很多新的库都不支持.而且,启动慢,占用内存多,是时候换一个ide了. h ...
- mysql 插入前 锁表问题
$dbh = DBI->connect("dbi:mysql:database=$db_name;host=$ip;port=3306",$user,$passwd,{ Ra ...
- CentOS安装与配置LNMP
本文PDF文档下载:http://www.coderblog.cn/doc/Install_and_config_LNMP_under_CentOS.pdf 本文EPUB文档下载:http://www ...
- 【Leetcode】Same Tree
给定两棵二叉树,判断是否相等(即树的结构以及各结点中的值都一样) Given two binary trees, write a function to check if they are equal ...
- SQL中去除某字段中的某个字符语法
update S_ENTERPRISE set DAY_PROCESS=replace(DAY_PROCESS,'吨','') where DAY_PROCESS like '%吨%'
- Struts 2.x 与Spring4.x整合出现:No mapping found for dependency [type=java.lang.String, name='actionPackages...
Struts2.16与Spring4.x整合出错: Caused by: java.lang.RuntimeException: com.opensymphony.xwork2.inject.Depe ...
- zendStudio常用快捷键整理
在来一发zendstudio的常用快捷键整理,今天心情不错哈哈 Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ct ...
- “error LNK1169: 找到一个或多个多重定义的符号”的解决方法(转载)
解决方案: “error LNK1169: 找到一个或多个多重定义的符号”的解决方法(转载) 遇到的问题: 在.h头文件中采用namespace 命名空间报错 test.h namespace LMR ...
- gcc -lpthread 干什么用
#include <stdio.h> #include <pthread.h> void *ThreadFunc(void *pArg) //参数的值为123 { int i ...