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 摘要:这一部分主要 ... 
随机推荐
- Android客户端与服务器交互中的token
			学习Token Token是什么? Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Tok ... 
- android4.0 禁止横竖屏切换使用 android:configChanges="orientation|keyboardHidden"无效
			android4.0 禁止横竖屏切换使用 android:configChanges="orientation|keyboardHidden"无效 在之前的版本中都是在Man ... 
- NSInteger到底是什么数据类型
			看iOS SDK 方法返回的类型都是NSInteger,但是官方给出的示例代码一般for循环的计数器就都是int了. - (NSInteger)tableView:(UITableView *)tab ... 
- poj--1517
			n从0取到9,一个for循环,n++,n=0,n<=9 n=4,求1/4!+1/3!+1/2!+1/1!+1/0! 需要一个for循环,i=n,i>=0,i-- sum+=factoria ... 
- Android Notivation的使用
			官方帮助文档:http://wear.techbrood.com/guide/topics/ui/notifiers/notifications.html 博文推荐:http://blog.csdn. ... 
- SPFA,dijskra,prime,topu四种算法的模板
			////#include<stdio.h> ////#include<string.h> ////#include<queue> ////#include<a ... 
- 使用Vitamio打造自己的Android万能播放器(4)——本地播放(快捷搜索、数据存储)
			前言 关键字:Vitamio.VPlayer.Android播放器.Android影音.Android开源播放器 本章节把Android万能播放器本地播放的主要功能(缓存播放列表和A-Z快速查询功能) ... 
- Java压缩技术的学习
			由于工作的需要,经常要手动去打上线安装包,为了方便,自己写程序去帮助打包.使用过Unix或者Linux的人都基本上都用过tar打包以及gzip压缩,但在Windows下使用得最多的压缩还是RAR和Zi ... 
- oracle 命令创建用户 、授权、数据库导入、导出
			最近在使用oracle,经常要导入导出数据,命令很简单,却经常忘记,所以记下来.. drop user yfplss cascade;--登录system用户删除已存在的用户名,该用户下的所有东西都被 ... 
- ServiceStack 入门(一)
			本文主要介绍ServiceStack的安装,与第一个项目的创建. 详细了解ServiceStack,可参考官方网站: https://servicestack.net/ , Github上Servic ... 
